blob: 8554015e67f04b2abac51dd2387d70e0fee47142 [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-Szmek064605e2019-01-10 22:29:01 +01004 version : '241',
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
Zbigniew Jędrzejewski-Szmek064605e2019-01-10 22:29:01 +010015libsystemd_version = '0.25.0'
16libudev_version = '1.6.13'
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
386add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900387add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900388
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800389if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390 #include <time.h>
391 #include <inttypes.h>
392 typedef uint64_t usec_t;
393 usec_t now(clockid_t clock);
394 int main(void) {
395 struct timespec now;
396 return 0;
397 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100398''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400399 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endif
401
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200402cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400403
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404#####################################################################
405# compilation result tests
406
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400407conf.set('_GNU_SOURCE', true)
408conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400409
410conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
416conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
417
418decl_headers = '''
419#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100420#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422
423foreach decl : ['char16_t',
424 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100425 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400427
428 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200429 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
430
431 if decl == 'struct statx'
432 if have
433 want_linux_stat_h = false
434 else
435 have = cc.sizeof(decl,
436 prefix : decl_headers + '#include <linux/stat.h>',
437 args : '-D_GNU_SOURCE') > 0
438 want_linux_stat_h = have
439 endif
440 endif
441
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200442 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443endforeach
444
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200445conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700446
Yu Watanabe9714c022018-12-02 16:27:02 +0100447foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900448 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
449 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
450 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
451 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
452 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100453 ['FRA_TUN_ID', 'linux/fib_rules.h'],
454 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100455 ['FRA_PAD', 'linux/fib_rules.h'],
456 ['FRA_L3MDEV', 'linux/fib_rules.h'],
457 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
458 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
459 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
460 ['FOU_CMD_GET', 'linux/fou.h'],
461 ['IFA_FLAGS', 'linux/if_addr.h'],
462 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
463 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
464 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
465 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
466 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
467 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
468 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
469 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
470 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
471 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
472 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
473 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
474 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
475 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
476 ['IFLA_PAD', 'linux/if_link.h'],
477 ['IFLA_XDP', 'linux/if_link.h'],
478 ['IFLA_EVENT', 'linux/if_link.h'],
479 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
480 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
481 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
482 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100483 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100484 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
485 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
486 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
487 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
488 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
489 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
490 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
491 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
492 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
493 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
494 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
495 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
496 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
497 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
498 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
499 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
500 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
501 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
502 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
503 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
504 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
505 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
506 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
507 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
508 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
509 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
510 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
511 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
512 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
513 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
514 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
515 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
516 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
517 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
518 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
519 # if_tunnel.h is buggy and cannot be included on its own
520 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
521 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
522 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
523 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
524 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
527 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
528 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
529 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
530 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532 prefix = decl.length() > 2 ? decl[2] : ''
533 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200534 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535endforeach
536
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200538 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539endforeach
540
541foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100542 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100543 ['gettid', '''#include <sys/types.h>
544 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100545 ['pivot_root', '''#include <stdlib.h>
546 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100547 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400548 #include <sys/stat.h>
549 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100550 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100551 ['renameat2', '''#include <stdio.h>
552 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400553 ['kcmp', '''#include <linux/kcmp.h>'''],
554 ['keyctl', '''#include <sys/types.h>
555 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100556 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400557 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200558 ['bpf', '''#include <sys/syscall.h>
559 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100560 ['statx', '''#include <sys/types.h>
561 #include <sys/stat.h>
562 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100563 ['explicit_bzero' , '''#include <string.h>'''],
564 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400565]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566
Lennart Poettering85db59b2017-12-25 12:01:14 +0100567 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200568 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endforeach
570
Lennart Poettering85db59b2017-12-25 12:01:14 +0100571if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200572 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200573 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400574else
575 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200576 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200577 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400578endif
579
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580#####################################################################
581
Davide Cavalca1485aac2019-02-27 11:19:07 -0500582vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
583 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100584 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100585 meson.project_version()]
586
Louis Taylord1084aa2019-01-21 21:45:36 +0000587version_h = vcs_tag(
588 input : 'src/version/version.h.in',
589 output : 'version.h',
590 command: vcs_tagger)
591
592versiondep = declare_dependency(sources: version_h)
593
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400596m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400598git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100599env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100600perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601
Davide Cavalca1485aac2019-02-27 11:19:07 -0500602meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400603mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400604test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
605splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400606
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
608# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500609progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611 ['kmod', '/usr/bin/kmod' ],
612 ['kexec', '/usr/sbin/kexec' ],
613 ['sulogin', '/usr/sbin/sulogin' ],
614 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
615 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
616 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
617 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
618 ]
619foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 path = get_option(prog[0] + '-path')
621 if path != ''
622 message('Using @1@ for @0@'.format(prog[0], path))
623 else
624 exe = find_program(prog[0],
625 '/usr/sbin/' + prog[0],
626 '/sbin/' + prog[0],
627 required: false)
628 path = exe.found() ? exe.path() : prog[1]
629 endif
630 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
631 conf.set_quoted(name, path)
632 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633endforeach
634
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500635conf.set_quoted('TELINIT', get_option('telinit-path'))
636
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400637if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100638 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400639endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640
641############################################################
642
643gperf = find_program('gperf')
644
645gperf_test_format = '''
646#include <string.h>
647const char * in_word_set(const char *, @0@);
648@1@
649'''
650gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
651gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
652gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
653if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400656 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
657 if cc.compiles(gperf_test)
658 gperf_len_type = 'unsigned'
659 else
660 error('unable to determine gperf len type')
661 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
663message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664conf.set('GPERF_LEN_TYPE', gperf_len_type,
665 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666
667############################################################
668
669if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400670 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100672foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100673 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900674 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675 'linux/memfd.h',
676 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100677 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200678 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679 'valgrind/memcheck.h',
680 'valgrind/valgrind.h',
681 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200683 conf.set10('HAVE_' + header.underscorify().to_upper(),
684 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685endforeach
686
687############################################################
688
689conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400690conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
691gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692
693default_hierarchy = get_option('default-hierarchy')
694conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
695 description : 'default cgroup hierarchy as string')
696if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400697 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400699 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400701 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702endif
703
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100704default_net_naming_scheme = get_option('default-net-naming-scheme')
705conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
706
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900708if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900710 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400711endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400712conf.set('TIME_EPOCH', time_epoch)
713
714system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900715if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400716 system_uid_max = run_command(
717 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800718 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
719 '/etc/login.defs').stdout().strip()
720 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900721 system_uid_max = 999
722 else
723 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800724 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400726conf.set('SYSTEM_UID_MAX', system_uid_max)
727substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400728
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900730if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400731 system_gid_max = run_command(
732 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800733 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
734 '/etc/login.defs').stdout().strip()
735 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900736 system_gid_max = 999
737 else
738 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800739 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741conf.set('SYSTEM_GID_MAX', system_gid_max)
742substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
Yu Watanabeac093402018-05-10 16:04:16 +0900744dynamic_uid_min = get_option('dynamic-uid-min')
745dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100746conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
747conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
748substs.set('dynamicuidmin', dynamic_uid_min)
749substs.set('dynamicuidmax', dynamic_uid_max)
750
Yu Watanabeac093402018-05-10 16:04:16 +0900751container_uid_base_min = get_option('container-uid-base-min')
752container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100753conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
754conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
755substs.set('containeruidbasemin', container_uid_base_min)
756substs.set('containeruidbasemax', container_uid_base_max)
757
Lennart Poetteringafde4572017-12-05 11:00:24 +0100758nobody_user = get_option('nobody-user')
759nobody_group = get_option('nobody-group')
760
Chen Qi2484bff2018-07-23 14:53:09 +0800761if not meson.is_cross_build()
762 getent_result = run_command('getent', 'passwd', '65534')
763 if getent_result.returncode() == 0
764 name = getent_result.stdout().split(':')[0]
765 if name != nobody_user
766 warning('\n' +
767 '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) +
768 'Your build will result in an user table setup that is incompatible with the local system.')
769 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800771 id_result = run_command('id', '-u', nobody_user)
772 if id_result.returncode() == 0
773 id = id_result.stdout().to_int()
774 if id != 65534
775 warning('\n' +
776 '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) +
777 'Your build will result in an user table setup that is incompatible with the local system.')
778 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100779 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100780
Chen Qi2484bff2018-07-23 14:53:09 +0800781 getent_result = run_command('getent', 'group', '65534')
782 if getent_result.returncode() == 0
783 name = getent_result.stdout().split(':')[0]
784 if name != nobody_group
785 warning('\n' +
786 '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) +
787 'Your build will result in an group table setup that is incompatible with the local system.')
788 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100789 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800790 id_result = run_command('id', '-g', nobody_group)
791 if id_result.returncode() == 0
792 id = id_result.stdout().to_int()
793 if id != 65534
794 warning('\n' +
795 '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) +
796 'Your build will result in an group table setup that is incompatible with the local system.')
797 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100798 endif
799endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900800if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900801 warning('\n' +
802 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
803 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900804endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100805
806conf.set_quoted('NOBODY_USER_NAME', nobody_user)
807conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900808substs.set('NOBODY_USER_NAME', nobody_user)
809substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100810
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811tty_gid = get_option('tty-gid')
812conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400813substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814
Ikey Doherty84786b82017-12-03 12:28:23 +0000815# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900816users_gid = get_option('users-gid')
817substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000818
Yu Watanabe348b4432018-05-07 18:17:35 +0900819conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
820conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
Michael Bieblace5e312018-07-13 23:36:13 +0200822dev_kvm_mode = get_option('dev-kvm-mode')
823substs.set('DEV_KVM_MODE', dev_kvm_mode)
824conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100825group_render_mode = get_option('group-render-mode')
826substs.set('GROUP_RENDER_MODE', group_render_mode)
827conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400829kill_user_processes = get_option('default-kill-user-processes')
830conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100831conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400832substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400834dns_servers = get_option('dns-servers')
835conf.set_quoted('DNS_SERVERS', dns_servers)
836substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400838ntp_servers = get_option('ntp-servers')
839conf.set_quoted('NTP_SERVERS', ntp_servers)
840substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841
Dave Reisner8ca9e922018-12-28 07:38:36 -0500842default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900843if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800844 if not meson.is_cross_build()
845 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
846 default_locale = run_command(choose_default_locale_sh).stdout().strip()
847 else
848 default_locale = 'C.UTF-8'
849 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900850endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500851conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
852
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
854
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400855substs.set('SUSHELL', get_option('debug-shell'))
856substs.set('DEBUGTTY', get_option('debug-tty'))
857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858enable_debug_hashmap = false
859enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900860enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900861enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200862foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900863 if name == 'hashmap'
864 enable_debug_hashmap = true
865 elif name == 'mmap-cache'
866 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900867 elif name == 'siphash'
868 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900869 elif name == 'udev'
870 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900871 else
872 message('unknown debug option "@0@", ignoring'.format(name))
873 endif
874endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
876conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900877conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900878conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400879
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200880conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200881conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200882
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883#####################################################################
884
885threads = dependency('threads')
886librt = cc.find_library('rt')
887libm = cc.find_library('m')
888libdl = cc.find_library('dl')
889libcrypt = cc.find_library('crypt')
890
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400891libcap = dependency('libcap', required : false)
892if not libcap.found()
893 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
894 libcap = cc.find_library('cap')
895endif
896
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100898 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500901if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400903 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libselinux = dependency('libselinux',
915 version : '>= 2.1.9',
916 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libapparmor = dependency('libapparmor',
927 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935smack_run_label = get_option('smack-run-label')
936if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
939
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400940want_polkit = get_option('polkit')
941install_polkit = false
942install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libpolkit = dependency('polkit-gobject-1',
947 required : false)
948 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
949 message('Old polkit detected, will install pkla files')
950 install_polkit_pkla = true
951 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400954
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500956if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400961 libacl = []
962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400964
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500976if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libblkid.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 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500986if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libkmod = dependency('libkmod',
988 version : '>= 15',
989 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500998if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libpam = cc.find_library('pam', required : want_pam == 'true')
1000 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libpam = []
1005 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001010if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libmicrohttpd = dependency('libmicrohttpd',
1012 version : '>= 0.9.33',
1013 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001022if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libcryptsetup = dependency('libcryptsetup',
1024 version : '>= 1.6.0',
1025 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001027 have_sector = cc.has_member(
1028 'struct crypt_params_plain',
1029 'sector_size',
1030 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001033 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001037conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
1039want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libcurl = dependency('libcurl',
1042 version : '>= 7.32.0',
1043 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
1051want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001052want_libidn2 = get_option('libidn2')
1053if want_libidn == 'true' and want_libidn2 == 'true'
1054 error('libidn and libidn2 cannot be requested simultaneously')
1055endif
1056
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001057if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libidn = dependency('libidn',
1059 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001063 libidn = []
1064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001067 # libidn is used for both libidn and libidn2 objects
1068 libidn = dependency('libidn2',
1069 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = libidn.found()
1071else
1072 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libiptc = dependency('libiptc',
1079 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
1087want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libqrencode = dependency('libqrencode',
1090 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001099if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1101 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
1105endif
1106if not have
1107 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001108 libgcrypt = []
1109 libgpg_error = []
1110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001114if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libgnutls = dependency('gnutls',
1116 version : '>= 3.1.4',
1117 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001125want_openssl = get_option('openssl')
1126if want_openssl != 'false' and not fuzzer_build
1127 libopenssl = dependency('openssl',
1128 version : '>= 1.1.0',
1129 required : want_openssl == 'true')
1130 have = libopenssl.found()
1131else
1132 have = false
1133 libopenssl = []
1134endif
1135conf.set10('HAVE_OPENSSL', have)
1136
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libdw = dependency('libdw',
1140 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147
1148want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001149if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libz = dependency('zlib',
1151 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158
1159want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libbzip2 = cc.find_library('bz2',
1162 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169
1170want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001171if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 libxz = dependency('liblzma',
1173 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180
1181want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001182if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001184 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001193want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001194if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001195 libxkbcommon = dependency('xkbcommon',
1196 version : '>= 0.3.0',
1197 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001199else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001201 libxkbcommon = []
1202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001204
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001205want_pcre2 = get_option('pcre2')
1206if want_pcre2 != 'false'
1207 libpcre2 = dependency('libpcre2-8',
1208 required : want_pcre2 == 'true')
1209 have = libpcre2.found()
1210else
1211 have = false
1212 libpcre2 = []
1213endif
1214conf.set10('HAVE_PCRE2', have)
1215
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001217if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 libglib = dependency('glib-2.0',
1219 version : '>= 2.22.0',
1220 required : want_glib == 'true')
1221 libgobject = dependency('gobject-2.0',
1222 version : '>= 2.22.0',
1223 required : want_glib == 'true')
1224 libgio = dependency('gio-2.0',
1225 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001226 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 libglib = []
1230 libgobject = []
1231 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001232endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234
1235want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001236if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 libdbus = dependency('dbus-1',
1238 version : '>= 1.3.2',
1239 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001241else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246
Yu Watanabe42303dc2017-06-18 05:22:32 +09001247default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001248if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001249 default_dnssec = 'no'
1250endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001252 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1253 default_dnssec = 'no'
1254endif
1255conf.set('DEFAULT_DNSSEC_MODE',
1256 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1257substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1258
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001259dns_over_tls = get_option('dns-over-tls')
1260if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001261 if dns_over_tls == 'openssl'
1262 have_gnutls = false
1263 else
1264 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1265 if dns_over_tls == 'gnutls' and not have_gnutls
1266 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1267 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001268 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001269 if dns_over_tls == 'gnutls' or have_gnutls
1270 have_openssl = false
1271 else
1272 have_openssl = conf.get('HAVE_OPENSSL') == 1
1273 if dns_over_tls != 'auto' and not have_openssl
1274 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1275 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1276 endif
1277 endif
1278 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001279else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001280 have = false
1281 have_gnutls = false
1282 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001283endif
1284conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001285conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1286conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001287
Iwan Timmerc9299be2018-06-13 20:26:24 +02001288default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001289if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001290 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001291endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001292if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1293 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 +02001294 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001295endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001296conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1297 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1298substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001299
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001301if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001302 have = (conf.get('HAVE_LIBCURL') == 1 and
1303 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001304 conf.get('HAVE_XZ') == 1 and
1305 conf.get('HAVE_GCRYPT') == 1)
1306 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 error('importd support was requested, but dependencies are not available')
1308 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001309else
1310 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001312conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313
1314want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001315if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001316 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1317 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1319 # it's possible to build one without the other. Complain only if
1320 # support was explictly requested. The auxiliary files like sysusers
1321 # config should be installed when any of the programs are built.
1322 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1323 error('remote support was requested, but dependencies are not available')
1324 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001325 have = have_deps[0] or have_deps[1]
1326else
1327 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001331foreach term : ['utmp',
1332 'hibernate',
1333 'environment-d',
1334 'binfmt',
1335 'coredump',
1336 'resolve',
1337 'logind',
1338 'hostnamed',
1339 'localed',
1340 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001341 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001342 'networkd',
1343 'timedated',
1344 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001345 'firstboot',
1346 'randomseed',
1347 'backlight',
1348 'vconsole',
1349 'quotacheck',
1350 'sysusers',
1351 'tmpfiles',
1352 'hwdb',
1353 'rfkill',
1354 'ldconfig',
1355 'efi',
1356 'tpm',
1357 'ima',
1358 'smack',
1359 'gshadow',
1360 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001361 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001362 'nss-systemd']
1363 have = get_option(term)
1364 name = 'ENABLE_' + term.underscorify().to_upper()
1365 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366endforeach
1367
Yu Watanabe08540a92018-07-18 09:25:57 +09001368foreach tuple : [['nss-mymachines', 'machined'],
1369 ['nss-resolve', 'resolve']]
1370 want = get_option(tuple[0])
1371 if want != 'false'
1372 have = get_option(tuple[1])
1373 if want == 'true' and not have
1374 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1375 endif
1376 else
1377 have = false
1378 endif
1379 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1380 conf.set10(name, have)
1381endforeach
1382
1383enable_nss = false
1384foreach term : ['ENABLE_NSS_MYHOSTNAME',
1385 'ENABLE_NSS_MYMACHINES',
1386 'ENABLE_NSS_RESOLVE',
1387 'ENABLE_NSS_SYSTEMD']
1388 if conf.get(term) == 1
1389 enable_nss = true
1390 endif
1391endforeach
1392conf.set10('ENABLE_NSS', enable_nss)
1393
Yu Watanabe348b4432018-05-07 18:17:35 +09001394conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001395
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001396tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001397fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001398
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001399conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001400
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401#####################################################################
1402
1403if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001405
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001406 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001408 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 elif efi_arch == 'x86_64'
1410 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001411 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 elif efi_arch == 'arm'
1413 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001414 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 elif efi_arch == 'aarch64'
1416 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001417 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 else
1419 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001420 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001423 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001425
Yu Watanabeac093402018-05-10 16:04:16 +09001426 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001427else
1428 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001430conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431
1432#####################################################################
1433
1434config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001435 output : 'config.h',
1436 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437
Yu Watanabe348b4432018-05-07 18:17:35 +09001438meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1439
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440includes = include_directories('src/basic',
1441 'src/shared',
1442 'src/systemd',
1443 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001444 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001445 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446 'src/resolve',
1447 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001448 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449 'src/login',
1450 'src/udev',
1451 'src/libudev',
1452 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001453 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454 'src/libsystemd/sd-bus',
1455 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001456 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457 'src/libsystemd/sd-hwdb',
1458 'src/libsystemd/sd-id128',
1459 'src/libsystemd/sd-netlink',
1460 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001461 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001463 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464
1465add_project_arguments('-include', 'config.h', language : 'c')
1466
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001467generate_gperfs = find_program('tools/generate-gperfs.py')
1468
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469subdir('po')
1470subdir('catalog')
1471subdir('src/systemd')
1472subdir('src/basic')
1473subdir('src/libsystemd')
1474subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
1478libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 'journal-core',
1480 libjournal_core_sources,
1481 journald_gperf_c,
1482 include_directories : includes,
1483 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484
Davide Cavalca1485aac2019-02-27 11:19:07 -05001485libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001488 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001489 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 include_directories : includes,
1491 link_args : ['-shared',
1492 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001493 link_with : [libbasic,
1494 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001495 link_whole : [libsystemd_static,
1496 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 dependencies : [threads,
1498 librt,
1499 libxz,
1500 liblz4],
1501 link_depends : libsystemd_sym,
1502 install : true,
1503 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504
Davide Cavalca70848ec2018-04-09 02:43:35 -07001505static_libsystemd = get_option('static-libsystemd')
1506static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1507
1508install_libsystemd_static = static_library(
1509 'systemd',
1510 libsystemd_sources,
1511 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001512 basic_sources,
1513 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001514 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001515 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001516 build_by_default : static_libsystemd != 'false',
1517 install : static_libsystemd != 'false',
1518 install_dir : rootlibdir,
1519 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1520 dependencies : [threads,
1521 librt,
1522 libxz,
1523 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001524 libcap,
1525 libblkid,
1526 libmount,
1527 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001528 libgcrypt],
1529 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1530
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531############################################################
1532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001533# binaries that have --help and are intended for use by humans,
1534# usually, but not always, installed in /bin.
1535public_programs = []
1536
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537subdir('src/libudev')
1538subdir('src/shared')
1539subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001540subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541subdir('src/udev')
1542subdir('src/network')
1543
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001544subdir('src/analyze')
1545subdir('src/journal-remote')
1546subdir('src/coredump')
1547subdir('src/hostname')
1548subdir('src/import')
1549subdir('src/kernel-install')
1550subdir('src/locale')
1551subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001552subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001553subdir('src/nspawn')
1554subdir('src/resolve')
1555subdir('src/timedate')
1556subdir('src/timesync')
1557subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001558subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001559
1560subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001561subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001562subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001563subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001564
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001565############################################################
1566
1567# only static linking apart from libdl, to make sure that the
1568# module is linked to all libraries that it uses.
1569test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 'test-dlopen',
1571 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001572 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 include_directories : includes,
1574 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001575 dependencies : [libdl],
1576 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001577
Yu Watanabe08540a92018-07-18 09:25:57 +09001578foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001579 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001580 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1581 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001582
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001583 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 if condition
1585 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001586
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001588 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001589
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 nss = shared_library(
1591 'nss_' + module,
1592 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001593 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 version : '2',
1595 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001596 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1597 link_args : ['-Wl,-z,nodelete',
1598 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 '-Wl,--version-script=' + version_script_arg,
1600 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001601 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 libbasic],
1603 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001604 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001605 link_depends : sym,
1606 install : true,
1607 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001608
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 # We cannot use shared_module because it does not support version suffix.
1610 # Unfortunately shared_library insists on creating the symlink…
1611 meson.add_install_script('sh', '-c',
1612 'rm $DESTDIR@0@/libnss_@1@.so'
1613 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001614
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001615 if want_tests != 'false'
1616 test('dlopen-nss_' + module,
1617 test_dlopen,
1618 # path to dlopen must include a slash
1619 args : nss.full_path())
1620 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001622endforeach
1623
1624############################################################
1625
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626executable('systemd',
1627 systemd_sources,
1628 include_directories : includes,
1629 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001630 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001631 dependencies : [versiondep,
1632 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633 librt,
1634 libseccomp,
1635 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001636 libmount,
1637 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001638 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639 install : true,
1640 install_dir : rootlibexecdir)
1641
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001642meson.add_install_script(meson_make_symlink,
1643 join_paths(rootlibexecdir, 'systemd'),
1644 join_paths(rootsbindir, 'init'))
1645
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001646exe = executable('systemd-analyze',
1647 systemd_analyze_sources,
1648 include_directories : includes,
1649 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001650 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001651 dependencies : [versiondep,
1652 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001653 librt,
1654 libseccomp,
1655 libselinux,
1656 libmount,
1657 libblkid],
1658 install_rpath : rootlibexecdir,
1659 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001660public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661
1662executable('systemd-journald',
1663 systemd_journald_sources,
1664 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001665 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001666 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667 dependencies : [threads,
1668 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001669 liblz4,
1670 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001671 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672 install : true,
1673 install_dir : rootlibexecdir)
1674
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675exe = executable('systemd-cat',
1676 systemd_cat_sources,
1677 include_directories : includes,
1678 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001679 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 dependencies : [threads],
1681 install_rpath : rootlibexecdir,
1682 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001683public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001685exe = executable('journalctl',
1686 journalctl_sources,
1687 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001688 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001689 dependencies : [threads,
1690 libqrencode,
1691 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001692 liblz4,
1693 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694 install_rpath : rootlibexecdir,
1695 install : true,
1696 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001697public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698
1699executable('systemd-getty-generator',
1700 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001702 link_with : [libshared],
1703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706
1707executable('systemd-debug-generator',
1708 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001710 link_with : [libshared],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001715executable('systemd-run-generator',
1716 'src/run-generator/run-generator.c',
1717 include_directories : includes,
1718 link_with : [libshared],
1719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : systemgeneratordir)
1722
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723executable('systemd-fstab-generator',
1724 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001726 link_with : [libcore_shared,
1727 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001732if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001733 executable('30-systemd-environment-d-generator',
1734 'src/environment-d-generator/environment-d-generator.c',
1735 include_directories : includes,
1736 link_with : [libshared],
1737 install_rpath : rootlibexecdir,
1738 install : true,
1739 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001740
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 meson.add_install_script(meson_make_symlink,
1742 join_paths(sysconfdir, 'environment'),
1743 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744endif
1745
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001746if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 executable('systemd-hibernate-resume-generator',
1748 'src/hibernate-resume/hibernate-resume-generator.c',
1749 include_directories : includes,
1750 link_with : [libshared],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 executable('systemd-hibernate-resume',
1756 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001757 include_directories : includes,
1758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762endif
1763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 executable('systemd-gpt-auto-generator',
1766 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001767 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001769 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 dependencies : libblkid,
1771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : systemgeneratordir)
1774
1775 exe = executable('systemd-dissect',
1776 'src/dissect/dissect.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001782 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783endif
1784
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001785if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 executable('systemd-resolved',
1787 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001788 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001789 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001790 libbasic_gcrypt,
1791 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001792 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001793 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 install : true,
1795 install_dir : rootlibexecdir)
1796
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001797 exe = executable('resolvectl',
1798 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001800 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001801 libbasic_gcrypt,
1802 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001804 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 libm,
1806 libidn],
1807 install_rpath : rootlibexecdir,
1808 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001809 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001810
1811 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001812 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001813 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001814
1815 meson.add_install_script(meson_make_symlink,
1816 join_paths(bindir, 'resolvectl'),
1817 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818endif
1819
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001820if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 executable('systemd-logind',
1822 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001823 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001825 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001826 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001828 install_rpath : rootlibexecdir,
1829 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001831
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 exe = executable('loginctl',
1833 loginctl_sources,
1834 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001835 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 dependencies : [threads,
1837 liblz4,
1838 libxz],
1839 install_rpath : rootlibexecdir,
1840 install : true,
1841 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001842 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001843
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 exe = executable('systemd-inhibit',
1845 'src/login/inhibit.c',
1846 include_directories : includes,
1847 link_with : [libshared],
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-Szmek83b6af32017-04-14 20:10:28 -04001852
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001853 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001854 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855 pam_systemd = shared_library(
1856 'pam_systemd',
1857 pam_systemd_c,
1858 name_prefix : '',
1859 include_directories : includes,
1860 link_args : ['-shared',
1861 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001862 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 libshared_static],
1864 dependencies : [threads,
1865 libpam,
1866 libpam_misc],
1867 link_depends : pam_systemd_sym,
1868 install : true,
1869 install_dir : pamlibdir)
1870
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001871 if want_tests != 'false'
1872 test('dlopen-pam_systemd',
1873 test_dlopen,
1874 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001875 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001876 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001879 executable('systemd-user-runtime-dir',
1880 user_runtime_dir_sources,
1881 include_directories : includes,
1882 link_with : [libshared],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
1886endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001887
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001888if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 executable('systemd-user-sessions',
1890 'src/user-sessions/user-sessions.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896endif
1897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001898if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 exe = executable('bootctl',
1900 'src/boot/bootctl.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [libblkid],
1904 install_rpath : rootlibexecdir,
1905 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001906 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001907
1908 executable('systemd-bless-boot',
1909 'src/boot/bless-boot.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [libblkid],
1913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001916
1917 executable('systemd-bless-boot-generator',
1918 'src/boot/bless-boot-generator.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001924endif
1925
Lennart Poetteringf876f532018-06-25 16:07:33 +02001926executable('systemd-boot-check-no-failures',
1927 'src/boot/boot-check-no-failures.c',
1928 include_directories : includes,
1929 link_with : [libshared],
1930 dependencies : [libblkid],
1931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : rootlibexecdir)
1934
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001935exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1936 include_directories : includes,
1937 link_with : [libshared],
1938 dependencies : [threads],
1939 install_rpath : rootlibexecdir,
1940 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001941public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001942
Felipe Satelerf3794362018-05-22 15:08:57 -04001943
1944if get_option('link-systemctl-shared')
1945 systemctl_link_with = [libshared]
1946else
1947 systemctl_link_with = [libsystemd_static,
1948 libshared_static,
1949 libjournal_client,
1950 libbasic_gcrypt]
1951endif
1952
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001953exe = executable('systemctl', 'src/systemctl/systemctl.c',
1954 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001955 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001956 dependencies : [threads,
1957 libcap,
1958 libselinux,
1959 libxz,
1960 liblz4],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001964public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001965
Lennart Poettering61d05782018-04-16 21:41:40 +02001966if conf.get('ENABLE_PORTABLED') == 1
1967 executable('systemd-portabled',
1968 systemd_portabled_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 dependencies : [threads],
1972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : rootlibexecdir)
1975
1976 exe = executable('portablectl', 'src/portable/portablectl.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 dependencies : [threads],
1980 install_rpath : rootlibexecdir,
1981 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001982 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001983 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001984endif
1985
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001986foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1987 meson.add_install_script(meson_make_symlink,
1988 join_paths(rootbindir, 'systemctl'),
1989 join_paths(rootsbindir, alias))
1990endforeach
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 executable('systemd-backlight',
1994 'src/backlight/backlight.c',
1995 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001996 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 install_rpath : rootlibexecdir,
1998 install : true,
1999 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000endif
2001
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002002if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002003 executable('systemd-rfkill',
2004 'src/rfkill/rfkill.c',
2005 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002006 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 install_rpath : rootlibexecdir,
2008 install : true,
2009 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010endif
2011
2012executable('systemd-system-update-generator',
2013 'src/system-update-generator/system-update-generator.c',
2014 include_directories : includes,
2015 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002016 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002017 install : true,
2018 install_dir : systemgeneratordir)
2019
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002020if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 executable('systemd-cryptsetup',
2022 'src/cryptsetup/cryptsetup.c',
2023 include_directories : includes,
2024 link_with : [libshared],
2025 dependencies : [libcryptsetup],
2026 install_rpath : rootlibexecdir,
2027 install : true,
2028 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 executable('systemd-cryptsetup-generator',
2031 'src/cryptsetup/cryptsetup-generator.c',
2032 include_directories : includes,
2033 link_with : [libshared],
2034 dependencies : [libcryptsetup],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002038
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 executable('systemd-veritysetup',
2040 'src/veritysetup/veritysetup.c',
2041 include_directories : includes,
2042 link_with : [libshared],
2043 dependencies : [libcryptsetup],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002047
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 executable('systemd-veritysetup-generator',
2049 'src/veritysetup/veritysetup-generator.c',
2050 include_directories : includes,
2051 link_with : [libshared],
2052 dependencies : [libcryptsetup],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056endif
2057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002058if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 executable('systemd-sysv-generator',
2060 'src/sysv-generator/sysv-generator.c',
2061 include_directories : includes,
2062 link_with : [libshared],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 executable('systemd-rc-local-generator',
2068 'src/rc-local-generator/rc-local-generator.c',
2069 include_directories : includes,
2070 link_with : [libshared],
2071 install_rpath : rootlibexecdir,
2072 install : true,
2073 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074endif
2075
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002076if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 executable('systemd-hostnamed',
2078 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002080 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 install : true,
2083 install_dir : rootlibexecdir)
2084
2085 exe = executable('hostnamectl',
2086 'src/hostname/hostnamectl.c',
2087 include_directories : includes,
2088 link_with : [libshared],
2089 install_rpath : rootlibexecdir,
2090 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002091 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002092endif
2093
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002094if conf.get('ENABLE_LOCALED') == 1
2095 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 # logind will load libxkbcommon.so dynamically on its own
2097 deps = [libdl]
2098 else
2099 deps = []
2100 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002101
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002102 executable('systemd-localed',
2103 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002104 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002105 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002107 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108 install : true,
2109 install_dir : rootlibexecdir)
2110
2111 exe = executable('localectl',
2112 localectl_sources,
2113 include_directories : includes,
2114 link_with : [libshared],
2115 install_rpath : rootlibexecdir,
2116 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002117 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002118endif
2119
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002120if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 executable('systemd-timedated',
2122 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002123 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002124 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002128endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129
Yu Watanabe6129ec82018-05-03 18:07:43 +09002130if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002131 exe = executable('timedatectl',
2132 'src/timedate/timedatectl.c',
2133 include_directories : includes,
2134 install_rpath : rootlibexecdir,
2135 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002136 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002138 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139endif
2140
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002141if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 executable('systemd-timesyncd',
2143 systemd_timesyncd_sources,
2144 include_directories : includes,
2145 link_with : [libshared],
2146 dependencies : [threads,
2147 libm],
2148 install_rpath : rootlibexecdir,
2149 install : true,
2150 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002151
2152 executable('systemd-time-wait-sync',
2153 'src/time-wait-sync/time-wait-sync.c',
2154 include_directories : includes,
2155 link_with : [libshared],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159endif
2160
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002161if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 executable('systemd-machined',
2163 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002164 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002165 link_with : [libmachine_core,
2166 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167 install_rpath : rootlibexecdir,
2168 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 install_dir : rootlibexecdir)
2170
2171 exe = executable('machinectl',
2172 'src/machine/machinectl.c',
2173 include_directories : includes,
2174 link_with : [libshared],
2175 dependencies : [threads,
2176 libxz,
2177 liblz4],
2178 install_rpath : rootlibexecdir,
2179 install : true,
2180 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002181 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182endif
2183
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002184if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 executable('systemd-importd',
2186 systemd_importd_sources,
2187 include_directories : includes,
2188 link_with : [libshared],
2189 dependencies : [threads],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 systemd_pull = executable('systemd-pull',
2195 systemd_pull_sources,
2196 include_directories : includes,
2197 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002198 dependencies : [versiondep,
2199 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 libz,
2201 libbzip2,
2202 libxz,
2203 libgcrypt],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002208 systemd_import = executable('systemd-import',
2209 systemd_import_sources,
2210 include_directories : includes,
2211 link_with : [libshared],
2212 dependencies : [libcurl,
2213 libz,
2214 libbzip2,
2215 libxz],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002220 systemd_import_fs = executable('systemd-import-fs',
2221 systemd_import_fs_sources,
2222 include_directories : includes,
2223 link_with : [libshared],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : rootlibexecdir)
2227
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 systemd_export = executable('systemd-export',
2229 systemd_export_sources,
2230 include_directories : includes,
2231 link_with : [libshared],
2232 dependencies : [libcurl,
2233 libz,
2234 libbzip2,
2235 libxz],
2236 install_rpath : rootlibexecdir,
2237 install : true,
2238 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002239
2240 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241endif
2242
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002243if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 exe = executable('systemd-journal-upload',
2245 systemd_journal_upload_sources,
2246 include_directories : includes,
2247 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002248 dependencies : [versiondep,
2249 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002250 libcurl,
2251 libgnutls,
2252 libxz,
2253 liblz4],
2254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002257 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258endif
2259
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002260if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 s_j_remote = executable('systemd-journal-remote',
2262 systemd_journal_remote_sources,
2263 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002264 link_with : [libshared,
2265 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 dependencies : [threads,
2267 libmicrohttpd,
2268 libgnutls,
2269 libxz,
2270 liblz4],
2271 install_rpath : rootlibexecdir,
2272 install : true,
2273 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 s_j_gatewayd = executable('systemd-journal-gatewayd',
2276 systemd_journal_gatewayd_sources,
2277 include_directories : includes,
2278 link_with : [libshared],
2279 dependencies : [threads,
2280 libmicrohttpd,
2281 libgnutls,
2282 libxz,
2283 liblz4],
2284 install_rpath : rootlibexecdir,
2285 install : true,
2286 install_dir : rootlibexecdir)
2287 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288endif
2289
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002290if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291 executable('systemd-coredump',
2292 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002293 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002296 libacl,
2297 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 libxz,
2299 liblz4],
2300 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002301 install : true,
2302 install_dir : rootlibexecdir)
2303
2304 exe = executable('coredumpctl',
2305 coredumpctl_sources,
2306 include_directories : includes,
2307 link_with : [libshared],
2308 dependencies : [threads,
2309 libxz,
2310 liblz4],
2311 install_rpath : rootlibexecdir,
2312 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002313 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314endif
2315
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002316if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 exe = executable('systemd-binfmt',
2318 'src/binfmt/binfmt.c',
2319 include_directories : includes,
2320 link_with : [libshared],
2321 install_rpath : rootlibexecdir,
2322 install : true,
2323 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002324 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325
2326 meson.add_install_script('sh', '-c',
2327 mkdir_p.format(binfmtdir))
2328 meson.add_install_script('sh', '-c',
2329 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2330endif
2331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002332if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 executable('systemd-vconsole-setup',
2334 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 include_directories : includes,
2336 link_with : [libshared],
2337 install_rpath : rootlibexecdir,
2338 install : true,
2339 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340endif
2341
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002342if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002343 executable('systemd-random-seed',
2344 'src/random-seed/random-seed.c',
2345 include_directories : includes,
2346 link_with : [libshared],
2347 install_rpath : rootlibexecdir,
2348 install : true,
2349 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350endif
2351
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002352if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002353 executable('systemd-firstboot',
2354 'src/firstboot/firstboot.c',
2355 include_directories : includes,
2356 link_with : [libshared],
2357 dependencies : [libcrypt],
2358 install_rpath : rootlibexecdir,
2359 install : true,
2360 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361endif
2362
2363executable('systemd-remount-fs',
2364 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002366 link_with : [libcore_shared,
2367 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002368 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369 install : true,
2370 install_dir : rootlibexecdir)
2371
2372executable('systemd-machine-id-setup',
2373 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002375 link_with : [libcore_shared,
2376 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002377 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378 install : true,
2379 install_dir : rootbindir)
2380
2381executable('systemd-fsck',
2382 'src/fsck/fsck.c',
2383 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002384 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002385 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386 install : true,
2387 install_dir : rootlibexecdir)
2388
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002389executable('systemd-growfs',
2390 'src/partition/growfs.c',
2391 include_directories : includes,
2392 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002393 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002394 install_rpath : rootlibexecdir,
2395 install : true,
2396 install_dir : rootlibexecdir)
2397
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002398executable('systemd-makefs',
2399 'src/partition/makefs.c',
2400 include_directories : includes,
2401 link_with : [libshared],
2402 install_rpath : rootlibexecdir,
2403 install : true,
2404 install_dir : rootlibexecdir)
2405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406executable('systemd-sleep',
2407 'src/sleep/sleep.c',
2408 include_directories : includes,
2409 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002410 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002411 install : true,
2412 install_dir : rootlibexecdir)
2413
Yu Watanabed25e1272019-01-03 02:32:57 +09002414install_data('src/sleep/sleep.conf',
2415 install_dir : pkgsysconfdir)
2416
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002417exe = executable('systemd-sysctl',
2418 'src/sysctl/sysctl.c',
2419 include_directories : includes,
2420 link_with : [libshared],
2421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002424public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425
2426executable('systemd-ac-power',
2427 'src/ac-power/ac-power.c',
2428 include_directories : includes,
2429 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002430 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431 install : true,
2432 install_dir : rootlibexecdir)
2433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('systemd-detect-virt',
2435 'src/detect-virt/detect-virt.c',
2436 include_directories : includes,
2437 link_with : [libshared],
2438 install_rpath : rootlibexecdir,
2439 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442exe = executable('systemd-delta',
2443 'src/delta/delta.c',
2444 include_directories : includes,
2445 link_with : [libshared],
2446 install_rpath : rootlibexecdir,
2447 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002448public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450exe = executable('systemd-escape',
2451 'src/escape/escape.c',
2452 include_directories : includes,
2453 link_with : [libshared],
2454 install_rpath : rootlibexecdir,
2455 install : true,
2456 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002457public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459exe = executable('systemd-notify',
2460 'src/notify/notify.c',
2461 include_directories : includes,
2462 link_with : [libshared],
2463 install_rpath : rootlibexecdir,
2464 install : true,
2465 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002466public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467
2468executable('systemd-volatile-root',
2469 'src/volatile-root/volatile-root.c',
2470 include_directories : includes,
2471 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002472 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473 install : true,
2474 install_dir : rootlibexecdir)
2475
2476executable('systemd-cgroups-agent',
2477 'src/cgroups-agent/cgroups-agent.c',
2478 include_directories : includes,
2479 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002480 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481 install : true,
2482 install_dir : rootlibexecdir)
2483
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002484exe = executable('systemd-id128',
2485 'src/id128/id128.c',
2486 include_directories : includes,
2487 link_with : [libshared],
2488 install_rpath : rootlibexecdir,
2489 install : true)
2490public_programs += exe
2491
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492exe = executable('systemd-path',
2493 'src/path/path.c',
2494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002495 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496 install_rpath : rootlibexecdir,
2497 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002498public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002499
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002500exe = executable('systemd-ask-password',
2501 'src/ask-password/ask-password.c',
2502 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002503 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504 install_rpath : rootlibexecdir,
2505 install : true,
2506 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002507public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508
2509executable('systemd-reply-password',
2510 'src/reply-password/reply-password.c',
2511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002512 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002513 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002514 install : true,
2515 install_dir : rootlibexecdir)
2516
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517exe = executable('systemd-tty-ask-password-agent',
2518 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2519 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002520 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521 install_rpath : rootlibexecdir,
2522 install : true,
2523 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002524public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002525
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002526exe = executable('systemd-cgls',
2527 'src/cgls/cgls.c',
2528 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002529 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002530 install_rpath : rootlibexecdir,
2531 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002532public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002534exe = executable('systemd-cgtop',
2535 'src/cgtop/cgtop.c',
2536 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002537 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538 install_rpath : rootlibexecdir,
2539 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002540public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541
2542executable('systemd-initctl',
2543 'src/initctl/initctl.c',
2544 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002545 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002546 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547 install : true,
2548 install_dir : rootlibexecdir)
2549
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550exe = executable('systemd-mount',
2551 'src/mount/mount-tool.c',
2552 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002553 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002554 install_rpath : rootlibexecdir,
2555 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002556public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002558meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002559 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002560
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002561exe = executable('systemd-run',
2562 'src/run/run.c',
2563 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002564 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565 install_rpath : rootlibexecdir,
2566 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002567public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569exe = executable('systemd-stdio-bridge',
2570 'src/stdio-bridge/stdio-bridge.c',
2571 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002572 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002573 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002574 install_rpath : rootlibexecdir,
2575 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002576public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002577
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578exe = executable('busctl',
2579 'src/busctl/busctl.c',
2580 'src/busctl/busctl-introspect.c',
2581 'src/busctl/busctl-introspect.h',
2582 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002583 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002584 install_rpath : rootlibexecdir,
2585 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002586public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002588if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 exe = executable('systemd-sysusers',
2590 'src/sysusers/sysusers.c',
2591 include_directories : includes,
2592 link_with : [libshared],
2593 install_rpath : rootlibexecdir,
2594 install : true,
2595 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002596 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597endif
2598
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002599if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600 exe = executable('systemd-tmpfiles',
2601 'src/tmpfiles/tmpfiles.c',
2602 include_directories : includes,
2603 link_with : [libshared],
2604 dependencies : [libacl],
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-Szmekd9daae52017-11-22 14:13:32 +01002609
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002610 if want_tests != 'false'
2611 test('test-systemd-tmpfiles',
2612 test_systemd_tmpfiles_py,
2613 # https://github.com/mesonbuild/meson/issues/2681
2614 args : exe.full_path())
2615 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002616endif
2617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002618if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619 exe = executable('systemd-hwdb',
2620 'src/hwdb/hwdb.c',
2621 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2622 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002623 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002624 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002625 install : true,
2626 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002627 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002628endif
2629
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002630if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002631 executable('systemd-quotacheck',
2632 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002634 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635 install_rpath : rootlibexecdir,
2636 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638endif
2639
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640exe = executable('systemd-socket-proxyd',
2641 'src/socket-proxy/socket-proxyd.c',
2642 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002643 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644 dependencies : [threads],
2645 install_rpath : rootlibexecdir,
2646 install : true,
2647 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002648public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002649
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650exe = executable('systemd-udevd',
2651 systemd_udevd_sources,
2652 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002653 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002654 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002655 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002656 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002657 dependencies : [versiondep,
2658 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002659 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002660 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002661 libacl,
2662 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002663 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002664 install : true,
2665 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002666public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002667
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002668exe = executable('udevadm',
2669 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002670 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002671 include_directories : includes,
2672 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002673 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002674 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002675 dependencies : [versiondep,
2676 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002677 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002678 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002679 libacl,
2680 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002681 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002682 install : true,
2683 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002684public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002685
2686executable('systemd-shutdown',
2687 systemd_shutdown_sources,
2688 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002689 link_with : [libcore_shared,
2690 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002691 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002692 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002693 install : true,
2694 install_dir : rootlibexecdir)
2695
2696executable('systemd-update-done',
2697 'src/update-done/update-done.c',
2698 include_directories : includes,
2699 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002700 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002701 install : true,
2702 install_dir : rootlibexecdir)
2703
2704executable('systemd-update-utmp',
2705 'src/update-utmp/update-utmp.c',
2706 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002707 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002709 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002710 install : true,
2711 install_dir : rootlibexecdir)
2712
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002713if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 executable('systemd-modules-load',
2715 'src/modules-load/modules-load.c',
2716 include_directories : includes,
2717 link_with : [libshared],
2718 dependencies : [libkmod],
2719 install_rpath : rootlibexecdir,
2720 install : true,
2721 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002722
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 meson.add_install_script('sh', '-c',
2724 mkdir_p.format(modulesloaddir))
2725 meson.add_install_script('sh', '-c',
2726 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002727endif
2728
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002729exe = executable('systemd-nspawn',
2730 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002731 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002732 link_with : [libcore_shared,
2733 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002734 libshared],
2735 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002736 install_rpath : rootlibexecdir,
2737 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002738public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002740if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002741 executable('systemd-networkd',
2742 systemd_networkd_sources,
2743 include_directories : includes,
2744 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002746 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002747 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002748 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 install_rpath : rootlibexecdir,
2750 install : true,
2751 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002753 executable('systemd-networkd-wait-online',
2754 systemd_networkd_wait_online_sources,
2755 include_directories : includes,
2756 link_with : [libnetworkd_core,
2757 libshared],
2758 install_rpath : rootlibexecdir,
2759 install : true,
2760 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002761
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002762 exe = executable('networkctl',
2763 networkctl_sources,
2764 include_directories : includes,
2765 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002766 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002767 install_rpath : rootlibexecdir,
2768 install : true,
2769 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002770 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002771endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002772
2773executable('systemd-sulogin-shell',
2774 ['src/sulogin-shell/sulogin-shell.c'],
2775 include_directories : includes,
2776 link_with : [libshared],
2777 install_rpath : rootlibexecdir,
2778 install : true,
2779 install_dir : rootlibexecdir)
2780
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002781############################################################
2782
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002783custom_target(
2784 'systemd-runtest.env',
2785 output : 'systemd-runtest.env',
2786 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002787 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002788 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002789 '} >@OUTPUT@'],
2790 build_by_default : true)
2791
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002792foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 sources = tuple[0]
2794 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2795 dependencies = tuple[2]
2796 condition = tuple.length() >= 4 ? tuple[3] : ''
2797 type = tuple.length() >= 5 ? tuple[4] : ''
2798 defs = tuple.length() >= 6 ? tuple[5] : []
2799 incs = tuple.length() >= 7 ? tuple[6] : includes
2800 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002801
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 name = sources[0].split('/')[-1].split('.')[0]
2803 if type.startswith('timeout=')
2804 timeout = type.split('=')[1].to_int()
2805 type = ''
2806 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002807
2808 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002809 exe = executable(
2810 name,
2811 sources,
2812 include_directories : incs,
2813 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002814 dependencies : [versiondep,
2815 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002817 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002818 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002819 install : install_tests,
2820 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002821
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002822 if type == 'manual'
2823 message('@0@ is a manual test'.format(name))
2824 elif type == 'unsafe' and want_tests != 'unsafe'
2825 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002826 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002827 test(name, exe,
2828 env : test_env,
2829 timeout : timeout)
2830 endif
2831 else
2832 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2833 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002834endforeach
2835
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002836exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002837 'test-libsystemd-sym',
2838 test_libsystemd_sym_c,
2839 include_directories : includes,
2840 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002841 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002842 install : install_tests,
2843 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002844if want_tests != 'false'
2845 test('test-libsystemd-sym', exe)
2846endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002847
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002848exe = executable(
2849 'test-libsystemd-static-sym',
2850 test_libsystemd_sym_c,
2851 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852 link_with : [install_libsystemd_static],
2853 dependencies : [threads], # threads is already included in dependencies on the library,
2854 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002855 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002856 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002857 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002858if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002859 test('test-libsystemd-static-sym', exe)
2860endif
2861
2862exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002863 'test-libudev-sym',
2864 test_libudev_sym_c,
2865 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002866 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002868 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002869 install : install_tests,
2870 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002871if want_tests != 'false'
2872 test('test-libudev-sym', exe)
2873endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002874
2875exe = executable(
2876 'test-libudev-static-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-Szmek0632b4c2018-04-23 13:49:27 +02002880 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002881 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002882 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002883 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002884if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002885 test('test-libudev-static-sym', exe)
2886endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002887
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002888############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002889
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002890fuzzer_exes = []
2891
Michael Olbrich59967402018-11-11 11:27:35 +01002892if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002893foreach tuple : fuzzers
2894 sources = tuple[0]
2895 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2896 dependencies = tuple[2]
2897 defs = tuple.length() >= 4 ? tuple[3] : []
2898 incs = tuple.length() >= 5 ? tuple[4] : includes
2899
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002900 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002901 dependencies += fuzzing_engine
2902 else
2903 sources += 'src/fuzz/fuzz-main.c'
2904 endif
2905
2906 name = sources[0].split('/')[-1].split('.')[0]
2907
2908 fuzzer_exes += executable(
2909 name,
2910 sources,
2911 include_directories : [incs, include_directories('src/fuzz')],
2912 link_with : link_with,
2913 dependencies : dependencies,
2914 c_args : defs,
2915 install : false)
2916endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002917endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002918
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002919run_target('fuzzers',
2920 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002921 command : ['true'])
2922
2923############################################################
2924
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002925make_directive_index_py = find_program('tools/make-directive-index.py')
2926make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002927xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002928hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002929
2930subdir('units')
2931subdir('sysctl.d')
2932subdir('sysusers.d')
2933subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002934subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935subdir('hwdb')
2936subdir('network')
2937subdir('man')
2938subdir('shell-completion/bash')
2939subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002940subdir('docs/sysvinit')
2941subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002943install_subdir('factory/etc',
2944 install_dir : factorydir)
2945
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002946install_data('xorg/50-systemd-user.sh',
2947 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002948install_data('modprobe.d/systemd.conf',
2949 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002950install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002952 'NEWS',
2953 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302954 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002955 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002956 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302957 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002958 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002959 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002960 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002961 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2962 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002963
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002964meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2965meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2966
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002967############################################################
2968
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002969meson_check_help = find_program('tools/meson-check-help.sh')
2970
2971foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002972 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002973 if want_tests != 'false'
2974 test('check-help-' + name,
2975 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002976 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002977 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002978endforeach
2979
2980############################################################
2981
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002982# Enable tests for all supported sanitizers
2983foreach tuple : sanitizers
2984 sanitizer = tuple[0]
2985 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002986
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002987 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002988 prev = ''
2989 foreach p : fuzz_regression_tests
2990 b = p.split('/')[-2]
2991 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002992
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002993 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002994
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002995 if name != prev
2996 if want_tests == 'false'
2997 message('Not compiling @0@ because tests is set to false'.format(name))
2998 elif slow_tests
2999 exe = custom_target(
3000 name,
3001 output : name,
3002 depends : build,
3003 command : [env, 'ln', '-fs',
3004 join_paths(build.full_path(), b),
3005 '@OUTPUT@'],
3006 build_by_default : true)
3007 else
3008 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3009 endif
3010 endif
3011 prev = name
3012
3013 if want_tests != 'false' and slow_tests
3014 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3015 env,
3016 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003017 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003018 endif
3019 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003020 endif
3021endforeach
3022
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003023
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003024############################################################
3025
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003026if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003027 all_files = run_command(
3028 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003029 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003030 'ls-files',
3031 ':/*.[ch]'])
3032 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003033
userwithuide85a6902017-08-09 13:41:44 +00003034 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003035 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003036 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003037 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003038 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003039 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003040 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003041endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003042
3043if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003044 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003045 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003046 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003047 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003048endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003049
3050if git.found()
3051 git_head = run_command(
3052 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003053 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003054 'rev-parse', 'HEAD']).stdout().strip()
3055 git_head_short = run_command(
3056 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003057 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003058 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3059
3060 run_target(
3061 'git-snapshot',
3062 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003063 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003064 git_head_short),
3065 '--prefix', 'systemd-@0@/'.format(git_head),
3066 'HEAD'])
3067endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003068
3069############################################################
3070
Lennart Poettering51b13862017-12-20 12:51:14 +01003071meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3072run_target(
3073 'check-api-docs',
3074 depends : [man, libsystemd, libudev],
3075 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3076
3077############################################################
3078
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079status = [
3080 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3081
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003082 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003083 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003084 'prefix directory: @0@'.format(prefixdir),
3085 'rootprefix directory: @0@'.format(rootprefixdir),
3086 'sysconf directory: @0@'.format(sysconfdir),
3087 'include directory: @0@'.format(includedir),
3088 'lib directory: @0@'.format(libdir),
3089 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003090 'SysV init scripts: @0@'.format(sysvinit_path),
3091 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003092 'PAM modules directory: @0@'.format(pamlibdir),
3093 'PAM configuration directory: @0@'.format(pamconfdir),
3094 'RPM macros directory: @0@'.format(rpmmacrosdir),
3095 'modprobe.d directory: @0@'.format(modprobedir),
3096 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3097 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3098 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3099 'bash completions directory: @0@'.format(bashcompletiondir),
3100 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 'extra start script: @0@'.format(get_option('rc-local')),
3102 'extra stop script: @0@'.format(get_option('halt-local')),
3103 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3104 get_option('debug-tty')),
3105 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003106 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107 'maximum system UID: @0@'.format(system_uid_max),
3108 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003109 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3110 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3111 'minimum container UID base: @0@'.format(container_uid_base_min),
3112 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003114 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003115 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003117 'nobody user name: @0@'.format(nobody_user),
3118 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003119 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003120 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003121
3122 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003123 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003124 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003125 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003126 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3127 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003128
3129alt_dns_servers = '\n '.join(dns_servers.split(' '))
3130alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3131status += [
3132 'default DNS servers: @0@'.format(alt_dns_servers),
3133 'default NTP servers: @0@'.format(alt_ntp_servers)]
3134
3135alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3136 '@@0@'.format(time_epoch)).stdout().strip()
3137status += [
3138 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3139
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003140status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003141 'static libsystemd: @0@'.format(static_libsystemd),
3142 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003143
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144# TODO:
3145# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3146# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3147# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3148
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003149if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003150 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003151
3152 if have_gnu_efi
3153 status += [
3154 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003155 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003156 'EFI lib directory: @0@'.format(efi_libdir),
3157 'EFI lds directory: @0@'.format(efi_ldsdir),
3158 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003159 endif
3160endif
3161
3162found = []
3163missing = []
3164
3165foreach tuple : [
3166 ['libcryptsetup'],
3167 ['PAM'],
3168 ['AUDIT'],
3169 ['IMA'],
3170 ['AppArmor'],
3171 ['SELinux'],
3172 ['SECCOMP'],
3173 ['SMACK'],
3174 ['zlib'],
3175 ['xz'],
3176 ['lz4'],
3177 ['bzip2'],
3178 ['ACL'],
3179 ['gcrypt'],
3180 ['qrencode'],
3181 ['microhttpd'],
3182 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003183 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003185 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003186 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003187 ['libidn'],
3188 ['libiptc'],
3189 ['elfutils'],
3190 ['binfmt'],
3191 ['vconsole'],
3192 ['quotacheck'],
3193 ['tmpfiles'],
3194 ['environment.d'],
3195 ['sysusers'],
3196 ['firstboot'],
3197 ['randomseed'],
3198 ['backlight'],
3199 ['rfkill'],
3200 ['logind'],
3201 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003202 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003203 ['importd'],
3204 ['hostnamed'],
3205 ['timedated'],
3206 ['timesyncd'],
3207 ['localed'],
3208 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003209 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003210 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3211 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 ['coredump'],
3213 ['polkit'],
3214 ['legacy pkla', install_polkit_pkla],
3215 ['efi'],
3216 ['gnu-efi', have_gnu_efi],
3217 ['kmod'],
3218 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003219 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003220 ['blkid'],
3221 ['dbus'],
3222 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003223 ['nss-myhostname'],
3224 ['nss-mymachines'],
3225 ['nss-resolve'],
3226 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227 ['hwdb'],
3228 ['tpm'],
3229 ['man pages', want_man],
3230 ['html pages', want_html],
3231 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003232 ['SysV compat'],
3233 ['utmp'],
3234 ['ldconfig'],
3235 ['hibernate'],
3236 ['adm group', get_option('adm-group')],
3237 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003238 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003239 ['debug hashmap'],
3240 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003241 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003242 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003243 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003244 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003245 ['link-udev-shared', get_option('link-udev-shared')],
3246 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003247]
3248
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003249 if tuple.length() >= 2
3250 cond = tuple[1]
3251 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003252 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3253 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003254 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003255 endif
3256 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003257 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003258 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003259 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003260 endif
3261endforeach
3262
3263status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003264 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003265 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003266 '',
3267 'disabled features: @0@'.format(', '.join(missing)),
3268 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003269message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003270
3271if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003272 warning('\n' +
3273 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3274 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3275 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003276endif