blob: 79195c97484910593f5322e304e4d437573a94ea [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',
Zbigniew Jędrzejewski-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
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 Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
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
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
32
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020033want_ossfuzz = get_option('oss-fuzz')
34want_libfuzzer = get_option('llvm-fuzz')
35if want_ossfuzz and want_libfuzzer
36 error('only one of oss-fuzz and llvm-fuzz can be specified')
37endif
38fuzzer_build = want_ossfuzz or want_libfuzzer
39
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040040#####################################################################
41
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040042# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050043git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040044if git_hook.returncode() == 0
45 message(git_hook.stdout().strip())
46endif
47
48#####################################################################
49
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010050if get_option('split-usr') == 'auto'
51 split_usr = run_command('test', '-L', '/bin').returncode() != 0
52else
53 split_usr = get_option('split-usr') == 'true'
54endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010055conf.set10('HAVE_SPLIT_USR', split_usr,
56 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010058if get_option('split-bin') == 'auto'
59 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
60else
61 split_bin = get_option('split-bin') == 'true'
62endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010063conf.set10('HAVE_SPLIT_BIN', split_bin,
64 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010067# Unusual rootprefixdir values are used by some distros
68# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010069rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010070if rootprefixdir == ''
71 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010072endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010073rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75sysvinit_path = get_option('sysvinit-path')
76sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090077conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020078 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040079
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020080conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
81conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010082conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020083
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010084# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085# encountered, so this should canonicalize various paths when they are
86# absolute or relative.
87prefixdir = get_option('prefix')
88if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91bindir = join_paths(prefixdir, get_option('bindir'))
92libdir = join_paths(prefixdir, get_option('libdir'))
93sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
94includedir = join_paths(prefixdir, get_option('includedir'))
95datadir = join_paths(prefixdir, get_option('datadir'))
96localstatedir = join_paths('/', get_option('localstatedir'))
97
98rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010099rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
101
102rootlibdir = get_option('rootlibdir')
103if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400104 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105endif
106
107# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200108pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
109pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400110polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
111polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
112polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
113varlogdir = join_paths(localstatedir, 'log')
114xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900115rpmmacrosdir = get_option('rpmmacrosdir')
116if rpmmacrosdir != 'no'
117 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
118endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200119modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400120
121# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400122pkgdatadir = join_paths(datadir, 'systemd')
123environmentdir = join_paths(prefixdir, 'lib/environment.d')
124pkgsysconfdir = join_paths(sysconfdir, 'systemd')
125userunitdir = join_paths(prefixdir, 'lib/systemd/user')
126userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
127tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
128sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
129sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
130binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
131modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
132networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
133pkgincludedir = join_paths(includedir, 'systemd')
134systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
135usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
136systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
137userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
138systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
139systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
140systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
141systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
142udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400143udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
144udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
145catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
146kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
147factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400148bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
149testsdir = join_paths(prefixdir, 'lib/systemd/tests')
150systemdstatedir = join_paths(localstatedir, 'lib/systemd')
151catalogstatedir = join_paths(systemdstatedir, 'catalog')
152randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200153profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154
tblume75aaade2018-02-01 22:46:15 +0100155docdir = get_option('docdir')
156if docdir == ''
157 docdir = join_paths(datadir, 'doc/systemd')
158endif
159
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160dbuspolicydir = get_option('dbuspolicydir')
161if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165dbussessionservicedir = get_option('dbussessionservicedir')
166if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170dbussystemservicedir = get_option('dbussystemservicedir')
171if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175pamlibdir = get_option('pamlibdir')
176if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400177 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178endif
179
180pamconfdir = get_option('pamconfdir')
181if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400182 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183endif
184
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100185memory_accounting_default = get_option('memory-accounting-default')
186
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400187conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
190conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
191conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400192conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
193conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100194
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100195conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100196
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
199conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
201conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
202conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
203conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100204conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100205conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400206conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
207conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
208conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
209conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
210conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100211conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400212conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
214conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400215conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
216conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
217conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
218conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
219conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
220conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
222conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700223conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700224conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400226conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('LIBDIR', libdir)
228conf.set_quoted('ROOTLIBDIR', rootlibdir)
229conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
230conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
232conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200233conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400234conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
235conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
236conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
237conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200238conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100239conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100242substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100243substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('exec_prefix', prefixdir)
245substs.set('libdir', libdir)
246substs.set('rootlibdir', rootlibdir)
247substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100248substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400249substs.set('bindir', bindir)
250substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('rootlibexecdir', rootlibexecdir)
252substs.set('systemunitdir', systemunitdir)
253substs.set('userunitdir', userunitdir)
254substs.set('systempresetdir', systempresetdir)
255substs.set('userpresetdir', userpresetdir)
256substs.set('udevhwdbdir', udevhwdbdir)
257substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400258substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200259substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('catalogdir', catalogdir)
261substs.set('tmpfilesdir', tmpfilesdir)
262substs.set('sysusersdir', sysusersdir)
263substs.set('sysctldir', sysctldir)
264substs.set('binfmtdir', binfmtdir)
265substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200266substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400267substs.set('systemgeneratordir', systemgeneratordir)
268substs.set('usergeneratordir', usergeneratordir)
269substs.set('systemenvgeneratordir', systemenvgeneratordir)
270substs.set('userenvgeneratordir', userenvgeneratordir)
271substs.set('systemshutdowndir', systemshutdowndir)
272substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400273substs.set('VARLOGDIR', varlogdir)
274substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400275substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
276substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400277substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
278substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
279substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
280substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100281substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200282substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400283
284#####################################################################
285
286cc = meson.get_compiler('c')
287pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400288check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100289meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400290
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200291want_tests = get_option('tests')
292slow_tests = want_tests != 'false' and get_option('slow-tests')
293install_tests = get_option('install-tests')
294
James Hilliard46e63a22018-12-27 09:16:20 +0800295if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200296 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200297 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200298else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200299 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400300endif
301
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500302if want_libfuzzer
303 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200304elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500305 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
306endif
307
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900308possible_cc_flags = [
309 '-Wextra',
310 '-Werror=undef',
311 '-Wlogical-op',
312 '-Wmissing-include-dirs',
313 '-Wold-style-definition',
314 '-Wpointer-arith',
315 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900316 '-Wfloat-equal',
317 '-Wsuggest-attribute=noreturn',
318 '-Werror=missing-prototypes',
319 '-Werror=implicit-function-declaration',
320 '-Werror=missing-declarations',
321 '-Werror=return-type',
322 '-Werror=incompatible-pointer-types',
323 '-Werror=format=2',
324 '-Wstrict-prototypes',
325 '-Wredundant-decls',
326 '-Wmissing-noreturn',
327 '-Wimplicit-fallthrough=5',
328 '-Wshadow',
329 '-Wendif-labels',
330 '-Wstrict-aliasing=2',
331 '-Wwrite-strings',
332 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200333 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200334 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900335 '-Wdate-time',
336 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700337
338 # negative arguments are correctly detected starting with meson 0.46.
339 '-Wno-unused-parameter',
340 '-Wno-missing-field-initializers',
341 '-Wno-unused-result',
342 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100343 '-Wno-error=#warnings', # clang
344 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700345
346 # work-around for gcc 7.1 turning this on on its own.
347 '-Wno-error=nonnull',
348
349 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
350 # optimizations enabled, producing essentially false positives.
351 '-Wno-maybe-uninitialized',
352
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900353 '-ffast-math',
354 '-fno-common',
355 '-fdiagnostics-show-option',
356 '-fno-strict-aliasing',
357 '-fvisibility=hidden',
358 '-fstack-protector',
359 '-fstack-protector-strong',
360 '--param=ssp-buffer-size=4',
361]
362
363# --as-needed and --no-undefined are provided by meson by default,
364# run mesonconf to see what is enabled
365possible_link_flags = [
366 '-Wl,-z,relro',
367 '-Wl,-z,now',
368]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400369
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370if cc.get_id() == 'clang'
371 possible_cc_flags += [
372 '-Wno-typedef-redefinition',
373 '-Wno-gnu-variable-sized-type-not-at-end',
374 ]
375endif
376
377if get_option('buildtype') != 'debug'
378 possible_cc_flags += [
379 '-ffunction-sections',
380 '-fdata-sections',
381 ]
382
383 possible_link_flags += '-Wl,--gc-sections'
384endif
385
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100386if get_option('b_ndebug') == 'true'
387 # With asserts disabled with get a bunch of warnings about variables which
388 # are used only in the asserts. This is not useful at all, so let's just silence
389 # those warnings.
390 possible_cc_flags += [
391 '-Wno-unused-variable',
392 '-Wno-unused-but-set-variable',
393 ]
394endif
395
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900396add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900397add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900398
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800399if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400 #include <time.h>
401 #include <inttypes.h>
402 typedef uint64_t usec_t;
403 usec_t now(clockid_t clock);
404 int main(void) {
405 struct timespec now;
406 return 0;
407 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100408''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400409 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410endif
411
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200412cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400413
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414#####################################################################
415# compilation result tests
416
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400417conf.set('_GNU_SOURCE', true)
418conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419
420conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
421conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
422conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
423conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
424conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
425conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
426conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
427
428decl_headers = '''
429#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100430#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400431'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432
433foreach decl : ['char16_t',
434 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100435 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437
438 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200439 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
440
441 if decl == 'struct statx'
442 if have
443 want_linux_stat_h = false
444 else
445 have = cc.sizeof(decl,
446 prefix : decl_headers + '#include <linux/stat.h>',
447 args : '-D_GNU_SOURCE') > 0
448 want_linux_stat_h = have
449 endif
450 endif
451
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200452 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453endforeach
454
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200455conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700456
Yu Watanabe9714c022018-12-02 16:27:02 +0100457foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900458 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
459 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
460 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
461 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
462 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100463 ['FRA_TUN_ID', 'linux/fib_rules.h'],
464 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100465 ['FRA_PAD', 'linux/fib_rules.h'],
466 ['FRA_L3MDEV', 'linux/fib_rules.h'],
467 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
468 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
469 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
470 ['FOU_CMD_GET', 'linux/fou.h'],
471 ['IFA_FLAGS', 'linux/if_addr.h'],
472 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
473 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
474 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
475 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
476 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
477 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
478 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
479 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
480 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
481 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
482 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
483 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
484 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
485 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
486 ['IFLA_PAD', 'linux/if_link.h'],
487 ['IFLA_XDP', 'linux/if_link.h'],
488 ['IFLA_EVENT', 'linux/if_link.h'],
489 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
490 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
491 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
492 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100493 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100494 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
495 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
496 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
497 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
498 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
499 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
500 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
501 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
502 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
503 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
504 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
505 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
506 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
507 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
508 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
509 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
510 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
511 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
512 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
513 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
514 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
515 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
516 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
517 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
518 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
519 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
520 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
521 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
522 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
523 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
524 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
525 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
526 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
527 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
528 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
529 # if_tunnel.h is buggy and cannot be included on its own
530 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
531 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
532 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
533 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
534 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
535 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
536 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
537 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
538 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
539 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
540 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400542 prefix = decl.length() > 2 ? decl[2] : ''
543 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200544 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545endforeach
546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200548 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549endforeach
550
551foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100553 ['gettid', '''#include <sys/types.h>
554 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100555 ['pivot_root', '''#include <stdlib.h>
556 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100557 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400558 #include <sys/stat.h>
559 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100560 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100561 ['renameat2', '''#include <stdio.h>
562 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400563 ['kcmp', '''#include <linux/kcmp.h>'''],
564 ['keyctl', '''#include <sys/types.h>
565 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100566 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400567 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200568 ['bpf', '''#include <sys/syscall.h>
569 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100570 ['statx', '''#include <sys/types.h>
571 #include <sys/stat.h>
572 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100573 ['explicit_bzero' , '''#include <string.h>'''],
574 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400575]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576
Lennart Poettering85db59b2017-12-25 12:01:14 +0100577 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200578 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579endforeach
580
Lennart Poettering85db59b2017-12-25 12:01:14 +0100581if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200582 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200583 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400584else
585 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200586 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200587 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400588endif
589
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590#####################################################################
591
Davide Cavalca1485aac2019-02-27 11:19:07 -0500592vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
593 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100594 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100595 meson.project_version()]
596
Louis Taylord1084aa2019-01-21 21:45:36 +0000597version_h = vcs_tag(
598 input : 'src/version/version.h.in',
599 output : 'version.h',
600 command: vcs_tagger)
601
602versiondep = declare_dependency(sources: version_h)
603
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400606m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400608git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100609env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100610perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611
Davide Cavalca1485aac2019-02-27 11:19:07 -0500612meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400613mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400614test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
615splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400616
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
618# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500619progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621 ['kmod', '/usr/bin/kmod' ],
622 ['kexec', '/usr/sbin/kexec' ],
623 ['sulogin', '/usr/sbin/sulogin' ],
624 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
625 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
626 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
627 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
628 ]
629foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400630 path = get_option(prog[0] + '-path')
631 if path != ''
632 message('Using @1@ for @0@'.format(prog[0], path))
633 else
634 exe = find_program(prog[0],
635 '/usr/sbin/' + prog[0],
636 '/sbin/' + prog[0],
637 required: false)
638 path = exe.found() ? exe.path() : prog[1]
639 endif
640 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
641 conf.set_quoted(name, path)
642 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endforeach
644
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500645conf.set_quoted('TELINIT', get_option('telinit-path'))
646
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400647if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100648 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400649endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650
651############################################################
652
653gperf = find_program('gperf')
654
655gperf_test_format = '''
656#include <string.h>
657const char * in_word_set(const char *, @0@);
658@1@
659'''
660gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
661gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
662gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
663if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
667 if cc.compiles(gperf_test)
668 gperf_len_type = 'unsigned'
669 else
670 error('unable to determine gperf len type')
671 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672endif
673message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400674conf.set('GPERF_LEN_TYPE', gperf_len_type,
675 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676
677############################################################
678
679if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400680 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100682foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100683 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900684 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685 'linux/memfd.h',
686 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100687 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200688 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689 'valgrind/memcheck.h',
690 'valgrind/valgrind.h',
691 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400692
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200693 conf.set10('HAVE_' + header.underscorify().to_upper(),
694 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695endforeach
696
697############################################################
698
699conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400700conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
701gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702
703default_hierarchy = get_option('default-hierarchy')
704conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
705 description : 'default cgroup hierarchy as string')
706if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400707 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400711 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400712endif
713
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100714default_net_naming_scheme = get_option('default-net-naming-scheme')
715conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
716
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900718if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400719 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900720 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722conf.set('TIME_EPOCH', time_epoch)
723
724system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900725if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400726 system_uid_max = run_command(
727 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800728 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
729 '/etc/login.defs').stdout().strip()
730 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900731 system_uid_max = 999
732 else
733 system_uid_max = system_uid_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_UID_MAX', system_uid_max)
737substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400739system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900740if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400741 system_gid_max = run_command(
742 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800743 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
744 '/etc/login.defs').stdout().strip()
745 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900746 system_gid_max = 999
747 else
748 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800749 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751conf.set('SYSTEM_GID_MAX', system_gid_max)
752substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Yu Watanabeac093402018-05-10 16:04:16 +0900754dynamic_uid_min = get_option('dynamic-uid-min')
755dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100756conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
757conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
758substs.set('dynamicuidmin', dynamic_uid_min)
759substs.set('dynamicuidmax', dynamic_uid_max)
760
Yu Watanabeac093402018-05-10 16:04:16 +0900761container_uid_base_min = get_option('container-uid-base-min')
762container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100763conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
764conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
765substs.set('containeruidbasemin', container_uid_base_min)
766substs.set('containeruidbasemax', container_uid_base_max)
767
Lennart Poetteringafde4572017-12-05 11:00:24 +0100768nobody_user = get_option('nobody-user')
769nobody_group = get_option('nobody-group')
770
Chen Qi2484bff2018-07-23 14:53:09 +0800771if not meson.is_cross_build()
772 getent_result = run_command('getent', 'passwd', '65534')
773 if getent_result.returncode() == 0
774 name = getent_result.stdout().split(':')[0]
775 if name != nobody_user
776 warning('\n' +
777 '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) +
778 'Your build will result in an user table setup that is incompatible with the local system.')
779 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100780 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800781 id_result = run_command('id', '-u', nobody_user)
782 if id_result.returncode() == 0
783 id = id_result.stdout().to_int()
784 if id != 65534
785 warning('\n' +
786 '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) +
787 'Your build will result in an user table setup that is incompatible with the local system.')
788 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100789 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100790
Chen Qi2484bff2018-07-23 14:53:09 +0800791 getent_result = run_command('getent', 'group', '65534')
792 if getent_result.returncode() == 0
793 name = getent_result.stdout().split(':')[0]
794 if name != nobody_group
795 warning('\n' +
796 '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) +
797 'Your build will result in an group table setup that is incompatible with the local system.')
798 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100799 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800800 id_result = run_command('id', '-g', nobody_group)
801 if id_result.returncode() == 0
802 id = id_result.stdout().to_int()
803 if id != 65534
804 warning('\n' +
805 '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) +
806 'Your build will result in an group table setup that is incompatible with the local system.')
807 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100808 endif
809endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900810if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900811 warning('\n' +
812 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
813 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900814endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100815
816conf.set_quoted('NOBODY_USER_NAME', nobody_user)
817conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900818substs.set('NOBODY_USER_NAME', nobody_user)
819substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100820
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821tty_gid = get_option('tty-gid')
822conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400823substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824
Ikey Doherty84786b82017-12-03 12:28:23 +0000825# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900826users_gid = get_option('users-gid')
827substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000828
Yu Watanabe348b4432018-05-07 18:17:35 +0900829conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
830conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
Michael Bieblace5e312018-07-13 23:36:13 +0200832dev_kvm_mode = get_option('dev-kvm-mode')
833substs.set('DEV_KVM_MODE', dev_kvm_mode)
834conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100835group_render_mode = get_option('group-render-mode')
836substs.set('GROUP_RENDER_MODE', group_render_mode)
837conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400839kill_user_processes = get_option('default-kill-user-processes')
840conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100841conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400842substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400844dns_servers = get_option('dns-servers')
845conf.set_quoted('DNS_SERVERS', dns_servers)
846substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400848ntp_servers = get_option('ntp-servers')
849conf.set_quoted('NTP_SERVERS', ntp_servers)
850substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851
Dave Reisner8ca9e922018-12-28 07:38:36 -0500852default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900853if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800854 if not meson.is_cross_build()
855 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
856 default_locale = run_command(choose_default_locale_sh).stdout().strip()
857 else
858 default_locale = 'C.UTF-8'
859 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900860endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500861conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
864
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400865substs.set('SUSHELL', get_option('debug-shell'))
866substs.set('DEBUGTTY', get_option('debug-tty'))
867
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868enable_debug_hashmap = false
869enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900870enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900871enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200872foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900873 if name == 'hashmap'
874 enable_debug_hashmap = true
875 elif name == 'mmap-cache'
876 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900877 elif name == 'siphash'
878 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900879 elif name == 'udev'
880 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900881 else
882 message('unknown debug option "@0@", ignoring'.format(name))
883 endif
884endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
886conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900887conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900888conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400889
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200890conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200891conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200892
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893#####################################################################
894
895threads = dependency('threads')
896librt = cc.find_library('rt')
897libm = cc.find_library('m')
898libdl = cc.find_library('dl')
899libcrypt = cc.find_library('crypt')
900
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400901libcap = dependency('libcap', required : false)
902if not libcap.found()
903 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
904 libcap = cc.find_library('cap')
905endif
906
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100908 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909
910want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500911if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400913 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
922want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500923if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libselinux = dependency('libselinux',
925 version : '>= 2.1.9',
926 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933
934want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500935if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libapparmor = dependency('libapparmor',
937 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945smack_run_label = get_option('smack-run-label')
946if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
949
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950want_polkit = get_option('polkit')
951install_polkit = false
952install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500953if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400955
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libpolkit = dependency('polkit-gobject-1',
957 required : false)
958 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
959 message('Old polkit detected, will install pkla files')
960 install_polkit_pkla = true
961 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400964
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400965want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400967 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400971 libacl = []
972endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400974
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500976if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500986if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994
995want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500996if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libkmod = dependency('libkmod',
998 version : '>= 15',
999 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006
1007want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libpam = cc.find_library('pam', required : want_pam == 'true')
1010 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libpam = []
1015 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001020if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libmicrohttpd = dependency('libmicrohttpd',
1022 version : '>= 0.9.33',
1023 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
1031want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001032if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libcryptsetup = dependency('libcryptsetup',
1034 version : '>= 1.6.0',
1035 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001037 have_sector = cc.has_member(
1038 'struct crypt_params_plain',
1039 'sector_size',
1040 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001043 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001047conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048
1049want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libcurl = dependency('libcurl',
1052 version : '>= 7.32.0',
1053 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001062want_libidn2 = get_option('libidn2')
1063if want_libidn == 'true' and want_libidn2 == 'true'
1064 error('libidn and libidn2 cannot be requested simultaneously')
1065endif
1066
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001067if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libidn = dependency('libidn',
1069 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001071else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001073 libidn = []
1074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001076if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001077 # libidn is used for both libidn and libidn2 objects
1078 libidn = dependency('libidn2',
1079 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libidn.found()
1081else
1082 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085
1086want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001087if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libiptc = dependency('libiptc',
1089 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096
1097want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001098if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libqrencode = dependency('libqrencode',
1100 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001108want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001109if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1111 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
1115endif
1116if not have
1117 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118 libgcrypt = []
1119 libgpg_error = []
1120endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001122
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001124if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001125 libgnutls = dependency('gnutls',
1126 version : '>= 3.1.4',
1127 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001132endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001135want_openssl = get_option('openssl')
1136if want_openssl != 'false' and not fuzzer_build
1137 libopenssl = dependency('openssl',
1138 version : '>= 1.1.0',
1139 required : want_openssl == 'true')
1140 have = libopenssl.found()
1141else
1142 have = false
1143 libopenssl = []
1144endif
1145conf.set10('HAVE_OPENSSL', have)
1146
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001148if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdw = dependency('libdw',
1150 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157
1158want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001159if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libz = dependency('zlib',
1161 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168
1169want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001170if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libbzip2 = cc.find_library('bz2',
1172 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179
1180want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001181if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 libxz = dependency('liblzma',
1183 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190
1191want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001192if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001194 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001203want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001204if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001205 libxkbcommon = dependency('xkbcommon',
1206 version : '>= 0.3.0',
1207 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001209else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001211 libxkbcommon = []
1212endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001214
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001215want_pcre2 = get_option('pcre2')
1216if want_pcre2 != 'false'
1217 libpcre2 = dependency('libpcre2-8',
1218 required : want_pcre2 == 'true')
1219 have = libpcre2.found()
1220else
1221 have = false
1222 libpcre2 = []
1223endif
1224conf.set10('HAVE_PCRE2', have)
1225
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001227if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001228 libglib = dependency('glib-2.0',
1229 version : '>= 2.22.0',
1230 required : want_glib == 'true')
1231 libgobject = dependency('gobject-2.0',
1232 version : '>= 2.22.0',
1233 required : want_glib == 'true')
1234 libgio = dependency('gio-2.0',
1235 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001236 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001239 libglib = []
1240 libgobject = []
1241 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244
1245want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001246if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001247 libdbus = dependency('dbus-1',
1248 version : '>= 1.3.2',
1249 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001256
Yu Watanabe42303dc2017-06-18 05:22:32 +09001257default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001258if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001259 default_dnssec = 'no'
1260endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001261if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001262 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1263 default_dnssec = 'no'
1264endif
1265conf.set('DEFAULT_DNSSEC_MODE',
1266 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1267substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1268
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001269dns_over_tls = get_option('dns-over-tls')
1270if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001271 if dns_over_tls == 'openssl'
1272 have_gnutls = false
1273 else
1274 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1275 if dns_over_tls == 'gnutls' and not have_gnutls
1276 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1277 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001278 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001279 if dns_over_tls == 'gnutls' or have_gnutls
1280 have_openssl = false
1281 else
1282 have_openssl = conf.get('HAVE_OPENSSL') == 1
1283 if dns_over_tls != 'auto' and not have_openssl
1284 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1285 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1286 endif
1287 endif
1288 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001289else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001290 have = false
1291 have_gnutls = false
1292 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001293endif
1294conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001295conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1296conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001297
Iwan Timmerc9299be2018-06-13 20:26:24 +02001298default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001299if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001300 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001301endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001302if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1303 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 +02001304 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001305endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001306conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1307 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1308substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001309
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001311if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001312 have = (conf.get('HAVE_LIBCURL') == 1 and
1313 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001314 conf.get('HAVE_XZ') == 1 and
1315 conf.get('HAVE_GCRYPT') == 1)
1316 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001317 error('importd support was requested, but dependencies are not available')
1318 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001319else
1320 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323
1324want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001325if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001326 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1327 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001328 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1329 # it's possible to build one without the other. Complain only if
1330 # support was explictly requested. The auxiliary files like sysusers
1331 # config should be installed when any of the programs are built.
1332 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1333 error('remote support was requested, but dependencies are not available')
1334 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001335 have = have_deps[0] or have_deps[1]
1336else
1337 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001339conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001341foreach term : ['utmp',
1342 'hibernate',
1343 'environment-d',
1344 'binfmt',
1345 'coredump',
1346 'resolve',
1347 'logind',
1348 'hostnamed',
1349 'localed',
1350 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001351 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001352 'networkd',
1353 'timedated',
1354 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001355 'firstboot',
1356 'randomseed',
1357 'backlight',
1358 'vconsole',
1359 'quotacheck',
1360 'sysusers',
1361 'tmpfiles',
1362 'hwdb',
1363 'rfkill',
1364 'ldconfig',
1365 'efi',
1366 'tpm',
1367 'ima',
1368 'smack',
1369 'gshadow',
1370 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001371 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001372 'nss-systemd']
1373 have = get_option(term)
1374 name = 'ENABLE_' + term.underscorify().to_upper()
1375 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376endforeach
1377
Yu Watanabe08540a92018-07-18 09:25:57 +09001378foreach tuple : [['nss-mymachines', 'machined'],
1379 ['nss-resolve', 'resolve']]
1380 want = get_option(tuple[0])
1381 if want != 'false'
1382 have = get_option(tuple[1])
1383 if want == 'true' and not have
1384 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1385 endif
1386 else
1387 have = false
1388 endif
1389 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1390 conf.set10(name, have)
1391endforeach
1392
1393enable_nss = false
1394foreach term : ['ENABLE_NSS_MYHOSTNAME',
1395 'ENABLE_NSS_MYMACHINES',
1396 'ENABLE_NSS_RESOLVE',
1397 'ENABLE_NSS_SYSTEMD']
1398 if conf.get(term) == 1
1399 enable_nss = true
1400 endif
1401endforeach
1402conf.set10('ENABLE_NSS', enable_nss)
1403
Yu Watanabe348b4432018-05-07 18:17:35 +09001404conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001405
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001406tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001407fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001408
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001409conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001410
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411#####################################################################
1412
1413if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001415
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001416 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001418 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 elif efi_arch == 'x86_64'
1420 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001421 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 elif efi_arch == 'arm'
1423 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001424 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001425 elif efi_arch == 'aarch64'
1426 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001427 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 else
1429 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001430 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001431 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001433 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001434 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001435
Yu Watanabeac093402018-05-10 16:04:16 +09001436 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001437else
1438 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001440conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441
1442#####################################################################
1443
1444config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 output : 'config.h',
1446 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447
Yu Watanabe348b4432018-05-07 18:17:35 +09001448meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1449
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450includes = include_directories('src/basic',
1451 'src/shared',
1452 'src/systemd',
1453 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001454 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001455 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456 'src/resolve',
1457 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001458 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459 'src/login',
1460 'src/udev',
1461 'src/libudev',
1462 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001463 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464 'src/libsystemd/sd-bus',
1465 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001466 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467 'src/libsystemd/sd-hwdb',
1468 'src/libsystemd/sd-id128',
1469 'src/libsystemd/sd-netlink',
1470 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001471 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001473 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474
1475add_project_arguments('-include', 'config.h', language : 'c')
1476
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001477generate_gperfs = find_program('tools/generate-gperfs.py')
1478
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479subdir('po')
1480subdir('catalog')
1481subdir('src/systemd')
1482subdir('src/basic')
1483subdir('src/libsystemd')
1484subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487
1488libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001489 'journal-core',
1490 libjournal_core_sources,
1491 journald_gperf_c,
1492 include_directories : includes,
1493 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494
Davide Cavalca1485aac2019-02-27 11:19:07 -05001495libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001498 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001499 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 include_directories : includes,
1501 link_args : ['-shared',
1502 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001503 link_with : [libbasic,
1504 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001505 link_whole : [libsystemd_static,
1506 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001507 dependencies : [threads,
1508 librt,
1509 libxz,
1510 liblz4],
1511 link_depends : libsystemd_sym,
1512 install : true,
1513 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
Davide Cavalca70848ec2018-04-09 02:43:35 -07001515static_libsystemd = get_option('static-libsystemd')
1516static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1517
1518install_libsystemd_static = static_library(
1519 'systemd',
1520 libsystemd_sources,
1521 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001522 basic_sources,
1523 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001524 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001525 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001526 build_by_default : static_libsystemd != 'false',
1527 install : static_libsystemd != 'false',
1528 install_dir : rootlibdir,
1529 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1530 dependencies : [threads,
1531 librt,
1532 libxz,
1533 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001534 libcap,
1535 libblkid,
1536 libmount,
1537 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001538 libgcrypt],
1539 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1540
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541############################################################
1542
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001543# binaries that have --help and are intended for use by humans,
1544# usually, but not always, installed in /bin.
1545public_programs = []
1546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547subdir('src/libudev')
1548subdir('src/shared')
1549subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001550subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001551subdir('src/udev')
1552subdir('src/network')
1553
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001554subdir('src/analyze')
1555subdir('src/journal-remote')
1556subdir('src/coredump')
1557subdir('src/hostname')
1558subdir('src/import')
1559subdir('src/kernel-install')
1560subdir('src/locale')
1561subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001562subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001563subdir('src/nspawn')
1564subdir('src/resolve')
1565subdir('src/timedate')
1566subdir('src/timesync')
1567subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001568subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001569
1570subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001571subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001572subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001573subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001574
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001575############################################################
1576
1577# only static linking apart from libdl, to make sure that the
1578# module is linked to all libraries that it uses.
1579test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 'test-dlopen',
1581 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001582 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001583 include_directories : includes,
1584 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001585 dependencies : [libdl],
1586 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001587
Yu Watanabe08540a92018-07-18 09:25:57 +09001588foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001589 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001590 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1591 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001592
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001593 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 if condition
1595 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001596
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001598 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 nss = shared_library(
1601 'nss_' + module,
1602 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001603 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 version : '2',
1605 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001606 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1607 link_args : ['-Wl,-z,nodelete',
1608 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001609 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001610 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001611 libbasic],
1612 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001613 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 link_depends : sym,
1615 install : true,
1616 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001617
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 # We cannot use shared_module because it does not support version suffix.
1619 # Unfortunately shared_library insists on creating the symlink…
1620 meson.add_install_script('sh', '-c',
1621 'rm $DESTDIR@0@/libnss_@1@.so'
1622 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001623
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001624 if want_tests != 'false'
1625 test('dlopen-nss_' + module,
1626 test_dlopen,
1627 # path to dlopen must include a slash
1628 args : nss.full_path())
1629 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001631endforeach
1632
1633############################################################
1634
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635executable('systemd',
1636 systemd_sources,
1637 include_directories : includes,
1638 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001639 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001640 dependencies : [versiondep,
1641 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642 librt,
1643 libseccomp,
1644 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001645 libmount,
1646 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001647 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648 install : true,
1649 install_dir : rootlibexecdir)
1650
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001651meson.add_install_script(meson_make_symlink,
1652 join_paths(rootlibexecdir, 'systemd'),
1653 join_paths(rootsbindir, 'init'))
1654
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001655exe = executable('systemd-analyze',
1656 systemd_analyze_sources,
1657 include_directories : includes,
1658 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001659 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001660 dependencies : [versiondep,
1661 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001662 librt,
1663 libseccomp,
1664 libselinux,
1665 libmount,
1666 libblkid],
1667 install_rpath : rootlibexecdir,
1668 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001669public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670
1671executable('systemd-journald',
1672 systemd_journald_sources,
1673 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001674 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001675 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676 dependencies : [threads,
1677 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001678 liblz4,
1679 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001680 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681 install : true,
1682 install_dir : rootlibexecdir)
1683
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001684exe = executable('systemd-cat',
1685 systemd_cat_sources,
1686 include_directories : includes,
1687 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001688 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001689 dependencies : [threads],
1690 install_rpath : rootlibexecdir,
1691 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001692public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694exe = executable('journalctl',
1695 journalctl_sources,
1696 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001697 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001698 dependencies : [threads,
1699 libqrencode,
1700 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001701 liblz4,
1702 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001706public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707
1708executable('systemd-getty-generator',
1709 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001711 link_with : [libshared],
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715
1716executable('systemd-debug-generator',
1717 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001719 link_with : [libshared],
1720 install_rpath : rootlibexecdir,
1721 install : true,
1722 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001724executable('systemd-run-generator',
1725 'src/run-generator/run-generator.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : systemgeneratordir)
1731
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732executable('systemd-fstab-generator',
1733 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001735 link_with : [libcore_shared,
1736 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001737 install_rpath : rootlibexecdir,
1738 install : true,
1739 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001740
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001741if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 executable('30-systemd-environment-d-generator',
1743 'src/environment-d-generator/environment-d-generator.c',
1744 include_directories : includes,
1745 link_with : [libshared],
1746 install_rpath : rootlibexecdir,
1747 install : true,
1748 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001749
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 meson.add_install_script(meson_make_symlink,
1751 join_paths(sysconfdir, 'environment'),
1752 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753endif
1754
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001755if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 executable('systemd-hibernate-resume-generator',
1757 'src/hibernate-resume/hibernate-resume-generator.c',
1758 include_directories : includes,
1759 link_with : [libshared],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 executable('systemd-hibernate-resume',
1765 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001766 include_directories : includes,
1767 link_with : [libshared],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771endif
1772
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001773if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 executable('systemd-gpt-auto-generator',
1775 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001776 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001778 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 dependencies : libblkid,
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : systemgeneratordir)
1783
1784 exe = executable('systemd-dissect',
1785 'src/dissect/dissect.c',
1786 include_directories : includes,
1787 link_with : [libshared],
1788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001791 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792endif
1793
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001794if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 executable('systemd-resolved',
1796 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001797 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001798 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001799 libbasic_gcrypt,
1800 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001801 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 install : true,
1804 install_dir : rootlibexecdir)
1805
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001806 exe = executable('resolvectl',
1807 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001809 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001810 libbasic_gcrypt,
1811 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001813 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 libm,
1815 libidn],
1816 install_rpath : rootlibexecdir,
1817 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001818 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001819
1820 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001821 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001822 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001823
1824 meson.add_install_script(meson_make_symlink,
1825 join_paths(bindir, 'resolvectl'),
1826 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001827endif
1828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001829if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 executable('systemd-logind',
1831 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001832 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001834 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001835 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001837 install_rpath : rootlibexecdir,
1838 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001840
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 exe = executable('loginctl',
1842 loginctl_sources,
1843 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001844 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845 dependencies : [threads,
1846 liblz4,
1847 libxz],
1848 install_rpath : rootlibexecdir,
1849 install : true,
1850 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001851 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001852
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 exe = executable('systemd-inhibit',
1854 'src/login/inhibit.c',
1855 include_directories : includes,
1856 link_with : [libshared],
1857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001860 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001862 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001863 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 pam_systemd = shared_library(
1865 'pam_systemd',
1866 pam_systemd_c,
1867 name_prefix : '',
1868 include_directories : includes,
1869 link_args : ['-shared',
1870 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001871 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 libshared_static],
1873 dependencies : [threads,
1874 libpam,
1875 libpam_misc],
1876 link_depends : pam_systemd_sym,
1877 install : true,
1878 install_dir : pamlibdir)
1879
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001880 if want_tests != 'false'
1881 test('dlopen-pam_systemd',
1882 test_dlopen,
1883 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001884 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001885 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001888 executable('systemd-user-runtime-dir',
1889 user_runtime_dir_sources,
1890 include_directories : includes,
1891 link_with : [libshared],
1892 install_rpath : rootlibexecdir,
1893 install : true,
1894 install_dir : rootlibexecdir)
1895endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001896
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001897if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 executable('systemd-user-sessions',
1899 'src/user-sessions/user-sessions.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905endif
1906
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001907if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 exe = executable('bootctl',
1909 'src/boot/bootctl.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [libblkid],
1913 install_rpath : rootlibexecdir,
1914 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001915 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001916
1917 executable('systemd-bless-boot',
1918 'src/boot/bless-boot.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [libblkid],
1922 install_rpath : rootlibexecdir,
1923 install : true,
1924 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001925
1926 executable('systemd-bless-boot-generator',
1927 'src/boot/bless-boot-generator.c',
1928 include_directories : includes,
1929 link_with : [libshared],
1930 install_rpath : rootlibexecdir,
1931 install : true,
1932 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001933endif
1934
Lennart Poetteringf876f532018-06-25 16:07:33 +02001935executable('systemd-boot-check-no-failures',
1936 'src/boot/boot-check-no-failures.c',
1937 include_directories : includes,
1938 link_with : [libshared],
1939 dependencies : [libblkid],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootlibexecdir)
1943
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001944exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [threads],
1948 install_rpath : rootlibexecdir,
1949 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001950public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Felipe Satelerf3794362018-05-22 15:08:57 -04001952
1953if get_option('link-systemctl-shared')
1954 systemctl_link_with = [libshared]
1955else
1956 systemctl_link_with = [libsystemd_static,
1957 libshared_static,
1958 libjournal_client,
1959 libbasic_gcrypt]
1960endif
1961
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001962exe = executable('systemctl',
1963 'src/systemctl/systemctl.c',
1964 'src/systemctl/sysv-compat.h',
1965 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001966 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001967 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001968 dependencies : [threads,
1969 libcap,
1970 libselinux,
1971 libxz,
1972 liblz4],
1973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001976public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001977
Lennart Poettering61d05782018-04-16 21:41:40 +02001978if conf.get('ENABLE_PORTABLED') == 1
1979 executable('systemd-portabled',
1980 systemd_portabled_sources,
1981 include_directories : includes,
1982 link_with : [libshared],
1983 dependencies : [threads],
1984 install_rpath : rootlibexecdir,
1985 install : true,
1986 install_dir : rootlibexecdir)
1987
1988 exe = executable('portablectl', 'src/portable/portablectl.c',
1989 include_directories : includes,
1990 link_with : [libshared],
1991 dependencies : [threads],
1992 install_rpath : rootlibexecdir,
1993 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001994 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001995 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001996endif
1997
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001998foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1999 meson.add_install_script(meson_make_symlink,
2000 join_paths(rootbindir, 'systemctl'),
2001 join_paths(rootsbindir, alias))
2002endforeach
2003
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002004if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 executable('systemd-backlight',
2006 'src/backlight/backlight.c',
2007 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012endif
2013
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002014if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-rfkill',
2016 'src/rfkill/rfkill.c',
2017 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002018 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022endif
2023
2024executable('systemd-system-update-generator',
2025 'src/system-update-generator/system-update-generator.c',
2026 include_directories : includes,
2027 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002028 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029 install : true,
2030 install_dir : systemgeneratordir)
2031
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002032if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 executable('systemd-cryptsetup',
2034 'src/cryptsetup/cryptsetup.c',
2035 include_directories : includes,
2036 link_with : [libshared],
2037 dependencies : [libcryptsetup],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-cryptsetup-generator',
2043 'src/cryptsetup/cryptsetup-generator.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 dependencies : [libcryptsetup],
2047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051 executable('systemd-veritysetup',
2052 'src/veritysetup/veritysetup.c',
2053 include_directories : includes,
2054 link_with : [libshared],
2055 dependencies : [libcryptsetup],
2056 install_rpath : rootlibexecdir,
2057 install : true,
2058 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 executable('systemd-veritysetup-generator',
2061 'src/veritysetup/veritysetup-generator.c',
2062 include_directories : includes,
2063 link_with : [libshared],
2064 dependencies : [libcryptsetup],
2065 install_rpath : rootlibexecdir,
2066 install : true,
2067 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068endif
2069
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002070if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 executable('systemd-sysv-generator',
2072 'src/sysv-generator/sysv-generator.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002079 executable('systemd-rc-local-generator',
2080 'src/rc-local-generator/rc-local-generator.c',
2081 include_directories : includes,
2082 link_with : [libshared],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086endif
2087
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002088if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 executable('systemd-hostnamed',
2090 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002091 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002092 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002093 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 install : true,
2095 install_dir : rootlibexecdir)
2096
2097 exe = executable('hostnamectl',
2098 'src/hostname/hostnamectl.c',
2099 include_directories : includes,
2100 link_with : [libshared],
2101 install_rpath : rootlibexecdir,
2102 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002103 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_LOCALED') == 1
2107 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108 # logind will load libxkbcommon.so dynamically on its own
2109 deps = [libdl]
2110 else
2111 deps = []
2112 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002113
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 executable('systemd-localed',
2115 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002119 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 install : true,
2121 install_dir : rootlibexecdir)
2122
2123 exe = executable('localectl',
2124 localectl_sources,
2125 include_directories : includes,
2126 link_with : [libshared],
2127 install_rpath : rootlibexecdir,
2128 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002129 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130endif
2131
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002132if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 executable('systemd-timedated',
2134 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002136 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002140endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141
Yu Watanabe6129ec82018-05-03 18:07:43 +09002142if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 exe = executable('timedatectl',
2144 'src/timedate/timedatectl.c',
2145 include_directories : includes,
2146 install_rpath : rootlibexecdir,
2147 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002148 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002150 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151endif
2152
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002153if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002154 executable('systemd-timesyncd',
2155 systemd_timesyncd_sources,
2156 include_directories : includes,
2157 link_with : [libshared],
2158 dependencies : [threads,
2159 libm],
2160 install_rpath : rootlibexecdir,
2161 install : true,
2162 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002163
2164 executable('systemd-time-wait-sync',
2165 'src/time-wait-sync/time-wait-sync.c',
2166 include_directories : includes,
2167 link_with : [libshared],
2168 install_rpath : rootlibexecdir,
2169 install : true,
2170 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171endif
2172
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002173if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 executable('systemd-machined',
2175 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002176 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 link_with : [libmachine_core,
2178 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 install_rpath : rootlibexecdir,
2180 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 install_dir : rootlibexecdir)
2182
2183 exe = executable('machinectl',
2184 'src/machine/machinectl.c',
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [threads,
2188 libxz,
2189 liblz4],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002193 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194endif
2195
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002196if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002197 executable('systemd-importd',
2198 systemd_importd_sources,
2199 include_directories : includes,
2200 link_with : [libshared],
2201 dependencies : [threads],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002206 systemd_pull = executable('systemd-pull',
2207 systemd_pull_sources,
2208 include_directories : includes,
2209 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002210 dependencies : [versiondep,
2211 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002212 libz,
2213 libbzip2,
2214 libxz,
2215 libgcrypt],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220 systemd_import = executable('systemd-import',
2221 systemd_import_sources,
2222 include_directories : includes,
2223 link_with : [libshared],
2224 dependencies : [libcurl,
2225 libz,
2226 libbzip2,
2227 libxz],
2228 install_rpath : rootlibexecdir,
2229 install : true,
2230 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002232 systemd_import_fs = executable('systemd-import-fs',
2233 systemd_import_fs_sources,
2234 include_directories : includes,
2235 link_with : [libshared],
2236 install_rpath : rootlibexecdir,
2237 install : true,
2238 install_dir : rootlibexecdir)
2239
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 systemd_export = executable('systemd-export',
2241 systemd_export_sources,
2242 include_directories : includes,
2243 link_with : [libshared],
2244 dependencies : [libcurl,
2245 libz,
2246 libbzip2,
2247 libxz],
2248 install_rpath : rootlibexecdir,
2249 install : true,
2250 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002251
2252 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253endif
2254
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002255if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002256 exe = executable('systemd-journal-upload',
2257 systemd_journal_upload_sources,
2258 include_directories : includes,
2259 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002260 dependencies : [versiondep,
2261 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002262 libcurl,
2263 libgnutls,
2264 libxz,
2265 liblz4],
2266 install_rpath : rootlibexecdir,
2267 install : true,
2268 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002269 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270endif
2271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002272if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 s_j_remote = executable('systemd-journal-remote',
2274 systemd_journal_remote_sources,
2275 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002276 link_with : [libshared,
2277 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278 dependencies : [threads,
2279 libmicrohttpd,
2280 libgnutls,
2281 libxz,
2282 liblz4],
2283 install_rpath : rootlibexecdir,
2284 install : true,
2285 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 s_j_gatewayd = executable('systemd-journal-gatewayd',
2288 systemd_journal_gatewayd_sources,
2289 include_directories : includes,
2290 link_with : [libshared],
2291 dependencies : [threads,
2292 libmicrohttpd,
2293 libgnutls,
2294 libxz,
2295 liblz4],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootlibexecdir)
2299 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300endif
2301
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002302if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 executable('systemd-coredump',
2304 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002305 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 libacl,
2309 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310 libxz,
2311 liblz4],
2312 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 install : true,
2314 install_dir : rootlibexecdir)
2315
2316 exe = executable('coredumpctl',
2317 coredumpctl_sources,
2318 include_directories : includes,
2319 link_with : [libshared],
2320 dependencies : [threads,
2321 libxz,
2322 liblz4],
2323 install_rpath : rootlibexecdir,
2324 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002325 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002326endif
2327
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002328if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 exe = executable('systemd-binfmt',
2330 'src/binfmt/binfmt.c',
2331 include_directories : includes,
2332 link_with : [libshared],
2333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002336 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002337
2338 meson.add_install_script('sh', '-c',
2339 mkdir_p.format(binfmtdir))
2340 meson.add_install_script('sh', '-c',
2341 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2342endif
2343
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002344if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 executable('systemd-vconsole-setup',
2346 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347 include_directories : includes,
2348 link_with : [libshared],
2349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352endif
2353
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002354if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002355 executable('systemd-random-seed',
2356 'src/random-seed/random-seed.c',
2357 include_directories : includes,
2358 link_with : [libshared],
2359 install_rpath : rootlibexecdir,
2360 install : true,
2361 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362endif
2363
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002364if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002365 executable('systemd-firstboot',
2366 'src/firstboot/firstboot.c',
2367 include_directories : includes,
2368 link_with : [libshared],
2369 dependencies : [libcrypt],
2370 install_rpath : rootlibexecdir,
2371 install : true,
2372 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373endif
2374
2375executable('systemd-remount-fs',
2376 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002378 link_with : [libcore_shared,
2379 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002380 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381 install : true,
2382 install_dir : rootlibexecdir)
2383
2384executable('systemd-machine-id-setup',
2385 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002387 link_with : [libcore_shared,
2388 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002389 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390 install : true,
2391 install_dir : rootbindir)
2392
2393executable('systemd-fsck',
2394 'src/fsck/fsck.c',
2395 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002396 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002397 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398 install : true,
2399 install_dir : rootlibexecdir)
2400
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002401executable('systemd-growfs',
2402 'src/partition/growfs.c',
2403 include_directories : includes,
2404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002405 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002406 install_rpath : rootlibexecdir,
2407 install : true,
2408 install_dir : rootlibexecdir)
2409
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002410executable('systemd-makefs',
2411 'src/partition/makefs.c',
2412 include_directories : includes,
2413 link_with : [libshared],
2414 install_rpath : rootlibexecdir,
2415 install : true,
2416 install_dir : rootlibexecdir)
2417
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418executable('systemd-sleep',
2419 'src/sleep/sleep.c',
2420 include_directories : includes,
2421 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002422 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423 install : true,
2424 install_dir : rootlibexecdir)
2425
Yu Watanabed25e1272019-01-03 02:32:57 +09002426install_data('src/sleep/sleep.conf',
2427 install_dir : pkgsysconfdir)
2428
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002429exe = executable('systemd-sysctl',
2430 'src/sysctl/sysctl.c',
2431 include_directories : includes,
2432 link_with : [libshared],
2433 install_rpath : rootlibexecdir,
2434 install : true,
2435 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002436public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437
2438executable('systemd-ac-power',
2439 'src/ac-power/ac-power.c',
2440 include_directories : includes,
2441 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002442 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443 install : true,
2444 install_dir : rootlibexecdir)
2445
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446exe = executable('systemd-detect-virt',
2447 'src/detect-virt/detect-virt.c',
2448 include_directories : includes,
2449 link_with : [libshared],
2450 install_rpath : rootlibexecdir,
2451 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002452public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454exe = executable('systemd-delta',
2455 'src/delta/delta.c',
2456 include_directories : includes,
2457 link_with : [libshared],
2458 install_rpath : rootlibexecdir,
2459 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002460public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462exe = executable('systemd-escape',
2463 'src/escape/escape.c',
2464 include_directories : includes,
2465 link_with : [libshared],
2466 install_rpath : rootlibexecdir,
2467 install : true,
2468 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002469public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471exe = executable('systemd-notify',
2472 'src/notify/notify.c',
2473 include_directories : includes,
2474 link_with : [libshared],
2475 install_rpath : rootlibexecdir,
2476 install : true,
2477 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002478public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479
2480executable('systemd-volatile-root',
2481 'src/volatile-root/volatile-root.c',
2482 include_directories : includes,
2483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002484 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485 install : true,
2486 install_dir : rootlibexecdir)
2487
2488executable('systemd-cgroups-agent',
2489 'src/cgroups-agent/cgroups-agent.c',
2490 include_directories : includes,
2491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002492 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493 install : true,
2494 install_dir : rootlibexecdir)
2495
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002496exe = executable('systemd-id128',
2497 'src/id128/id128.c',
2498 include_directories : includes,
2499 link_with : [libshared],
2500 install_rpath : rootlibexecdir,
2501 install : true)
2502public_programs += exe
2503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504exe = executable('systemd-path',
2505 'src/path/path.c',
2506 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002507 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508 install_rpath : rootlibexecdir,
2509 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002510public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002511
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002512exe = executable('systemd-ask-password',
2513 'src/ask-password/ask-password.c',
2514 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002515 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516 install_rpath : rootlibexecdir,
2517 install : true,
2518 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002519public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002520
2521executable('systemd-reply-password',
2522 'src/reply-password/reply-password.c',
2523 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002524 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002525 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526 install : true,
2527 install_dir : rootlibexecdir)
2528
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002529exe = executable('systemd-tty-ask-password-agent',
2530 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002532 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533 install_rpath : rootlibexecdir,
2534 install : true,
2535 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002536public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538exe = executable('systemd-cgls',
2539 'src/cgls/cgls.c',
2540 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002541 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 install_rpath : rootlibexecdir,
2543 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002544public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546exe = executable('systemd-cgtop',
2547 'src/cgtop/cgtop.c',
2548 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002549 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550 install_rpath : rootlibexecdir,
2551 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002552public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553
2554executable('systemd-initctl',
2555 'src/initctl/initctl.c',
2556 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002558 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559 install : true,
2560 install_dir : rootlibexecdir)
2561
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562exe = executable('systemd-mount',
2563 'src/mount/mount-tool.c',
2564 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002565 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566 install_rpath : rootlibexecdir,
2567 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002568public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002570meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002571 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('systemd-run',
2574 'src/run/run.c',
2575 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 install_rpath : rootlibexecdir,
2578 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002579public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002581exe = executable('systemd-stdio-bridge',
2582 'src/stdio-bridge/stdio-bridge.c',
2583 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002584 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002585 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002586 install_rpath : rootlibexecdir,
2587 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002588public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590exe = executable('busctl',
2591 'src/busctl/busctl.c',
2592 'src/busctl/busctl-introspect.c',
2593 'src/busctl/busctl-introspect.h',
2594 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002595 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596 install_rpath : rootlibexecdir,
2597 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002598public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002600if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 exe = executable('systemd-sysusers',
2602 'src/sysusers/sysusers.c',
2603 include_directories : includes,
2604 link_with : [libshared],
2605 install_rpath : rootlibexecdir,
2606 install : true,
2607 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002608 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609endif
2610
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002611if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002612 exe = executable('systemd-tmpfiles',
2613 'src/tmpfiles/tmpfiles.c',
2614 include_directories : includes,
2615 link_with : [libshared],
2616 dependencies : [libacl],
2617 install_rpath : rootlibexecdir,
2618 install : true,
2619 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002620 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002621
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002622 if want_tests != 'false'
2623 test('test-systemd-tmpfiles',
2624 test_systemd_tmpfiles_py,
2625 # https://github.com/mesonbuild/meson/issues/2681
2626 args : exe.full_path())
2627 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628endif
2629
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002630if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002631 exe = executable('systemd-hwdb',
2632 'src/hwdb/hwdb.c',
2633 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2634 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002635 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002636 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 install : true,
2638 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002639 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002640endif
2641
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002642if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002643 executable('systemd-quotacheck',
2644 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002646 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647 install_rpath : rootlibexecdir,
2648 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002649 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650endif
2651
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652exe = executable('systemd-socket-proxyd',
2653 'src/socket-proxy/socket-proxyd.c',
2654 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002655 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656 dependencies : [threads],
2657 install_rpath : rootlibexecdir,
2658 install : true,
2659 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002660public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662exe = executable('systemd-udevd',
2663 systemd_udevd_sources,
2664 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002665 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002667 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002668 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002669 dependencies : [versiondep,
2670 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002671 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002672 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002673 libacl,
2674 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002675 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002676 install : true,
2677 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002678public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002680exe = executable('udevadm',
2681 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002682 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002683 include_directories : includes,
2684 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002685 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002686 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002687 dependencies : [versiondep,
2688 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002689 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002690 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002691 libacl,
2692 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002693 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002694 install : true,
2695 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002696public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002697
2698executable('systemd-shutdown',
2699 systemd_shutdown_sources,
2700 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002701 link_with : [libcore_shared,
2702 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002703 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002704 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002705 install : true,
2706 install_dir : rootlibexecdir)
2707
2708executable('systemd-update-done',
2709 'src/update-done/update-done.c',
2710 include_directories : includes,
2711 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002712 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002713 install : true,
2714 install_dir : rootlibexecdir)
2715
2716executable('systemd-update-utmp',
2717 'src/update-utmp/update-utmp.c',
2718 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002719 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002720 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002721 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722 install : true,
2723 install_dir : rootlibexecdir)
2724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002725if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002726 executable('systemd-modules-load',
2727 'src/modules-load/modules-load.c',
2728 include_directories : includes,
2729 link_with : [libshared],
2730 dependencies : [libkmod],
2731 install_rpath : rootlibexecdir,
2732 install : true,
2733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002734
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 meson.add_install_script('sh', '-c',
2736 mkdir_p.format(modulesloaddir))
2737 meson.add_install_script('sh', '-c',
2738 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739endif
2740
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002741exe = executable('systemd-nspawn',
2742 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002743 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002744 link_with : [libcore_shared,
2745 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002746 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002747 dependencies : [libblkid,
2748 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002749 install_rpath : rootlibexecdir,
2750 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002751public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002752
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002753if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002754 executable('systemd-networkd',
2755 systemd_networkd_sources,
2756 include_directories : includes,
2757 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002758 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002759 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002760 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002761 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002762 install_rpath : rootlibexecdir,
2763 install : true,
2764 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002765
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002766 executable('systemd-networkd-wait-online',
2767 systemd_networkd_wait_online_sources,
2768 include_directories : includes,
2769 link_with : [libnetworkd_core,
2770 libshared],
2771 install_rpath : rootlibexecdir,
2772 install : true,
2773 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002774
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002775 exe = executable('networkctl',
2776 networkctl_sources,
2777 include_directories : includes,
2778 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002779 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002780 install_rpath : rootlibexecdir,
2781 install : true,
2782 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002783 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002784endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002785
2786executable('systemd-sulogin-shell',
2787 ['src/sulogin-shell/sulogin-shell.c'],
2788 include_directories : includes,
2789 link_with : [libshared],
2790 install_rpath : rootlibexecdir,
2791 install : true,
2792 install_dir : rootlibexecdir)
2793
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002794############################################################
2795
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002796custom_target(
2797 'systemd-runtest.env',
2798 output : 'systemd-runtest.env',
2799 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002800 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002801 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002802 '} >@OUTPUT@'],
2803 build_by_default : true)
2804
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002805foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 sources = tuple[0]
2807 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2808 dependencies = tuple[2]
2809 condition = tuple.length() >= 4 ? tuple[3] : ''
2810 type = tuple.length() >= 5 ? tuple[4] : ''
2811 defs = tuple.length() >= 6 ? tuple[5] : []
2812 incs = tuple.length() >= 7 ? tuple[6] : includes
2813 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002814
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002815 name = sources[0].split('/')[-1].split('.')[0]
2816 if type.startswith('timeout=')
2817 timeout = type.split('=')[1].to_int()
2818 type = ''
2819 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002820
2821 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002822 exe = executable(
2823 name,
2824 sources,
2825 include_directories : incs,
2826 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002827 dependencies : [versiondep,
2828 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002829 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002830 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002831 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002832 install : install_tests,
2833 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002834
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002835 if type == 'manual'
2836 message('@0@ is a manual test'.format(name))
2837 elif type == 'unsafe' and want_tests != 'unsafe'
2838 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002839 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002840 test(name, exe,
2841 env : test_env,
2842 timeout : timeout)
2843 endif
2844 else
2845 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2846 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002847endforeach
2848
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002850 'test-libsystemd-sym',
2851 test_libsystemd_sym_c,
2852 include_directories : includes,
2853 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002854 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002855 install : install_tests,
2856 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002857if want_tests != 'false'
2858 test('test-libsystemd-sym', exe)
2859endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002860
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002861exe = executable(
2862 'test-libsystemd-static-sym',
2863 test_libsystemd_sym_c,
2864 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002865 link_with : [install_libsystemd_static],
2866 dependencies : [threads], # threads is already included in dependencies on the library,
2867 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002868 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002869 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002870 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002871if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002872 test('test-libsystemd-static-sym', exe)
2873endif
2874
2875exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002876 'test-libudev-sym',
2877 test_libudev_sym_c,
2878 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002879 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002880 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002881 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002882 install : install_tests,
2883 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002884if want_tests != 'false'
2885 test('test-libudev-sym', exe)
2886endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002887
2888exe = executable(
2889 'test-libudev-static-sym',
2890 test_libudev_sym_c,
2891 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002892 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002893 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002894 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002895 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002896 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002897if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002898 test('test-libudev-static-sym', exe)
2899endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002900
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002901############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002903fuzzer_exes = []
2904
Michael Olbrich59967402018-11-11 11:27:35 +01002905if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002906foreach tuple : fuzzers
2907 sources = tuple[0]
2908 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2909 dependencies = tuple[2]
2910 defs = tuple.length() >= 4 ? tuple[3] : []
2911 incs = tuple.length() >= 5 ? tuple[4] : includes
2912
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002913 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002914 dependencies += fuzzing_engine
2915 else
2916 sources += 'src/fuzz/fuzz-main.c'
2917 endif
2918
2919 name = sources[0].split('/')[-1].split('.')[0]
2920
2921 fuzzer_exes += executable(
2922 name,
2923 sources,
2924 include_directories : [incs, include_directories('src/fuzz')],
2925 link_with : link_with,
2926 dependencies : dependencies,
2927 c_args : defs,
2928 install : false)
2929endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002930endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002931
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002932run_target('fuzzers',
2933 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002934 command : ['true'])
2935
2936############################################################
2937
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002938make_directive_index_py = find_program('tools/make-directive-index.py')
2939make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002940xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002941hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942
2943subdir('units')
2944subdir('sysctl.d')
2945subdir('sysusers.d')
2946subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002947subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002948subdir('hwdb')
2949subdir('network')
2950subdir('man')
2951subdir('shell-completion/bash')
2952subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002953subdir('docs/sysvinit')
2954subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002955
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002956install_subdir('factory/etc',
2957 install_dir : factorydir)
2958
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002959install_data('xorg/50-systemd-user.sh',
2960 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002961install_data('modprobe.d/systemd.conf',
2962 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002963install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002964 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002965 'NEWS',
2966 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302967 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002968 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002969 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302970 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002971 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002972 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002973 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002974 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2975 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002976
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002977meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2978meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2979
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002980############################################################
2981
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002982meson_check_help = find_program('tools/meson-check-help.sh')
2983
2984foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002985 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002986 if want_tests != 'false'
2987 test('check-help-' + name,
2988 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002989 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002990 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002991endforeach
2992
2993############################################################
2994
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002995# Enable tests for all supported sanitizers
2996foreach tuple : sanitizers
2997 sanitizer = tuple[0]
2998 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002999
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003000 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003001 prev = ''
3002 foreach p : fuzz_regression_tests
3003 b = p.split('/')[-2]
3004 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003005
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003006 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003007
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003008 if name != prev
3009 if want_tests == 'false'
3010 message('Not compiling @0@ because tests is set to false'.format(name))
3011 elif slow_tests
3012 exe = custom_target(
3013 name,
3014 output : name,
3015 depends : build,
3016 command : [env, 'ln', '-fs',
3017 join_paths(build.full_path(), b),
3018 '@OUTPUT@'],
3019 build_by_default : true)
3020 else
3021 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3022 endif
3023 endif
3024 prev = name
3025
3026 if want_tests != 'false' and slow_tests
3027 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3028 env,
3029 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003030 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003031 endif
3032 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003033 endif
3034endforeach
3035
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003036
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003037############################################################
3038
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003039if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003040 all_files = run_command(
3041 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003042 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003043 'ls-files',
3044 ':/*.[ch]'])
3045 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003046
userwithuide85a6902017-08-09 13:41:44 +00003047 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003048 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003049 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003050 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003051 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003052 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003053 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003054endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003055
3056if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003057 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003058 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003059 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003060 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003061endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003062
3063if git.found()
3064 git_head = run_command(
3065 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003066 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003067 'rev-parse', 'HEAD']).stdout().strip()
3068 git_head_short = run_command(
3069 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003070 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003071 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3072
3073 run_target(
3074 'git-snapshot',
3075 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003076 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003077 git_head_short),
3078 '--prefix', 'systemd-@0@/'.format(git_head),
3079 'HEAD'])
3080endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003081
3082############################################################
3083
Lennart Poettering51b13862017-12-20 12:51:14 +01003084meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3085run_target(
3086 'check-api-docs',
3087 depends : [man, libsystemd, libudev],
3088 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3089
3090############################################################
3091
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092status = [
3093 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3094
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003095 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003096 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003097 'prefix directory: @0@'.format(prefixdir),
3098 'rootprefix directory: @0@'.format(rootprefixdir),
3099 'sysconf directory: @0@'.format(sysconfdir),
3100 'include directory: @0@'.format(includedir),
3101 'lib directory: @0@'.format(libdir),
3102 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 'SysV init scripts: @0@'.format(sysvinit_path),
3104 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003105 'PAM modules directory: @0@'.format(pamlibdir),
3106 'PAM configuration directory: @0@'.format(pamconfdir),
3107 'RPM macros directory: @0@'.format(rpmmacrosdir),
3108 'modprobe.d directory: @0@'.format(modprobedir),
3109 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3110 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3111 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3112 'bash completions directory: @0@'.format(bashcompletiondir),
3113 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 'extra start script: @0@'.format(get_option('rc-local')),
3115 'extra stop script: @0@'.format(get_option('halt-local')),
3116 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3117 get_option('debug-tty')),
3118 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003119 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120 'maximum system UID: @0@'.format(system_uid_max),
3121 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003122 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3123 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3124 'minimum container UID base: @0@'.format(container_uid_base_min),
3125 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003126 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003127 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003128 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003130 'nobody user name: @0@'.format(nobody_user),
3131 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003132 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003133 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134
3135 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003136 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003137 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003138 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003139 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3140 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003141
3142alt_dns_servers = '\n '.join(dns_servers.split(' '))
3143alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3144status += [
3145 'default DNS servers: @0@'.format(alt_dns_servers),
3146 'default NTP servers: @0@'.format(alt_ntp_servers)]
3147
3148alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3149 '@@0@'.format(time_epoch)).stdout().strip()
3150status += [
3151 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3152
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003153status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003154 'static libsystemd: @0@'.format(static_libsystemd),
3155 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003156
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003157# TODO:
3158# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3159# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3160# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3161
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003162if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003163 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003164
3165 if have_gnu_efi
3166 status += [
3167 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003168 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003169 'EFI lib directory: @0@'.format(efi_libdir),
3170 'EFI lds directory: @0@'.format(efi_ldsdir),
3171 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 endif
3173endif
3174
3175found = []
3176missing = []
3177
3178foreach tuple : [
3179 ['libcryptsetup'],
3180 ['PAM'],
3181 ['AUDIT'],
3182 ['IMA'],
3183 ['AppArmor'],
3184 ['SELinux'],
3185 ['SECCOMP'],
3186 ['SMACK'],
3187 ['zlib'],
3188 ['xz'],
3189 ['lz4'],
3190 ['bzip2'],
3191 ['ACL'],
3192 ['gcrypt'],
3193 ['qrencode'],
3194 ['microhttpd'],
3195 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003196 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003197 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003198 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003199 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 ['libidn'],
3201 ['libiptc'],
3202 ['elfutils'],
3203 ['binfmt'],
3204 ['vconsole'],
3205 ['quotacheck'],
3206 ['tmpfiles'],
3207 ['environment.d'],
3208 ['sysusers'],
3209 ['firstboot'],
3210 ['randomseed'],
3211 ['backlight'],
3212 ['rfkill'],
3213 ['logind'],
3214 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003215 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003216 ['importd'],
3217 ['hostnamed'],
3218 ['timedated'],
3219 ['timesyncd'],
3220 ['localed'],
3221 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003222 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003223 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3224 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003225 ['coredump'],
3226 ['polkit'],
3227 ['legacy pkla', install_polkit_pkla],
3228 ['efi'],
3229 ['gnu-efi', have_gnu_efi],
3230 ['kmod'],
3231 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003232 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233 ['blkid'],
3234 ['dbus'],
3235 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003236 ['nss-myhostname'],
3237 ['nss-mymachines'],
3238 ['nss-resolve'],
3239 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 ['hwdb'],
3241 ['tpm'],
3242 ['man pages', want_man],
3243 ['html pages', want_html],
3244 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245 ['SysV compat'],
3246 ['utmp'],
3247 ['ldconfig'],
3248 ['hibernate'],
3249 ['adm group', get_option('adm-group')],
3250 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003251 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003252 ['debug hashmap'],
3253 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003254 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003255 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003256 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003257 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003258 ['link-udev-shared', get_option('link-udev-shared')],
3259 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003260]
3261
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003262 if tuple.length() >= 2
3263 cond = tuple[1]
3264 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003265 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3266 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003267 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003268 endif
3269 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003270 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003271 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003272 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003273 endif
3274endforeach
3275
3276status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003277 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003278 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003279 '',
3280 'disabled features: @0@'.format(', '.join(missing)),
3281 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003282message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003283
3284if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003285 warning('\n' +
3286 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3287 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3288 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003289endif