blob: 795ea1f5e4e6b2c17eb2c0d0641322a676bd5345 [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')
Tom Stellard4e15a732017-10-31 08:46:24 -0700825substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400827kill_user_processes = get_option('default-kill-user-processes')
828conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100829conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400830substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400832dns_servers = get_option('dns-servers')
833conf.set_quoted('DNS_SERVERS', dns_servers)
834substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400836ntp_servers = get_option('ntp-servers')
837conf.set_quoted('NTP_SERVERS', ntp_servers)
838substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839
Dave Reisner8ca9e922018-12-28 07:38:36 -0500840default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900841if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800842 if not meson.is_cross_build()
843 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
844 default_locale = run_command(choose_default_locale_sh).stdout().strip()
845 else
846 default_locale = 'C.UTF-8'
847 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900848endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500849conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
850
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
852
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400853substs.set('SUSHELL', get_option('debug-shell'))
854substs.set('DEBUGTTY', get_option('debug-tty'))
855
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856enable_debug_hashmap = false
857enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900858enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900859enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200860foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900861 if name == 'hashmap'
862 enable_debug_hashmap = true
863 elif name == 'mmap-cache'
864 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900865 elif name == 'siphash'
866 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900867 elif name == 'udev'
868 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900869 else
870 message('unknown debug option "@0@", ignoring'.format(name))
871 endif
872endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
874conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900875conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900876conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400877
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200878conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200879conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200880
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881#####################################################################
882
883threads = dependency('threads')
884librt = cc.find_library('rt')
885libm = cc.find_library('m')
886libdl = cc.find_library('dl')
887libcrypt = cc.find_library('crypt')
888
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400889libcap = dependency('libcap', required : false)
890if not libcap.found()
891 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
892 libcap = cc.find_library('cap')
893endif
894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100896 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897
898want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500899if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400901 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909
910want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500911if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libselinux = dependency('libselinux',
913 version : '>= 2.1.9',
914 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921
922want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500923if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libapparmor = dependency('libapparmor',
925 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933smack_run_label = get_option('smack-run-label')
934if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
937
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400938want_polkit = get_option('polkit')
939install_polkit = false
940install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500941if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400943
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libpolkit = dependency('polkit-gobject-1',
945 required : false)
946 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
947 message('Old polkit detected, will install pkla files')
948 install_polkit_pkla = true
949 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400952
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500954if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959 libacl = []
960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400962
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500964if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500974if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982
983want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500984if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libkmod = dependency('libkmod',
986 version : '>= 15',
987 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994
995want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500996if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libpam = cc.find_library('pam', required : want_pam == 'true')
998 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libpam = []
1003 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006
1007want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libmicrohttpd = dependency('libmicrohttpd',
1010 version : '>= 0.9.33',
1011 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001020if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libcryptsetup = dependency('libcryptsetup',
1022 version : '>= 1.6.0',
1023 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001025 have_sector = cc.has_member(
1026 'struct crypt_params_plain',
1027 'sector_size',
1028 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001031 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001035conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036
1037want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001038if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libcurl = dependency('libcurl',
1040 version : '>= 7.32.0',
1041 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048
1049want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001050want_libidn2 = get_option('libidn2')
1051if want_libidn == 'true' and want_libidn2 == 'true'
1052 error('libidn and libidn2 cannot be requested simultaneously')
1053endif
1054
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libidn = dependency('libidn',
1057 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001059else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001061 libidn = []
1062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001065 # libidn is used for both libidn and libidn2 objects
1066 libidn = dependency('libidn2',
1067 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = libidn.found()
1069else
1070 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libiptc = dependency('libiptc',
1077 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libqrencode = dependency('libqrencode',
1088 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1099 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
1103endif
1104if not have
1105 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106 libgcrypt = []
1107 libgpg_error = []
1108endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001112if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libgnutls = dependency('gnutls',
1114 version : '>= 3.1.4',
1115 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001123want_openssl = get_option('openssl')
1124if want_openssl != 'false' and not fuzzer_build
1125 libopenssl = dependency('openssl',
1126 version : '>= 1.1.0',
1127 required : want_openssl == 'true')
1128 have = libopenssl.found()
1129else
1130 have = false
1131 libopenssl = []
1132endif
1133conf.set10('HAVE_OPENSSL', have)
1134
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001136if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libdw = dependency('libdw',
1138 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145
1146want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001147if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libz = dependency('zlib',
1149 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156
1157want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001158if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libbzip2 = cc.find_library('bz2',
1160 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167
1168want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001169if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libxz = dependency('liblzma',
1171 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178
1179want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001180if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001182 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001191want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001192if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001193 libxkbcommon = dependency('xkbcommon',
1194 version : '>= 0.3.0',
1195 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001197else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001199 libxkbcommon = []
1200endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001202
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001203want_pcre2 = get_option('pcre2')
1204if want_pcre2 != 'false'
1205 libpcre2 = dependency('libpcre2-8',
1206 required : want_pcre2 == 'true')
1207 have = libpcre2.found()
1208else
1209 have = false
1210 libpcre2 = []
1211endif
1212conf.set10('HAVE_PCRE2', have)
1213
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001214want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001215if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001216 libglib = dependency('glib-2.0',
1217 version : '>= 2.22.0',
1218 required : want_glib == 'true')
1219 libgobject = dependency('gobject-2.0',
1220 version : '>= 2.22.0',
1221 required : want_glib == 'true')
1222 libgio = dependency('gio-2.0',
1223 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001224 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001227 libglib = []
1228 libgobject = []
1229 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001230endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001232
1233want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001234if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 libdbus = dependency('dbus-1',
1236 version : '>= 1.3.2',
1237 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244
Yu Watanabe42303dc2017-06-18 05:22:32 +09001245default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001246if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001247 default_dnssec = 'no'
1248endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001250 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1251 default_dnssec = 'no'
1252endif
1253conf.set('DEFAULT_DNSSEC_MODE',
1254 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1255substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1256
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001257dns_over_tls = get_option('dns-over-tls')
1258if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001259 if dns_over_tls == 'openssl'
1260 have_gnutls = false
1261 else
1262 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1263 if dns_over_tls == 'gnutls' and not have_gnutls
1264 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1265 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001266 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001267 if dns_over_tls == 'gnutls' or have_gnutls
1268 have_openssl = false
1269 else
1270 have_openssl = conf.get('HAVE_OPENSSL') == 1
1271 if dns_over_tls != 'auto' and not have_openssl
1272 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1273 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1274 endif
1275 endif
1276 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001277else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001278 have = false
1279 have_gnutls = false
1280 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281endif
1282conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001283conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1284conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285
Iwan Timmerc9299be2018-06-13 20:26:24 +02001286default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001287if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001288 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001289endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001290if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1291 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 +02001292 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001293endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001294conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1295 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1296substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001297
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001299if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300 have = (conf.get('HAVE_LIBCURL') == 1 and
1301 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001302 conf.get('HAVE_XZ') == 1 and
1303 conf.get('HAVE_GCRYPT') == 1)
1304 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001305 error('importd support was requested, but dependencies are not available')
1306 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307else
1308 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001310conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311
1312want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001313if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001314 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1315 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001316 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1317 # it's possible to build one without the other. Complain only if
1318 # support was explictly requested. The auxiliary files like sysusers
1319 # config should be installed when any of the programs are built.
1320 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1321 error('remote support was requested, but dependencies are not available')
1322 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323 have = have_deps[0] or have_deps[1]
1324else
1325 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001326endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001327conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001329foreach term : ['utmp',
1330 'hibernate',
1331 'environment-d',
1332 'binfmt',
1333 'coredump',
1334 'resolve',
1335 'logind',
1336 'hostnamed',
1337 'localed',
1338 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001339 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001340 'networkd',
1341 'timedated',
1342 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001343 'firstboot',
1344 'randomseed',
1345 'backlight',
1346 'vconsole',
1347 'quotacheck',
1348 'sysusers',
1349 'tmpfiles',
1350 'hwdb',
1351 'rfkill',
1352 'ldconfig',
1353 'efi',
1354 'tpm',
1355 'ima',
1356 'smack',
1357 'gshadow',
1358 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001359 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001360 'nss-systemd']
1361 have = get_option(term)
1362 name = 'ENABLE_' + term.underscorify().to_upper()
1363 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364endforeach
1365
Yu Watanabe08540a92018-07-18 09:25:57 +09001366foreach tuple : [['nss-mymachines', 'machined'],
1367 ['nss-resolve', 'resolve']]
1368 want = get_option(tuple[0])
1369 if want != 'false'
1370 have = get_option(tuple[1])
1371 if want == 'true' and not have
1372 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1373 endif
1374 else
1375 have = false
1376 endif
1377 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1378 conf.set10(name, have)
1379endforeach
1380
1381enable_nss = false
1382foreach term : ['ENABLE_NSS_MYHOSTNAME',
1383 'ENABLE_NSS_MYMACHINES',
1384 'ENABLE_NSS_RESOLVE',
1385 'ENABLE_NSS_SYSTEMD']
1386 if conf.get(term) == 1
1387 enable_nss = true
1388 endif
1389endforeach
1390conf.set10('ENABLE_NSS', enable_nss)
1391
Yu Watanabe348b4432018-05-07 18:17:35 +09001392conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001393
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001394tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001395fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001396
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001397conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399#####################################################################
1400
1401if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001403
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001404 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001406 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 elif efi_arch == 'x86_64'
1408 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001409 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 elif efi_arch == 'arm'
1411 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001412 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 elif efi_arch == 'aarch64'
1414 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001415 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 else
1417 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001418 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001421 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001423
Yu Watanabeac093402018-05-10 16:04:16 +09001424 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001425else
1426 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001428conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429
1430#####################################################################
1431
1432config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001433 output : 'config.h',
1434 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435
Yu Watanabe348b4432018-05-07 18:17:35 +09001436meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438includes = include_directories('src/basic',
1439 'src/shared',
1440 'src/systemd',
1441 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001442 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001443 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444 'src/resolve',
1445 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001446 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447 'src/login',
1448 'src/udev',
1449 'src/libudev',
1450 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001451 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452 'src/libsystemd/sd-bus',
1453 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001454 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455 'src/libsystemd/sd-hwdb',
1456 'src/libsystemd/sd-id128',
1457 'src/libsystemd/sd-netlink',
1458 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001459 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001461 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462
1463add_project_arguments('-include', 'config.h', language : 'c')
1464
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001465generate_gperfs = find_program('tools/generate-gperfs.py')
1466
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467subdir('po')
1468subdir('catalog')
1469subdir('src/systemd')
1470subdir('src/basic')
1471subdir('src/libsystemd')
1472subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001473subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
1476libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 'journal-core',
1478 libjournal_core_sources,
1479 journald_gperf_c,
1480 include_directories : includes,
1481 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482
Davide Cavalca1485aac2019-02-27 11:19:07 -05001483libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001486 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001487 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 include_directories : includes,
1489 link_args : ['-shared',
1490 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001491 link_with : [libbasic,
1492 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001493 link_whole : [libsystemd_static,
1494 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001495 dependencies : [threads,
1496 librt,
1497 libxz,
1498 liblz4],
1499 link_depends : libsystemd_sym,
1500 install : true,
1501 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502
Davide Cavalca70848ec2018-04-09 02:43:35 -07001503static_libsystemd = get_option('static-libsystemd')
1504static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1505
1506install_libsystemd_static = static_library(
1507 'systemd',
1508 libsystemd_sources,
1509 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001510 basic_sources,
1511 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001512 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001513 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001514 build_by_default : static_libsystemd != 'false',
1515 install : static_libsystemd != 'false',
1516 install_dir : rootlibdir,
1517 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1518 dependencies : [threads,
1519 librt,
1520 libxz,
1521 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001522 libcap,
1523 libblkid,
1524 libmount,
1525 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001526 libgcrypt],
1527 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1528
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529############################################################
1530
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001531# binaries that have --help and are intended for use by humans,
1532# usually, but not always, installed in /bin.
1533public_programs = []
1534
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535subdir('src/libudev')
1536subdir('src/shared')
1537subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001538subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539subdir('src/udev')
1540subdir('src/network')
1541
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001542subdir('src/analyze')
1543subdir('src/journal-remote')
1544subdir('src/coredump')
1545subdir('src/hostname')
1546subdir('src/import')
1547subdir('src/kernel-install')
1548subdir('src/locale')
1549subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001550subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001551subdir('src/nspawn')
1552subdir('src/resolve')
1553subdir('src/timedate')
1554subdir('src/timesync')
1555subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001556subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001557
1558subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001559subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001560subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001561subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001562
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001563############################################################
1564
1565# only static linking apart from libdl, to make sure that the
1566# module is linked to all libraries that it uses.
1567test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 'test-dlopen',
1569 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001570 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 include_directories : includes,
1572 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001573 dependencies : [libdl],
1574 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001575
Yu Watanabe08540a92018-07-18 09:25:57 +09001576foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001577 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001578 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1579 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001581 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 if condition
1583 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001584
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001586 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001587
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 nss = shared_library(
1589 'nss_' + module,
1590 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001591 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 version : '2',
1593 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001594 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1595 link_args : ['-Wl,-z,nodelete',
1596 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 '-Wl,--version-script=' + version_script_arg,
1598 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001599 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 libbasic],
1601 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001602 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 link_depends : sym,
1604 install : true,
1605 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001606
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 # We cannot use shared_module because it does not support version suffix.
1608 # Unfortunately shared_library insists on creating the symlink…
1609 meson.add_install_script('sh', '-c',
1610 'rm $DESTDIR@0@/libnss_@1@.so'
1611 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001612
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001613 if want_tests != 'false'
1614 test('dlopen-nss_' + module,
1615 test_dlopen,
1616 # path to dlopen must include a slash
1617 args : nss.full_path())
1618 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001620endforeach
1621
1622############################################################
1623
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001624executable('systemd',
1625 systemd_sources,
1626 include_directories : includes,
1627 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001628 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001629 dependencies : [versiondep,
1630 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631 librt,
1632 libseccomp,
1633 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001634 libmount,
1635 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001636 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637 install : true,
1638 install_dir : rootlibexecdir)
1639
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001640meson.add_install_script(meson_make_symlink,
1641 join_paths(rootlibexecdir, 'systemd'),
1642 join_paths(rootsbindir, 'init'))
1643
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644exe = executable('systemd-analyze',
1645 systemd_analyze_sources,
1646 include_directories : includes,
1647 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001648 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001649 dependencies : [versiondep,
1650 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001651 librt,
1652 libseccomp,
1653 libselinux,
1654 libmount,
1655 libblkid],
1656 install_rpath : rootlibexecdir,
1657 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001658public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001659
1660executable('systemd-journald',
1661 systemd_journald_sources,
1662 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001663 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001664 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665 dependencies : [threads,
1666 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001667 liblz4,
1668 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001669 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670 install : true,
1671 install_dir : rootlibexecdir)
1672
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001673exe = executable('systemd-cat',
1674 systemd_cat_sources,
1675 include_directories : includes,
1676 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001677 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001678 dependencies : [threads],
1679 install_rpath : rootlibexecdir,
1680 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001681public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001682
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001683exe = executable('journalctl',
1684 journalctl_sources,
1685 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001687 dependencies : [threads,
1688 libqrencode,
1689 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001690 liblz4,
1691 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001692 install_rpath : rootlibexecdir,
1693 install : true,
1694 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001695public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696
1697executable('systemd-getty-generator',
1698 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001700 link_with : [libshared],
1701 install_rpath : rootlibexecdir,
1702 install : true,
1703 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704
1705executable('systemd-debug-generator',
1706 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001713executable('systemd-run-generator',
1714 'src/run-generator/run-generator.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : systemgeneratordir)
1720
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721executable('systemd-fstab-generator',
1722 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001724 link_with : [libcore_shared,
1725 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001730if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('30-systemd-environment-d-generator',
1732 'src/environment-d-generator/environment-d-generator.c',
1733 include_directories : includes,
1734 link_with : [libshared],
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001738
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 meson.add_install_script(meson_make_symlink,
1740 join_paths(sysconfdir, 'environment'),
1741 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001742endif
1743
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001744if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 executable('systemd-hibernate-resume-generator',
1746 'src/hibernate-resume/hibernate-resume-generator.c',
1747 include_directories : includes,
1748 link_with : [libshared],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 executable('systemd-hibernate-resume',
1754 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001755 include_directories : includes,
1756 link_with : [libshared],
1757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760endif
1761
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001762if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 executable('systemd-gpt-auto-generator',
1764 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001765 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001767 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 dependencies : libblkid,
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : systemgeneratordir)
1772
1773 exe = executable('systemd-dissect',
1774 'src/dissect/dissect.c',
1775 include_directories : includes,
1776 link_with : [libshared],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001780 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781endif
1782
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001783if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('systemd-resolved',
1785 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001786 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001787 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001788 libbasic_gcrypt,
1789 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001790 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001791 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 install : true,
1793 install_dir : rootlibexecdir)
1794
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001795 exe = executable('resolvectl',
1796 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001798 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001799 libbasic_gcrypt,
1800 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001802 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 libm,
1804 libidn],
1805 install_rpath : rootlibexecdir,
1806 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001807 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001808
1809 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001810 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001811 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001812
1813 meson.add_install_script(meson_make_symlink,
1814 join_paths(bindir, 'resolvectl'),
1815 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001816endif
1817
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001818if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 executable('systemd-logind',
1820 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001821 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001823 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001824 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001826 install_rpath : rootlibexecdir,
1827 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001829
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 exe = executable('loginctl',
1831 loginctl_sources,
1832 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001833 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 dependencies : [threads,
1835 liblz4,
1836 libxz],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001840 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001841
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 exe = executable('systemd-inhibit',
1843 'src/login/inhibit.c',
1844 include_directories : includes,
1845 link_with : [libshared],
1846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001849 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001851 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001852 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 pam_systemd = shared_library(
1854 'pam_systemd',
1855 pam_systemd_c,
1856 name_prefix : '',
1857 include_directories : includes,
1858 link_args : ['-shared',
1859 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001860 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 libshared_static],
1862 dependencies : [threads,
1863 libpam,
1864 libpam_misc],
1865 link_depends : pam_systemd_sym,
1866 install : true,
1867 install_dir : pamlibdir)
1868
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001869 if want_tests != 'false'
1870 test('dlopen-pam_systemd',
1871 test_dlopen,
1872 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001873 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001874 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001877 executable('systemd-user-runtime-dir',
1878 user_runtime_dir_sources,
1879 include_directories : includes,
1880 link_with : [libshared],
1881 install_rpath : rootlibexecdir,
1882 install : true,
1883 install_dir : rootlibexecdir)
1884endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001885
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001886if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001887 executable('systemd-user-sessions',
1888 'src/user-sessions/user-sessions.c',
1889 include_directories : includes,
1890 link_with : [libshared],
1891 install_rpath : rootlibexecdir,
1892 install : true,
1893 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001894endif
1895
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001896if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 exe = executable('bootctl',
1898 'src/boot/bootctl.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [libblkid],
1902 install_rpath : rootlibexecdir,
1903 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001904 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001905
1906 executable('systemd-bless-boot',
1907 'src/boot/bless-boot.c',
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [libblkid],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001914
1915 executable('systemd-bless-boot-generator',
1916 'src/boot/bless-boot-generator.c',
1917 include_directories : includes,
1918 link_with : [libshared],
1919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922endif
1923
Lennart Poetteringf876f532018-06-25 16:07:33 +02001924executable('systemd-boot-check-no-failures',
1925 'src/boot/boot-check-no-failures.c',
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [libblkid],
1929 install_rpath : rootlibexecdir,
1930 install : true,
1931 install_dir : rootlibexecdir)
1932
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1934 include_directories : includes,
1935 link_with : [libshared],
1936 dependencies : [threads],
1937 install_rpath : rootlibexecdir,
1938 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001939public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940
Felipe Satelerf3794362018-05-22 15:08:57 -04001941
1942if get_option('link-systemctl-shared')
1943 systemctl_link_with = [libshared]
1944else
1945 systemctl_link_with = [libsystemd_static,
1946 libshared_static,
1947 libjournal_client,
1948 libbasic_gcrypt]
1949endif
1950
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001951exe = executable('systemctl', 'src/systemctl/systemctl.c',
1952 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001953 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954 dependencies : [threads,
1955 libcap,
1956 libselinux,
1957 libxz,
1958 liblz4],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001962public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963
Lennart Poettering61d05782018-04-16 21:41:40 +02001964if conf.get('ENABLE_PORTABLED') == 1
1965 executable('systemd-portabled',
1966 systemd_portabled_sources,
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [threads],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
1973
1974 exe = executable('portablectl', 'src/portable/portablectl.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [threads],
1978 install_rpath : rootlibexecdir,
1979 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001980 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001981 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001982endif
1983
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001984foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1985 meson.add_install_script(meson_make_symlink,
1986 join_paths(rootbindir, 'systemctl'),
1987 join_paths(rootsbindir, alias))
1988endforeach
1989
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001990if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 executable('systemd-backlight',
1992 'src/backlight/backlight.c',
1993 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001994 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998endif
1999
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002000if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 executable('systemd-rfkill',
2002 'src/rfkill/rfkill.c',
2003 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002004 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008endif
2009
2010executable('systemd-system-update-generator',
2011 'src/system-update-generator/system-update-generator.c',
2012 include_directories : includes,
2013 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002014 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015 install : true,
2016 install_dir : systemgeneratordir)
2017
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002018if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 executable('systemd-cryptsetup',
2020 'src/cryptsetup/cryptsetup.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 dependencies : [libcryptsetup],
2024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 executable('systemd-cryptsetup-generator',
2029 'src/cryptsetup/cryptsetup-generator.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [libcryptsetup],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002037 executable('systemd-veritysetup',
2038 'src/veritysetup/veritysetup.c',
2039 include_directories : includes,
2040 link_with : [libshared],
2041 dependencies : [libcryptsetup],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002046 executable('systemd-veritysetup-generator',
2047 'src/veritysetup/veritysetup-generator.c',
2048 include_directories : includes,
2049 link_with : [libshared],
2050 dependencies : [libcryptsetup],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002054endif
2055
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002056if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 executable('systemd-sysv-generator',
2058 'src/sysv-generator/sysv-generator.c',
2059 include_directories : includes,
2060 link_with : [libshared],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002064
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 executable('systemd-rc-local-generator',
2066 'src/rc-local-generator/rc-local-generator.c',
2067 include_directories : includes,
2068 link_with : [libshared],
2069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072endif
2073
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002074if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 executable('systemd-hostnamed',
2076 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002077 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002078 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 install : true,
2081 install_dir : rootlibexecdir)
2082
2083 exe = executable('hostnamectl',
2084 'src/hostname/hostnamectl.c',
2085 include_directories : includes,
2086 link_with : [libshared],
2087 install_rpath : rootlibexecdir,
2088 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002089 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090endif
2091
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002092if conf.get('ENABLE_LOCALED') == 1
2093 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 # logind will load libxkbcommon.so dynamically on its own
2095 deps = [libdl]
2096 else
2097 deps = []
2098 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002099
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 executable('systemd-localed',
2101 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002103 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002105 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 install : true,
2107 install_dir : rootlibexecdir)
2108
2109 exe = executable('localectl',
2110 localectl_sources,
2111 include_directories : includes,
2112 link_with : [libshared],
2113 install_rpath : rootlibexecdir,
2114 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002115 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002116endif
2117
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002118if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 executable('systemd-timedated',
2120 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002121 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002122 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002126endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002127
Yu Watanabe6129ec82018-05-03 18:07:43 +09002128if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 exe = executable('timedatectl',
2130 'src/timedate/timedatectl.c',
2131 include_directories : includes,
2132 install_rpath : rootlibexecdir,
2133 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002134 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002136 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137endif
2138
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002139if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 executable('systemd-timesyncd',
2141 systemd_timesyncd_sources,
2142 include_directories : includes,
2143 link_with : [libshared],
2144 dependencies : [threads,
2145 libm],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002149
2150 executable('systemd-time-wait-sync',
2151 'src/time-wait-sync/time-wait-sync.c',
2152 include_directories : includes,
2153 link_with : [libshared],
2154 install_rpath : rootlibexecdir,
2155 install : true,
2156 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157endif
2158
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002159if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 executable('systemd-machined',
2161 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002162 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163 link_with : [libmachine_core,
2164 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002165 install_rpath : rootlibexecdir,
2166 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167 install_dir : rootlibexecdir)
2168
2169 exe = executable('machinectl',
2170 'src/machine/machinectl.c',
2171 include_directories : includes,
2172 link_with : [libshared],
2173 dependencies : [threads,
2174 libxz,
2175 liblz4],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002179 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180endif
2181
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002182if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 executable('systemd-importd',
2184 systemd_importd_sources,
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [threads],
2188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 systemd_pull = executable('systemd-pull',
2193 systemd_pull_sources,
2194 include_directories : includes,
2195 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002196 dependencies : [versiondep,
2197 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 libz,
2199 libbzip2,
2200 libxz,
2201 libgcrypt],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002206 systemd_import = executable('systemd-import',
2207 systemd_import_sources,
2208 include_directories : includes,
2209 link_with : [libshared],
2210 dependencies : [libcurl,
2211 libz,
2212 libbzip2,
2213 libxz],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002218 systemd_import_fs = executable('systemd-import-fs',
2219 systemd_import_fs_sources,
2220 include_directories : includes,
2221 link_with : [libshared],
2222 install_rpath : rootlibexecdir,
2223 install : true,
2224 install_dir : rootlibexecdir)
2225
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 systemd_export = executable('systemd-export',
2227 systemd_export_sources,
2228 include_directories : includes,
2229 link_with : [libshared],
2230 dependencies : [libcurl,
2231 libz,
2232 libbzip2,
2233 libxz],
2234 install_rpath : rootlibexecdir,
2235 install : true,
2236 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002237
2238 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002239endif
2240
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002241if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002242 exe = executable('systemd-journal-upload',
2243 systemd_journal_upload_sources,
2244 include_directories : includes,
2245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002246 dependencies : [versiondep,
2247 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 libcurl,
2249 libgnutls,
2250 libxz,
2251 liblz4],
2252 install_rpath : rootlibexecdir,
2253 install : true,
2254 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002255 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256endif
2257
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002258if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 s_j_remote = executable('systemd-journal-remote',
2260 systemd_journal_remote_sources,
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002262 link_with : [libshared,
2263 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002264 dependencies : [threads,
2265 libmicrohttpd,
2266 libgnutls,
2267 libxz,
2268 liblz4],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 s_j_gatewayd = executable('systemd-journal-gatewayd',
2274 systemd_journal_gatewayd_sources,
2275 include_directories : includes,
2276 link_with : [libshared],
2277 dependencies : [threads,
2278 libmicrohttpd,
2279 libgnutls,
2280 libxz,
2281 liblz4],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootlibexecdir)
2285 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286endif
2287
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002288if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 executable('systemd-coredump',
2290 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002292 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002293 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 libacl,
2295 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002296 libxz,
2297 liblz4],
2298 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299 install : true,
2300 install_dir : rootlibexecdir)
2301
2302 exe = executable('coredumpctl',
2303 coredumpctl_sources,
2304 include_directories : includes,
2305 link_with : [libshared],
2306 dependencies : [threads,
2307 libxz,
2308 liblz4],
2309 install_rpath : rootlibexecdir,
2310 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002311 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312endif
2313
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002314if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315 exe = executable('systemd-binfmt',
2316 'src/binfmt/binfmt.c',
2317 include_directories : includes,
2318 link_with : [libshared],
2319 install_rpath : rootlibexecdir,
2320 install : true,
2321 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002322 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323
2324 meson.add_install_script('sh', '-c',
2325 mkdir_p.format(binfmtdir))
2326 meson.add_install_script('sh', '-c',
2327 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2328endif
2329
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002330if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 executable('systemd-vconsole-setup',
2332 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002333 include_directories : includes,
2334 link_with : [libshared],
2335 install_rpath : rootlibexecdir,
2336 install : true,
2337 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338endif
2339
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002340if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002341 executable('systemd-random-seed',
2342 'src/random-seed/random-seed.c',
2343 include_directories : includes,
2344 link_with : [libshared],
2345 install_rpath : rootlibexecdir,
2346 install : true,
2347 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348endif
2349
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002350if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002351 executable('systemd-firstboot',
2352 'src/firstboot/firstboot.c',
2353 include_directories : includes,
2354 link_with : [libshared],
2355 dependencies : [libcrypt],
2356 install_rpath : rootlibexecdir,
2357 install : true,
2358 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359endif
2360
2361executable('systemd-remount-fs',
2362 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002364 link_with : [libcore_shared,
2365 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002366 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367 install : true,
2368 install_dir : rootlibexecdir)
2369
2370executable('systemd-machine-id-setup',
2371 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002373 link_with : [libcore_shared,
2374 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002375 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376 install : true,
2377 install_dir : rootbindir)
2378
2379executable('systemd-fsck',
2380 'src/fsck/fsck.c',
2381 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002382 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002383 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384 install : true,
2385 install_dir : rootlibexecdir)
2386
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002387executable('systemd-growfs',
2388 'src/partition/growfs.c',
2389 include_directories : includes,
2390 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002391 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002392 install_rpath : rootlibexecdir,
2393 install : true,
2394 install_dir : rootlibexecdir)
2395
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002396executable('systemd-makefs',
2397 'src/partition/makefs.c',
2398 include_directories : includes,
2399 link_with : [libshared],
2400 install_rpath : rootlibexecdir,
2401 install : true,
2402 install_dir : rootlibexecdir)
2403
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404executable('systemd-sleep',
2405 'src/sleep/sleep.c',
2406 include_directories : includes,
2407 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002408 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409 install : true,
2410 install_dir : rootlibexecdir)
2411
Yu Watanabed25e1272019-01-03 02:32:57 +09002412install_data('src/sleep/sleep.conf',
2413 install_dir : pkgsysconfdir)
2414
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415exe = executable('systemd-sysctl',
2416 'src/sysctl/sysctl.c',
2417 include_directories : includes,
2418 link_with : [libshared],
2419 install_rpath : rootlibexecdir,
2420 install : true,
2421 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002422public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423
2424executable('systemd-ac-power',
2425 'src/ac-power/ac-power.c',
2426 include_directories : includes,
2427 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002428 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429 install : true,
2430 install_dir : rootlibexecdir)
2431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-detect-virt',
2433 'src/detect-virt/detect-virt.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002438public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440exe = executable('systemd-delta',
2441 'src/delta/delta.c',
2442 include_directories : includes,
2443 link_with : [libshared],
2444 install_rpath : rootlibexecdir,
2445 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002446public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002447
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448exe = executable('systemd-escape',
2449 'src/escape/escape.c',
2450 include_directories : includes,
2451 link_with : [libshared],
2452 install_rpath : rootlibexecdir,
2453 install : true,
2454 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002455public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457exe = executable('systemd-notify',
2458 'src/notify/notify.c',
2459 include_directories : includes,
2460 link_with : [libshared],
2461 install_rpath : rootlibexecdir,
2462 install : true,
2463 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002464public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465
2466executable('systemd-volatile-root',
2467 'src/volatile-root/volatile-root.c',
2468 include_directories : includes,
2469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002470 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471 install : true,
2472 install_dir : rootlibexecdir)
2473
2474executable('systemd-cgroups-agent',
2475 'src/cgroups-agent/cgroups-agent.c',
2476 include_directories : includes,
2477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002478 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479 install : true,
2480 install_dir : rootlibexecdir)
2481
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002482exe = executable('systemd-id128',
2483 'src/id128/id128.c',
2484 include_directories : includes,
2485 link_with : [libshared],
2486 install_rpath : rootlibexecdir,
2487 install : true)
2488public_programs += exe
2489
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490exe = executable('systemd-path',
2491 'src/path/path.c',
2492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002493 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494 install_rpath : rootlibexecdir,
2495 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002496public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498exe = executable('systemd-ask-password',
2499 'src/ask-password/ask-password.c',
2500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 install_rpath : rootlibexecdir,
2503 install : true,
2504 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002505public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002506
2507executable('systemd-reply-password',
2508 'src/reply-password/reply-password.c',
2509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002511 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512 install : true,
2513 install_dir : rootlibexecdir)
2514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515exe = executable('systemd-tty-ask-password-agent',
2516 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 install_rpath : rootlibexecdir,
2520 install : true,
2521 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002522public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524exe = executable('systemd-cgls',
2525 'src/cgls/cgls.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 install_rpath : rootlibexecdir,
2529 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002530public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532exe = executable('systemd-cgtop',
2533 'src/cgtop/cgtop.c',
2534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002536 install_rpath : rootlibexecdir,
2537 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002538public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539
2540executable('systemd-initctl',
2541 'src/initctl/initctl.c',
2542 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002544 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545 install : true,
2546 install_dir : rootlibexecdir)
2547
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548exe = executable('systemd-mount',
2549 'src/mount/mount-tool.c',
2550 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552 install_rpath : rootlibexecdir,
2553 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002554public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002555
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002556meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002557 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002558
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002559exe = executable('systemd-run',
2560 'src/run/run.c',
2561 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002562 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563 install_rpath : rootlibexecdir,
2564 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002565public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002567exe = executable('systemd-stdio-bridge',
2568 'src/stdio-bridge/stdio-bridge.c',
2569 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002571 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002572 install_rpath : rootlibexecdir,
2573 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002574public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002575
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002576exe = executable('busctl',
2577 'src/busctl/busctl.c',
2578 'src/busctl/busctl-introspect.c',
2579 'src/busctl/busctl-introspect.h',
2580 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002581 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002582 install_rpath : rootlibexecdir,
2583 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002584public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002586if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002587 exe = executable('systemd-sysusers',
2588 'src/sysusers/sysusers.c',
2589 include_directories : includes,
2590 link_with : [libshared],
2591 install_rpath : rootlibexecdir,
2592 install : true,
2593 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002594 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595endif
2596
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002597if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002598 exe = executable('systemd-tmpfiles',
2599 'src/tmpfiles/tmpfiles.c',
2600 include_directories : includes,
2601 link_with : [libshared],
2602 dependencies : [libacl],
2603 install_rpath : rootlibexecdir,
2604 install : true,
2605 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002606 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002607
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002608 if want_tests != 'false'
2609 test('test-systemd-tmpfiles',
2610 test_systemd_tmpfiles_py,
2611 # https://github.com/mesonbuild/meson/issues/2681
2612 args : exe.full_path())
2613 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614endif
2615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002616if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002617 exe = executable('systemd-hwdb',
2618 'src/hwdb/hwdb.c',
2619 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2620 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002621 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002622 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002623 install : true,
2624 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002625 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002626endif
2627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002628if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002629 executable('systemd-quotacheck',
2630 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 install_rpath : rootlibexecdir,
2634 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636endif
2637
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638exe = executable('systemd-socket-proxyd',
2639 'src/socket-proxy/socket-proxyd.c',
2640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002641 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 dependencies : [threads],
2643 install_rpath : rootlibexecdir,
2644 install : true,
2645 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002646public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002647
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648exe = executable('systemd-udevd',
2649 systemd_udevd_sources,
2650 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002651 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002654 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002655 dependencies : [versiondep,
2656 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002657 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002658 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002659 libacl,
2660 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002661 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662 install : true,
2663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002664public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666exe = executable('udevadm',
2667 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002668 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002669 include_directories : includes,
2670 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002671 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002672 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002673 dependencies : [versiondep,
2674 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002675 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002676 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002677 libacl,
2678 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002679 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002680 install : true,
2681 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002682public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002683
2684executable('systemd-shutdown',
2685 systemd_shutdown_sources,
2686 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002687 link_with : [libcore_shared,
2688 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002689 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002690 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691 install : true,
2692 install_dir : rootlibexecdir)
2693
2694executable('systemd-update-done',
2695 'src/update-done/update-done.c',
2696 include_directories : includes,
2697 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002698 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002699 install : true,
2700 install_dir : rootlibexecdir)
2701
2702executable('systemd-update-utmp',
2703 'src/update-utmp/update-utmp.c',
2704 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002705 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002707 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708 install : true,
2709 install_dir : rootlibexecdir)
2710
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002711if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002712 executable('systemd-modules-load',
2713 'src/modules-load/modules-load.c',
2714 include_directories : includes,
2715 link_with : [libshared],
2716 dependencies : [libkmod],
2717 install_rpath : rootlibexecdir,
2718 install : true,
2719 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002720
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002721 meson.add_install_script('sh', '-c',
2722 mkdir_p.format(modulesloaddir))
2723 meson.add_install_script('sh', '-c',
2724 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725endif
2726
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727exe = executable('systemd-nspawn',
2728 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002729 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002730 link_with : [libcore_shared,
2731 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002732 libshared],
2733 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002734 install_rpath : rootlibexecdir,
2735 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002736public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002737
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002738if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 executable('systemd-networkd',
2740 systemd_networkd_sources,
2741 include_directories : includes,
2742 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002744 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002746 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002747 install_rpath : rootlibexecdir,
2748 install : true,
2749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002750
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002751 executable('systemd-networkd-wait-online',
2752 systemd_networkd_wait_online_sources,
2753 include_directories : includes,
2754 link_with : [libnetworkd_core,
2755 libshared],
2756 install_rpath : rootlibexecdir,
2757 install : true,
2758 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002760 exe = executable('networkctl',
2761 networkctl_sources,
2762 include_directories : includes,
2763 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002764 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002765 install_rpath : rootlibexecdir,
2766 install : true,
2767 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002768 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002769endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002770
2771executable('systemd-sulogin-shell',
2772 ['src/sulogin-shell/sulogin-shell.c'],
2773 include_directories : includes,
2774 link_with : [libshared],
2775 install_rpath : rootlibexecdir,
2776 install : true,
2777 install_dir : rootlibexecdir)
2778
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002779############################################################
2780
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002781custom_target(
2782 'systemd-runtest.env',
2783 output : 'systemd-runtest.env',
2784 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002785 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002786 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002787 '} >@OUTPUT@'],
2788 build_by_default : true)
2789
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002790foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 sources = tuple[0]
2792 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2793 dependencies = tuple[2]
2794 condition = tuple.length() >= 4 ? tuple[3] : ''
2795 type = tuple.length() >= 5 ? tuple[4] : ''
2796 defs = tuple.length() >= 6 ? tuple[5] : []
2797 incs = tuple.length() >= 7 ? tuple[6] : includes
2798 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002799
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002800 name = sources[0].split('/')[-1].split('.')[0]
2801 if type.startswith('timeout=')
2802 timeout = type.split('=')[1].to_int()
2803 type = ''
2804 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002805
2806 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 exe = executable(
2808 name,
2809 sources,
2810 include_directories : incs,
2811 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002812 dependencies : [versiondep,
2813 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002815 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002817 install : install_tests,
2818 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 if type == 'manual'
2821 message('@0@ is a manual test'.format(name))
2822 elif type == 'unsafe' and want_tests != 'unsafe'
2823 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002824 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002825 test(name, exe,
2826 env : test_env,
2827 timeout : timeout)
2828 endif
2829 else
2830 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2831 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002832endforeach
2833
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002834exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002835 'test-libsystemd-sym',
2836 test_libsystemd_sym_c,
2837 include_directories : includes,
2838 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002839 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002840 install : install_tests,
2841 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002842if want_tests != 'false'
2843 test('test-libsystemd-sym', exe)
2844endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002845
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002846exe = executable(
2847 'test-libsystemd-static-sym',
2848 test_libsystemd_sym_c,
2849 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002850 link_with : [install_libsystemd_static],
2851 dependencies : [threads], # threads is already included in dependencies on the library,
2852 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002853 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002854 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002855 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002856if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002857 test('test-libsystemd-static-sym', exe)
2858endif
2859
2860exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002861 'test-libudev-sym',
2862 test_libudev_sym_c,
2863 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002864 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002865 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002866 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 install : install_tests,
2868 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002869if want_tests != 'false'
2870 test('test-libudev-sym', exe)
2871endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002872
2873exe = executable(
2874 'test-libudev-static-sym',
2875 test_libudev_sym_c,
2876 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002877 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002878 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002879 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002880 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002881 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002882if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002883 test('test-libudev-static-sym', exe)
2884endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002885
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002886############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002887
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002888fuzzer_exes = []
2889
Michael Olbrich59967402018-11-11 11:27:35 +01002890if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002891foreach tuple : fuzzers
2892 sources = tuple[0]
2893 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2894 dependencies = tuple[2]
2895 defs = tuple.length() >= 4 ? tuple[3] : []
2896 incs = tuple.length() >= 5 ? tuple[4] : includes
2897
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002898 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002899 dependencies += fuzzing_engine
2900 else
2901 sources += 'src/fuzz/fuzz-main.c'
2902 endif
2903
2904 name = sources[0].split('/')[-1].split('.')[0]
2905
2906 fuzzer_exes += executable(
2907 name,
2908 sources,
2909 include_directories : [incs, include_directories('src/fuzz')],
2910 link_with : link_with,
2911 dependencies : dependencies,
2912 c_args : defs,
2913 install : false)
2914endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002915endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002916
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002917run_target('fuzzers',
2918 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002919 command : ['true'])
2920
2921############################################################
2922
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923make_directive_index_py = find_program('tools/make-directive-index.py')
2924make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002925xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002926hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002927
2928subdir('units')
2929subdir('sysctl.d')
2930subdir('sysusers.d')
2931subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002932subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002933subdir('hwdb')
2934subdir('network')
2935subdir('man')
2936subdir('shell-completion/bash')
2937subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002938subdir('docs/sysvinit')
2939subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002940
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941install_subdir('factory/etc',
2942 install_dir : factorydir)
2943
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002944install_data('xorg/50-systemd-user.sh',
2945 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002946install_data('modprobe.d/systemd.conf',
2947 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002948install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002949 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002950 'NEWS',
2951 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302952 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002953 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002954 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302955 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002956 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002957 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002958 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002959 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2960 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002961
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002962meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2963meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2964
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002965############################################################
2966
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002967meson_check_help = find_program('tools/meson-check-help.sh')
2968
2969foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002970 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002971 if want_tests != 'false'
2972 test('check-help-' + name,
2973 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002974 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002975 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002976endforeach
2977
2978############################################################
2979
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002980# Enable tests for all supported sanitizers
2981foreach tuple : sanitizers
2982 sanitizer = tuple[0]
2983 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002984
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002985 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002986 prev = ''
2987 foreach p : fuzz_regression_tests
2988 b = p.split('/')[-2]
2989 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002990
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002991 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002992
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002993 if name != prev
2994 if want_tests == 'false'
2995 message('Not compiling @0@ because tests is set to false'.format(name))
2996 elif slow_tests
2997 exe = custom_target(
2998 name,
2999 output : name,
3000 depends : build,
3001 command : [env, 'ln', '-fs',
3002 join_paths(build.full_path(), b),
3003 '@OUTPUT@'],
3004 build_by_default : true)
3005 else
3006 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3007 endif
3008 endif
3009 prev = name
3010
3011 if want_tests != 'false' and slow_tests
3012 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3013 env,
3014 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003015 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003016 endif
3017 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003018 endif
3019endforeach
3020
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003021
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003022############################################################
3023
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003024if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003025 all_files = run_command(
3026 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003027 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003028 'ls-files',
3029 ':/*.[ch]'])
3030 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003031
userwithuide85a6902017-08-09 13:41:44 +00003032 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003033 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003034 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003035 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003036 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003037 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003038 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003039endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003040
3041if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003042 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003043 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003044 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003045 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003046endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003047
3048if git.found()
3049 git_head = run_command(
3050 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003051 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003052 'rev-parse', 'HEAD']).stdout().strip()
3053 git_head_short = run_command(
3054 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003055 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003056 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3057
3058 run_target(
3059 'git-snapshot',
3060 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003061 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003062 git_head_short),
3063 '--prefix', 'systemd-@0@/'.format(git_head),
3064 'HEAD'])
3065endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003066
3067############################################################
3068
Lennart Poettering51b13862017-12-20 12:51:14 +01003069meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3070run_target(
3071 'check-api-docs',
3072 depends : [man, libsystemd, libudev],
3073 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3074
3075############################################################
3076
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003077status = [
3078 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3079
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003080 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003081 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003082 'prefix directory: @0@'.format(prefixdir),
3083 'rootprefix directory: @0@'.format(rootprefixdir),
3084 'sysconf directory: @0@'.format(sysconfdir),
3085 'include directory: @0@'.format(includedir),
3086 'lib directory: @0@'.format(libdir),
3087 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 'SysV init scripts: @0@'.format(sysvinit_path),
3089 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003090 'PAM modules directory: @0@'.format(pamlibdir),
3091 'PAM configuration directory: @0@'.format(pamconfdir),
3092 'RPM macros directory: @0@'.format(rpmmacrosdir),
3093 'modprobe.d directory: @0@'.format(modprobedir),
3094 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3095 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3096 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3097 'bash completions directory: @0@'.format(bashcompletiondir),
3098 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099 'extra start script: @0@'.format(get_option('rc-local')),
3100 'extra stop script: @0@'.format(get_option('halt-local')),
3101 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3102 get_option('debug-tty')),
3103 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003104 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003105 'maximum system UID: @0@'.format(system_uid_max),
3106 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003107 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3108 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3109 'minimum container UID base: @0@'.format(container_uid_base_min),
3110 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003111 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003112 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003113 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003115 'nobody user name: @0@'.format(nobody_user),
3116 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003118 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003119
3120 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003121 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003123 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003124 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3125 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003126
3127alt_dns_servers = '\n '.join(dns_servers.split(' '))
3128alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3129status += [
3130 'default DNS servers: @0@'.format(alt_dns_servers),
3131 'default NTP servers: @0@'.format(alt_ntp_servers)]
3132
3133alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3134 '@@0@'.format(time_epoch)).stdout().strip()
3135status += [
3136 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3137
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003138status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003139 'static libsystemd: @0@'.format(static_libsystemd),
3140 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003141
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142# TODO:
3143# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3144# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3145# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3146
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003147if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003148 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003149
3150 if have_gnu_efi
3151 status += [
3152 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003153 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003154 'EFI lib directory: @0@'.format(efi_libdir),
3155 'EFI lds directory: @0@'.format(efi_ldsdir),
3156 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003157 endif
3158endif
3159
3160found = []
3161missing = []
3162
3163foreach tuple : [
3164 ['libcryptsetup'],
3165 ['PAM'],
3166 ['AUDIT'],
3167 ['IMA'],
3168 ['AppArmor'],
3169 ['SELinux'],
3170 ['SECCOMP'],
3171 ['SMACK'],
3172 ['zlib'],
3173 ['xz'],
3174 ['lz4'],
3175 ['bzip2'],
3176 ['ACL'],
3177 ['gcrypt'],
3178 ['qrencode'],
3179 ['microhttpd'],
3180 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003181 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003182 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003183 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003184 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003185 ['libidn'],
3186 ['libiptc'],
3187 ['elfutils'],
3188 ['binfmt'],
3189 ['vconsole'],
3190 ['quotacheck'],
3191 ['tmpfiles'],
3192 ['environment.d'],
3193 ['sysusers'],
3194 ['firstboot'],
3195 ['randomseed'],
3196 ['backlight'],
3197 ['rfkill'],
3198 ['logind'],
3199 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003200 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201 ['importd'],
3202 ['hostnamed'],
3203 ['timedated'],
3204 ['timesyncd'],
3205 ['localed'],
3206 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003207 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003208 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3209 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003210 ['coredump'],
3211 ['polkit'],
3212 ['legacy pkla', install_polkit_pkla],
3213 ['efi'],
3214 ['gnu-efi', have_gnu_efi],
3215 ['kmod'],
3216 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003217 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003218 ['blkid'],
3219 ['dbus'],
3220 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003221 ['nss-myhostname'],
3222 ['nss-mymachines'],
3223 ['nss-resolve'],
3224 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003225 ['hwdb'],
3226 ['tpm'],
3227 ['man pages', want_man],
3228 ['html pages', want_html],
3229 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003230 ['SysV compat'],
3231 ['utmp'],
3232 ['ldconfig'],
3233 ['hibernate'],
3234 ['adm group', get_option('adm-group')],
3235 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003236 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237 ['debug hashmap'],
3238 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003239 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003240 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003241 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003242 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003243 ['link-udev-shared', get_option('link-udev-shared')],
3244 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245]
3246
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003247 if tuple.length() >= 2
3248 cond = tuple[1]
3249 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3251 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003252 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003253 endif
3254 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003255 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003256 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003257 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003258 endif
3259endforeach
3260
3261status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003262 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003263 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003264 '',
3265 'disabled features: @0@'.format(', '.join(missing)),
3266 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003267message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003268
3269if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003270 warning('\n' +
3271 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3272 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3273 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003274endif