blob: b5d06e422621e5cac2913bbb63102460e9c5470a [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
32
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020033want_ossfuzz = get_option('oss-fuzz')
34want_libfuzzer = get_option('llvm-fuzz')
35if want_ossfuzz and want_libfuzzer
36 error('only one of oss-fuzz and llvm-fuzz can be specified')
37endif
38fuzzer_build = want_ossfuzz or want_libfuzzer
39
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040040#####################################################################
41
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040042# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050043git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040044if git_hook.returncode() == 0
45 message(git_hook.stdout().strip())
46endif
47
48#####################################################################
49
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010050if get_option('split-usr') == 'auto'
51 split_usr = run_command('test', '-L', '/bin').returncode() != 0
52else
53 split_usr = get_option('split-usr') == 'true'
54endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010055conf.set10('HAVE_SPLIT_USR', split_usr,
56 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010058if get_option('split-bin') == 'auto'
59 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
60else
61 split_bin = get_option('split-bin') == 'true'
62endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010063conf.set10('HAVE_SPLIT_BIN', split_bin,
64 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010067# Unusual rootprefixdir values are used by some distros
68# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010069rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010070if rootprefixdir == ''
71 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010072endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010073rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75sysvinit_path = get_option('sysvinit-path')
76sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090077conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020078 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040079
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020080conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
81conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010082conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020083
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010084# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085# encountered, so this should canonicalize various paths when they are
86# absolute or relative.
87prefixdir = get_option('prefix')
88if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91bindir = join_paths(prefixdir, get_option('bindir'))
92libdir = join_paths(prefixdir, get_option('libdir'))
93sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
94includedir = join_paths(prefixdir, get_option('includedir'))
95datadir = join_paths(prefixdir, get_option('datadir'))
96localstatedir = join_paths('/', get_option('localstatedir'))
97
98rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010099rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
101
102rootlibdir = get_option('rootlibdir')
103if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400104 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105endif
106
107# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200108pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
109pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400110polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
111polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
112polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
113varlogdir = join_paths(localstatedir, 'log')
114xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900115rpmmacrosdir = get_option('rpmmacrosdir')
116if rpmmacrosdir != 'no'
117 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
118endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200119modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400120
121# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400122pkgdatadir = join_paths(datadir, 'systemd')
123environmentdir = join_paths(prefixdir, 'lib/environment.d')
124pkgsysconfdir = join_paths(sysconfdir, 'systemd')
125userunitdir = join_paths(prefixdir, 'lib/systemd/user')
126userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
127tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
128sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
129sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
130binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
131modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
132networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
133pkgincludedir = join_paths(includedir, 'systemd')
134systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
135usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
136systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
137userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
138systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
139systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
140systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
141systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
142udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400143udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
144udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
145catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
146kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
147factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400148bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
149testsdir = join_paths(prefixdir, 'lib/systemd/tests')
150systemdstatedir = join_paths(localstatedir, 'lib/systemd')
151catalogstatedir = join_paths(systemdstatedir, 'catalog')
152randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200153profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400154
tblume75aaade2018-02-01 22:46:15 +0100155docdir = get_option('docdir')
156if docdir == ''
157 docdir = join_paths(datadir, 'doc/systemd')
158endif
159
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160dbuspolicydir = get_option('dbuspolicydir')
161if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165dbussessionservicedir = get_option('dbussessionservicedir')
166if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170dbussystemservicedir = get_option('dbussystemservicedir')
171if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175pamlibdir = get_option('pamlibdir')
176if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400177 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178endif
179
180pamconfdir = get_option('pamconfdir')
181if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400182 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183endif
184
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100185memory_accounting_default = get_option('memory-accounting-default')
186
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400187conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
190conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
191conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400192conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
193conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100194
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100195conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100196
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
199conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
201conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
202conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
203conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100204conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100205conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400206conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
207conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
208conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
209conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
210conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100211conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400212conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
214conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400215conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
216conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
217conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
218conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
219conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
220conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
222conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700223conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700224conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400226conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('LIBDIR', libdir)
228conf.set_quoted('ROOTLIBDIR', rootlibdir)
229conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
230conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
232conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200233conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400234conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
235conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
236conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
237conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200238conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100239conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400240
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100242substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100243substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('exec_prefix', prefixdir)
245substs.set('libdir', libdir)
246substs.set('rootlibdir', rootlibdir)
247substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100248substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400249substs.set('bindir', bindir)
250substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('rootlibexecdir', rootlibexecdir)
252substs.set('systemunitdir', systemunitdir)
253substs.set('userunitdir', userunitdir)
254substs.set('systempresetdir', systempresetdir)
255substs.set('userpresetdir', userpresetdir)
256substs.set('udevhwdbdir', udevhwdbdir)
257substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400258substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200259substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('catalogdir', catalogdir)
261substs.set('tmpfilesdir', tmpfilesdir)
262substs.set('sysusersdir', sysusersdir)
263substs.set('sysctldir', sysctldir)
264substs.set('binfmtdir', binfmtdir)
265substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200266substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400267substs.set('systemgeneratordir', systemgeneratordir)
268substs.set('usergeneratordir', usergeneratordir)
269substs.set('systemenvgeneratordir', systemenvgeneratordir)
270substs.set('userenvgeneratordir', userenvgeneratordir)
271substs.set('systemshutdowndir', systemshutdowndir)
272substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400273substs.set('VARLOGDIR', varlogdir)
274substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400275substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
276substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400277substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
278substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
279substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
280substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100281substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200282substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400283
284#####################################################################
285
286cc = meson.get_compiler('c')
287pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400288check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100289meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400290
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200291want_tests = get_option('tests')
292slow_tests = want_tests != 'false' and get_option('slow-tests')
293install_tests = get_option('install-tests')
294
James Hilliard46e63a22018-12-27 09:16:20 +0800295if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200296 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200297 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200298else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200299 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400300endif
301
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500302if want_libfuzzer
303 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200304elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500305 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
306endif
307
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900308possible_cc_flags = [
309 '-Wextra',
310 '-Werror=undef',
311 '-Wlogical-op',
312 '-Wmissing-include-dirs',
313 '-Wold-style-definition',
314 '-Wpointer-arith',
315 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900316 '-Wfloat-equal',
317 '-Wsuggest-attribute=noreturn',
318 '-Werror=missing-prototypes',
319 '-Werror=implicit-function-declaration',
320 '-Werror=missing-declarations',
321 '-Werror=return-type',
322 '-Werror=incompatible-pointer-types',
323 '-Werror=format=2',
324 '-Wstrict-prototypes',
325 '-Wredundant-decls',
326 '-Wmissing-noreturn',
327 '-Wimplicit-fallthrough=5',
328 '-Wshadow',
329 '-Wendif-labels',
330 '-Wstrict-aliasing=2',
331 '-Wwrite-strings',
332 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200333 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200334 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900335 '-Wdate-time',
336 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700337
338 # negative arguments are correctly detected starting with meson 0.46.
339 '-Wno-unused-parameter',
340 '-Wno-missing-field-initializers',
341 '-Wno-unused-result',
342 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100343 '-Wno-error=#warnings', # clang
344 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700345
346 # work-around for gcc 7.1 turning this on on its own.
347 '-Wno-error=nonnull',
348
349 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
350 # optimizations enabled, producing essentially false positives.
351 '-Wno-maybe-uninitialized',
352
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900353 '-ffast-math',
354 '-fno-common',
355 '-fdiagnostics-show-option',
356 '-fno-strict-aliasing',
357 '-fvisibility=hidden',
358 '-fstack-protector',
359 '-fstack-protector-strong',
360 '--param=ssp-buffer-size=4',
361]
362
363# --as-needed and --no-undefined are provided by meson by default,
364# run mesonconf to see what is enabled
365possible_link_flags = [
366 '-Wl,-z,relro',
367 '-Wl,-z,now',
368]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400369
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370if cc.get_id() == 'clang'
371 possible_cc_flags += [
372 '-Wno-typedef-redefinition',
373 '-Wno-gnu-variable-sized-type-not-at-end',
374 ]
375endif
376
377if get_option('buildtype') != 'debug'
378 possible_cc_flags += [
379 '-ffunction-sections',
380 '-fdata-sections',
381 ]
382
383 possible_link_flags += '-Wl,--gc-sections'
384endif
385
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100386if get_option('b_ndebug') == 'true'
387 # With asserts disabled with get a bunch of warnings about variables which
388 # are used only in the asserts. This is not useful at all, so let's just silence
389 # those warnings.
390 possible_cc_flags += [
391 '-Wno-unused-variable',
392 '-Wno-unused-but-set-variable',
393 ]
394endif
395
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900396add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900397add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900398
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800399if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400 #include <time.h>
401 #include <inttypes.h>
402 typedef uint64_t usec_t;
403 usec_t now(clockid_t clock);
404 int main(void) {
405 struct timespec now;
406 return 0;
407 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100408''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400409 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410endif
411
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200412cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400413
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200414has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
415
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416#####################################################################
417# compilation result tests
418
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400419conf.set('_GNU_SOURCE', true)
420conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200421conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422
423conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
424conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
425conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
426conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
427conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
428conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
429conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
430
431decl_headers = '''
432#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100433#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435
436foreach decl : ['char16_t',
437 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100438 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400440
441 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200442 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
443
444 if decl == 'struct statx'
445 if have
446 want_linux_stat_h = false
447 else
448 have = cc.sizeof(decl,
449 prefix : decl_headers + '#include <linux/stat.h>',
450 args : '-D_GNU_SOURCE') > 0
451 want_linux_stat_h = have
452 endif
453 endif
454
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200455 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456endforeach
457
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200458conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700459
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200461 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462endforeach
463
464foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100465 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100466 ['gettid', '''#include <sys/types.h>
467 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100468 ['pivot_root', '''#include <stdlib.h>
469 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100470 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400471 #include <sys/stat.h>
472 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100473 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100474 ['renameat2', '''#include <stdio.h>
475 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400476 ['kcmp', '''#include <linux/kcmp.h>'''],
477 ['keyctl', '''#include <sys/types.h>
478 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400480 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200481 ['bpf', '''#include <sys/syscall.h>
482 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100483 ['statx', '''#include <sys/types.h>
484 #include <sys/stat.h>
485 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100486 ['explicit_bzero' , '''#include <string.h>'''],
487 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400488]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200491 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492endforeach
493
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200495 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200496 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400497else
498 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200499 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200500 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400501endif
502
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503#####################################################################
504
Davide Cavalca1485aac2019-02-27 11:19:07 -0500505vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
506 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100507 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100508 meson.project_version()]
509
Louis Taylord1084aa2019-01-21 21:45:36 +0000510version_h = vcs_tag(
511 input : 'src/version/version.h.in',
512 output : 'version.h',
513 command: vcs_tagger)
514
515versiondep = declare_dependency(sources: version_h)
516
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400519m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400521git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100522env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100523perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524
Davide Cavalca1485aac2019-02-27 11:19:07 -0500525meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400526mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400527test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
528splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400529
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
531# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500532progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534 ['kmod', '/usr/bin/kmod' ],
535 ['kexec', '/usr/sbin/kexec' ],
536 ['sulogin', '/usr/sbin/sulogin' ],
537 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
538 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
539 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
540 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
541 ]
542foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400543 path = get_option(prog[0] + '-path')
544 if path != ''
545 message('Using @1@ for @0@'.format(prog[0], path))
546 else
547 exe = find_program(prog[0],
548 '/usr/sbin/' + prog[0],
549 '/sbin/' + prog[0],
550 required: false)
551 path = exe.found() ? exe.path() : prog[1]
552 endif
553 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
554 conf.set_quoted(name, path)
555 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556endforeach
557
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500558conf.set_quoted('TELINIT', get_option('telinit-path'))
559
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400560if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100561 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400562endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563
564############################################################
565
566gperf = find_program('gperf')
567
568gperf_test_format = '''
569#include <string.h>
570const char * in_word_set(const char *, @0@);
571@1@
572'''
573gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
574gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
575gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
576if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400577 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400579 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
580 if cc.compiles(gperf_test)
581 gperf_len_type = 'unsigned'
582 else
583 error('unable to determine gperf len type')
584 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585endif
586message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587conf.set('GPERF_LEN_TYPE', gperf_len_type,
588 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589
590############################################################
591
592if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100595foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596 'linux/memfd.h',
597 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200598 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599 'valgrind/memcheck.h',
600 'valgrind/valgrind.h',
601 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200603 conf.set10('HAVE_' + header.underscorify().to_upper(),
604 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605endforeach
606
607############################################################
608
609conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400610conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
611gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612
613default_hierarchy = get_option('default-hierarchy')
614conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
615 description : 'default cgroup hierarchy as string')
616if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622endif
623
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100624default_net_naming_scheme = get_option('default-net-naming-scheme')
625conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
626
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900628if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400629 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900630 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632conf.set('TIME_EPOCH', time_epoch)
633
634system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900635if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 system_uid_max = run_command(
637 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800638 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
639 '/etc/login.defs').stdout().strip()
640 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900641 system_uid_max = 999
642 else
643 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800644 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646conf.set('SYSTEM_UID_MAX', system_uid_max)
647substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900650if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 system_gid_max = run_command(
652 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800653 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
654 '/etc/login.defs').stdout().strip()
655 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900656 system_gid_max = 999
657 else
658 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800659 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661conf.set('SYSTEM_GID_MAX', system_gid_max)
662substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663
Yu Watanabeac093402018-05-10 16:04:16 +0900664dynamic_uid_min = get_option('dynamic-uid-min')
665dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100666conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
667conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
668substs.set('dynamicuidmin', dynamic_uid_min)
669substs.set('dynamicuidmax', dynamic_uid_max)
670
Yu Watanabeac093402018-05-10 16:04:16 +0900671container_uid_base_min = get_option('container-uid-base-min')
672container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100673conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
674conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
675substs.set('containeruidbasemin', container_uid_base_min)
676substs.set('containeruidbasemax', container_uid_base_max)
677
Lennart Poetteringafde4572017-12-05 11:00:24 +0100678nobody_user = get_option('nobody-user')
679nobody_group = get_option('nobody-group')
680
Chen Qi2484bff2018-07-23 14:53:09 +0800681if not meson.is_cross_build()
682 getent_result = run_command('getent', 'passwd', '65534')
683 if getent_result.returncode() == 0
684 name = getent_result.stdout().split(':')[0]
685 if name != nobody_user
686 warning('\n' +
687 '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) +
688 'Your build will result in an user table setup that is incompatible with the local system.')
689 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100690 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800691 id_result = run_command('id', '-u', nobody_user)
692 if id_result.returncode() == 0
693 id = id_result.stdout().to_int()
694 if id != 65534
695 warning('\n' +
696 '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) +
697 'Your build will result in an user table setup that is incompatible with the local system.')
698 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100699 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100700
Chen Qi2484bff2018-07-23 14:53:09 +0800701 getent_result = run_command('getent', 'group', '65534')
702 if getent_result.returncode() == 0
703 name = getent_result.stdout().split(':')[0]
704 if name != nobody_group
705 warning('\n' +
706 '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) +
707 'Your build will result in an group table setup that is incompatible with the local system.')
708 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100709 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800710 id_result = run_command('id', '-g', nobody_group)
711 if id_result.returncode() == 0
712 id = id_result.stdout().to_int()
713 if id != 65534
714 warning('\n' +
715 '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) +
716 'Your build will result in an group table setup that is incompatible with the local system.')
717 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100718 endif
719endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900720if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900721 warning('\n' +
722 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
723 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900724endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100725
726conf.set_quoted('NOBODY_USER_NAME', nobody_user)
727conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900728substs.set('NOBODY_USER_NAME', nobody_user)
729substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100730
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400731tty_gid = get_option('tty-gid')
732conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400733substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734
Ikey Doherty84786b82017-12-03 12:28:23 +0000735# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900736users_gid = get_option('users-gid')
737substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000738
Yu Watanabe348b4432018-05-07 18:17:35 +0900739conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
740conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741
Michael Bieblace5e312018-07-13 23:36:13 +0200742dev_kvm_mode = get_option('dev-kvm-mode')
743substs.set('DEV_KVM_MODE', dev_kvm_mode)
744conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100745group_render_mode = get_option('group-render-mode')
746substs.set('GROUP_RENDER_MODE', group_render_mode)
747conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749kill_user_processes = get_option('default-kill-user-processes')
750conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100751conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400754dns_servers = get_option('dns-servers')
755conf.set_quoted('DNS_SERVERS', dns_servers)
756substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400758ntp_servers = get_option('ntp-servers')
759conf.set_quoted('NTP_SERVERS', ntp_servers)
760substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Dave Reisner8ca9e922018-12-28 07:38:36 -0500762default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900763if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800764 if not meson.is_cross_build()
765 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
766 default_locale = run_command(choose_default_locale_sh).stdout().strip()
767 else
768 default_locale = 'C.UTF-8'
769 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900770endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500771conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
772
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
774
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400775substs.set('SUSHELL', get_option('debug-shell'))
776substs.set('DEBUGTTY', get_option('debug-tty'))
777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778enable_debug_hashmap = false
779enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900780enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900781enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200782foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900783 if name == 'hashmap'
784 enable_debug_hashmap = true
785 elif name == 'mmap-cache'
786 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900787 elif name == 'siphash'
788 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900789 elif name == 'udev'
790 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900791 else
792 message('unknown debug option "@0@", ignoring'.format(name))
793 endif
794endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
796conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900797conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900798conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400799
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200800conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200801conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200802
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803#####################################################################
804
805threads = dependency('threads')
806librt = cc.find_library('rt')
807libm = cc.find_library('m')
808libdl = cc.find_library('dl')
809libcrypt = cc.find_library('crypt')
810
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400811libcap = dependency('libcap', required : false)
812if not libcap.found()
813 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
814 libcap = cc.find_library('cap')
815endif
816
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100818 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819
820want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500821if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400822 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400823 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
832want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500833if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libselinux = dependency('libselinux',
835 version : '>= 2.1.9',
836 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843
844want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500845if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libapparmor = dependency('libapparmor',
847 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400851 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855smack_run_label = get_option('smack-run-label')
856if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
859
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400860want_polkit = get_option('polkit')
861install_polkit = false
862install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500863if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400865
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libpolkit = dependency('polkit-gobject-1',
867 required : false)
868 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
869 message('Old polkit detected, will install pkla files')
870 install_polkit_pkla = true
871 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400872endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200873conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400874
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400875want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500876if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400877 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400879else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881 libacl = []
882endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400884
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500886if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894
895want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libkmod = dependency('libkmod',
908 version : '>= 15',
909 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500918if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libpam = cc.find_library('pam', required : want_pam == 'true')
920 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libpam = []
925 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500930if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libmicrohttpd = dependency('libmicrohttpd',
932 version : '>= 0.9.33',
933 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940
941want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500942if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libcryptsetup = dependency('libcryptsetup',
944 version : '>= 1.6.0',
945 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100947 have_sector = cc.has_member(
948 'struct crypt_params_plain',
949 'sector_size',
950 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100953 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100957conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958
959want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libcurl = dependency('libcurl',
962 version : '>= 7.32.0',
963 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400972want_libidn2 = get_option('libidn2')
973if want_libidn == 'true' and want_libidn2 == 'true'
974 error('libidn and libidn2 cannot be requested simultaneously')
975endif
976
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500977if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libidn = dependency('libidn',
979 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400981else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400983 libidn = []
984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500986if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400987 # libidn is used for both libidn and libidn2 objects
988 libidn = dependency('libidn2',
989 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libidn.found()
991else
992 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500997if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libiptc = dependency('libiptc',
999 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006
1007want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001008if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libqrencode = dependency('libqrencode',
1010 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001018want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001019if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001020 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1021 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
1025endif
1026if not have
1027 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001028 libgcrypt = []
1029 libgpg_error = []
1030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001032
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001034if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libgnutls = dependency('gnutls',
1036 version : '>= 3.1.4',
1037 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001045want_openssl = get_option('openssl')
1046if want_openssl != 'false' and not fuzzer_build
1047 libopenssl = dependency('openssl',
1048 version : '>= 1.1.0',
1049 required : want_openssl == 'true')
1050 have = libopenssl.found()
1051else
1052 have = false
1053 libopenssl = []
1054endif
1055conf.set10('HAVE_OPENSSL', have)
1056
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001058if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libdw = dependency('libdw',
1060 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
1068want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001069if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libz = dependency('zlib',
1071 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
1079want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001080if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libbzip2 = cc.find_library('bz2',
1082 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089
1090want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001091if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libxz = dependency('liblzma',
1093 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100
1101want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001102if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001104 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001114if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115 libxkbcommon = dependency('xkbcommon',
1116 version : '>= 0.3.0',
1117 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121 libxkbcommon = []
1122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001124
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001125want_pcre2 = get_option('pcre2')
1126if want_pcre2 != 'false'
1127 libpcre2 = dependency('libpcre2-8',
1128 required : want_pcre2 == 'true')
1129 have = libpcre2.found()
1130else
1131 have = false
1132 libpcre2 = []
1133endif
1134conf.set10('HAVE_PCRE2', have)
1135
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001137if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libglib = dependency('glib-2.0',
1139 version : '>= 2.22.0',
1140 required : want_glib == 'true')
1141 libgobject = dependency('gobject-2.0',
1142 version : '>= 2.22.0',
1143 required : want_glib == 'true')
1144 libgio = dependency('gio-2.0',
1145 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001146 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libglib = []
1150 libgobject = []
1151 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001152endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154
1155want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001156if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libdbus = dependency('dbus-1',
1158 version : '>= 1.3.2',
1159 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001164endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001166
Yu Watanabe42303dc2017-06-18 05:22:32 +09001167default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001168if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001169 default_dnssec = 'no'
1170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001172 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1173 default_dnssec = 'no'
1174endif
1175conf.set('DEFAULT_DNSSEC_MODE',
1176 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1177substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1178
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001179dns_over_tls = get_option('dns-over-tls')
1180if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001181 if dns_over_tls == 'openssl'
1182 have_gnutls = false
1183 else
1184 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1185 if dns_over_tls == 'gnutls' and not have_gnutls
1186 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1187 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001188 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001189 if dns_over_tls == 'gnutls' or have_gnutls
1190 have_openssl = false
1191 else
1192 have_openssl = conf.get('HAVE_OPENSSL') == 1
1193 if dns_over_tls != 'auto' and not have_openssl
1194 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1195 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1196 endif
1197 endif
1198 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001199else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001200 have = false
1201 have_gnutls = false
1202 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001203endif
1204conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001205conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1206conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001207
Iwan Timmerc9299be2018-06-13 20:26:24 +02001208default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001209if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001210 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001211endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001212if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1213 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 +02001214 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001215endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001216conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1217 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1218substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001219
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001220want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001221if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222 have = (conf.get('HAVE_LIBCURL') == 1 and
1223 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224 conf.get('HAVE_XZ') == 1 and
1225 conf.get('HAVE_GCRYPT') == 1)
1226 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001227 error('importd support was requested, but dependencies are not available')
1228 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229else
1230 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001231endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001232conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001233
1234want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001235if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1237 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001238 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1239 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001240 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 # config should be installed when any of the programs are built.
1242 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1243 error('remote support was requested, but dependencies are not available')
1244 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245 have = have_deps[0] or have_deps[1]
1246else
1247 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001248endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001251foreach term : ['utmp',
1252 'hibernate',
1253 'environment-d',
1254 'binfmt',
1255 'coredump',
1256 'resolve',
1257 'logind',
1258 'hostnamed',
1259 'localed',
1260 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001261 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001262 'networkd',
1263 'timedated',
1264 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001265 'firstboot',
1266 'randomseed',
1267 'backlight',
1268 'vconsole',
1269 'quotacheck',
1270 'sysusers',
1271 'tmpfiles',
1272 'hwdb',
1273 'rfkill',
1274 'ldconfig',
1275 'efi',
1276 'tpm',
1277 'ima',
1278 'smack',
1279 'gshadow',
1280 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001281 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001282 'nss-systemd']
1283 have = get_option(term)
1284 name = 'ENABLE_' + term.underscorify().to_upper()
1285 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001286endforeach
1287
Yu Watanabe08540a92018-07-18 09:25:57 +09001288foreach tuple : [['nss-mymachines', 'machined'],
1289 ['nss-resolve', 'resolve']]
1290 want = get_option(tuple[0])
1291 if want != 'false'
1292 have = get_option(tuple[1])
1293 if want == 'true' and not have
1294 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1295 endif
1296 else
1297 have = false
1298 endif
1299 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1300 conf.set10(name, have)
1301endforeach
1302
1303enable_nss = false
1304foreach term : ['ENABLE_NSS_MYHOSTNAME',
1305 'ENABLE_NSS_MYMACHINES',
1306 'ENABLE_NSS_RESOLVE',
1307 'ENABLE_NSS_SYSTEMD']
1308 if conf.get(term) == 1
1309 enable_nss = true
1310 endif
1311endforeach
1312conf.set10('ENABLE_NSS', enable_nss)
1313
Yu Watanabe348b4432018-05-07 18:17:35 +09001314conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001315
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001316tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001317fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001318
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001319conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001320
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321#####################################################################
1322
1323if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001325
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001326 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001328 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 elif efi_arch == 'x86_64'
1330 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001331 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 elif efi_arch == 'arm'
1333 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001334 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 elif efi_arch == 'aarch64'
1336 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001337 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 else
1339 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001340 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001343 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001345
Yu Watanabeac093402018-05-10 16:04:16 +09001346 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001347else
1348 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001350conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351
1352#####################################################################
1353
1354config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 output : 'config.h',
1356 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
Yu Watanabe348b4432018-05-07 18:17:35 +09001358meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1359
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360includes = include_directories('src/basic',
1361 'src/shared',
1362 'src/systemd',
1363 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001364 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001365 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366 'src/resolve',
1367 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001368 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369 'src/login',
1370 'src/udev',
1371 'src/libudev',
1372 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001373 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374 'src/libsystemd/sd-bus',
1375 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001376 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377 'src/libsystemd/sd-hwdb',
1378 'src/libsystemd/sd-id128',
1379 'src/libsystemd/sd-netlink',
1380 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001381 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001383 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384
1385add_project_arguments('-include', 'config.h', language : 'c')
1386
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001387generate_gperfs = find_program('tools/generate-gperfs.py')
1388
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389subdir('po')
1390subdir('catalog')
1391subdir('src/systemd')
1392subdir('src/basic')
1393subdir('src/libsystemd')
1394subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001396subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397
1398libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 'journal-core',
1400 libjournal_core_sources,
1401 journald_gperf_c,
1402 include_directories : includes,
1403 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001404
Davide Cavalca1485aac2019-02-27 11:19:07 -05001405libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001408 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001409 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 include_directories : includes,
1411 link_args : ['-shared',
1412 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001413 link_with : [libbasic,
1414 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001415 link_whole : [libsystemd_static,
1416 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 dependencies : [threads,
1418 librt,
1419 libxz,
1420 liblz4],
1421 link_depends : libsystemd_sym,
1422 install : true,
1423 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424
Davide Cavalca70848ec2018-04-09 02:43:35 -07001425static_libsystemd = get_option('static-libsystemd')
1426static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1427
1428install_libsystemd_static = static_library(
1429 'systemd',
1430 libsystemd_sources,
1431 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001432 basic_sources,
1433 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001434 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001435 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001436 build_by_default : static_libsystemd != 'false',
1437 install : static_libsystemd != 'false',
1438 install_dir : rootlibdir,
1439 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1440 dependencies : [threads,
1441 librt,
1442 libxz,
1443 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001444 libcap,
1445 libblkid,
1446 libmount,
1447 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001448 libgcrypt],
1449 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1450
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001451############################################################
1452
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001453# binaries that have --help and are intended for use by humans,
1454# usually, but not always, installed in /bin.
1455public_programs = []
1456
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457subdir('src/libudev')
1458subdir('src/shared')
1459subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001460subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461subdir('src/udev')
1462subdir('src/network')
1463
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001464subdir('src/analyze')
1465subdir('src/journal-remote')
1466subdir('src/coredump')
1467subdir('src/hostname')
1468subdir('src/import')
1469subdir('src/kernel-install')
1470subdir('src/locale')
1471subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001472subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001473subdir('src/nspawn')
1474subdir('src/resolve')
1475subdir('src/timedate')
1476subdir('src/timesync')
1477subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001478subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001479
1480subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001481subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001482subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001483subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001484
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001485############################################################
1486
1487# only static linking apart from libdl, to make sure that the
1488# module is linked to all libraries that it uses.
1489test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 'test-dlopen',
1491 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001492 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001493 include_directories : includes,
1494 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001495 dependencies : [libdl],
1496 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001497
Yu Watanabe08540a92018-07-18 09:25:57 +09001498foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001499 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001500 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1501 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001502
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001503 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001504 if condition
1505 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001506
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001507 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001508 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001509
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 nss = shared_library(
1511 'nss_' + module,
1512 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001513 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 version : '2',
1515 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001516 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1517 link_args : ['-Wl,-z,nodelete',
1518 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001519 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001520 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 libbasic],
1522 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001523 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 link_depends : sym,
1525 install : true,
1526 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001527
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528 # We cannot use shared_module because it does not support version suffix.
1529 # Unfortunately shared_library insists on creating the symlink…
1530 meson.add_install_script('sh', '-c',
1531 'rm $DESTDIR@0@/libnss_@1@.so'
1532 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001533
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001534 if want_tests != 'false'
1535 test('dlopen-nss_' + module,
1536 test_dlopen,
1537 # path to dlopen must include a slash
1538 args : nss.full_path())
1539 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001541endforeach
1542
1543############################################################
1544
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545executable('systemd',
1546 systemd_sources,
1547 include_directories : includes,
1548 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001549 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001550 dependencies : [versiondep,
1551 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552 librt,
1553 libseccomp,
1554 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001555 libmount,
1556 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001557 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558 install : true,
1559 install_dir : rootlibexecdir)
1560
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001561meson.add_install_script(meson_make_symlink,
1562 join_paths(rootlibexecdir, 'systemd'),
1563 join_paths(rootsbindir, 'init'))
1564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001565exe = executable('systemd-analyze',
1566 systemd_analyze_sources,
1567 include_directories : includes,
1568 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001569 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001570 dependencies : [versiondep,
1571 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001572 librt,
1573 libseccomp,
1574 libselinux,
1575 libmount,
1576 libblkid],
1577 install_rpath : rootlibexecdir,
1578 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001579public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580
1581executable('systemd-journald',
1582 systemd_journald_sources,
1583 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001584 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001585 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586 dependencies : [threads,
1587 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001588 liblz4,
1589 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591 install : true,
1592 install_dir : rootlibexecdir)
1593
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594exe = executable('systemd-cat',
1595 systemd_cat_sources,
1596 include_directories : includes,
1597 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001598 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599 dependencies : [threads],
1600 install_rpath : rootlibexecdir,
1601 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001602public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604exe = executable('journalctl',
1605 journalctl_sources,
1606 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001607 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001608 dependencies : [threads,
1609 libqrencode,
1610 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001611 liblz4,
1612 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613 install_rpath : rootlibexecdir,
1614 install : true,
1615 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617
1618executable('systemd-getty-generator',
1619 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001621 link_with : [libshared],
1622 install_rpath : rootlibexecdir,
1623 install : true,
1624 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625
1626executable('systemd-debug-generator',
1627 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001629 link_with : [libshared],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001634executable('systemd-run-generator',
1635 'src/run-generator/run-generator.c',
1636 include_directories : includes,
1637 link_with : [libshared],
1638 install_rpath : rootlibexecdir,
1639 install : true,
1640 install_dir : systemgeneratordir)
1641
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642executable('systemd-fstab-generator',
1643 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001645 link_with : [libcore_shared,
1646 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001647 install_rpath : rootlibexecdir,
1648 install : true,
1649 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001651if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 executable('30-systemd-environment-d-generator',
1653 'src/environment-d-generator/environment-d-generator.c',
1654 include_directories : includes,
1655 link_with : [libshared],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001659
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 meson.add_install_script(meson_make_symlink,
1661 join_paths(sysconfdir, 'environment'),
1662 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663endif
1664
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001665if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-hibernate-resume-generator',
1667 'src/hibernate-resume/hibernate-resume-generator.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('systemd-hibernate-resume',
1675 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001676 include_directories : includes,
1677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681endif
1682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-gpt-auto-generator',
1685 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001686 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001688 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 dependencies : libblkid,
1690 install_rpath : rootlibexecdir,
1691 install : true,
1692 install_dir : systemgeneratordir)
1693
1694 exe = executable('systemd-dissect',
1695 'src/dissect/dissect.c',
1696 include_directories : includes,
1697 link_with : [libshared],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001701 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702endif
1703
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001704if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('systemd-resolved',
1706 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001708 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001709 libbasic_gcrypt,
1710 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001711 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001712 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 install : true,
1714 install_dir : rootlibexecdir)
1715
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001716 exe = executable('resolvectl',
1717 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001719 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001720 libbasic_gcrypt,
1721 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001723 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 libm,
1725 libidn],
1726 install_rpath : rootlibexecdir,
1727 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001728 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001729
1730 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001731 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001732 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001733
1734 meson.add_install_script(meson_make_symlink,
1735 join_paths(bindir, 'resolvectl'),
1736 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-logind',
1741 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001744 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001745 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001747 install_rpath : rootlibexecdir,
1748 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 exe = executable('loginctl',
1752 loginctl_sources,
1753 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001754 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 dependencies : [threads,
1756 liblz4,
1757 libxz],
1758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001761 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 exe = executable('systemd-inhibit',
1764 'src/login/inhibit.c',
1765 include_directories : includes,
1766 link_with : [libshared],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001770 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001771
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001772 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001773 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 pam_systemd = shared_library(
1775 'pam_systemd',
1776 pam_systemd_c,
1777 name_prefix : '',
1778 include_directories : includes,
1779 link_args : ['-shared',
1780 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001781 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 libshared_static],
1783 dependencies : [threads,
1784 libpam,
1785 libpam_misc],
1786 link_depends : pam_systemd_sym,
1787 install : true,
1788 install_dir : pamlibdir)
1789
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001790 if want_tests != 'false'
1791 test('dlopen-pam_systemd',
1792 test_dlopen,
1793 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001794 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001795 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001798 executable('systemd-user-runtime-dir',
1799 user_runtime_dir_sources,
1800 include_directories : includes,
1801 link_with : [libshared],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : rootlibexecdir)
1805endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001806
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001807if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 executable('systemd-user-sessions',
1809 'src/user-sessions/user-sessions.c',
1810 include_directories : includes,
1811 link_with : [libshared],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815endif
1816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 exe = executable('bootctl',
1819 'src/boot/bootctl.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 dependencies : [libblkid],
1823 install_rpath : rootlibexecdir,
1824 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001825 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001826
1827 executable('systemd-bless-boot',
1828 'src/boot/bless-boot.c',
1829 include_directories : includes,
1830 link_with : [libshared],
1831 dependencies : [libblkid],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001835
1836 executable('systemd-bless-boot-generator',
1837 'src/boot/bless-boot-generator.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 install_rpath : rootlibexecdir,
1841 install : true,
1842 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001843endif
1844
Lennart Poetteringf876f532018-06-25 16:07:33 +02001845executable('systemd-boot-check-no-failures',
1846 'src/boot/boot-check-no-failures.c',
1847 include_directories : includes,
1848 link_with : [libshared],
1849 dependencies : [libblkid],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
1853
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1855 include_directories : includes,
1856 link_with : [libshared],
1857 dependencies : [threads],
1858 install_rpath : rootlibexecdir,
1859 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001860public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861
Felipe Satelerf3794362018-05-22 15:08:57 -04001862
1863if get_option('link-systemctl-shared')
1864 systemctl_link_with = [libshared]
1865else
1866 systemctl_link_with = [libsystemd_static,
1867 libshared_static,
1868 libjournal_client,
1869 libbasic_gcrypt]
1870endif
1871
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001872exe = executable('systemctl',
1873 'src/systemctl/systemctl.c',
1874 'src/systemctl/sysv-compat.h',
1875 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001876 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001877 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001878 dependencies : [threads,
1879 libcap,
1880 libselinux,
1881 libxz,
1882 liblz4],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001886public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Lennart Poettering61d05782018-04-16 21:41:40 +02001888if conf.get('ENABLE_PORTABLED') == 1
1889 executable('systemd-portabled',
1890 systemd_portabled_sources,
1891 include_directories : includes,
1892 link_with : [libshared],
1893 dependencies : [threads],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
1897
1898 exe = executable('portablectl', 'src/portable/portablectl.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [threads],
1902 install_rpath : rootlibexecdir,
1903 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001904 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001905 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001906endif
1907
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001908foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1909 meson.add_install_script(meson_make_symlink,
1910 join_paths(rootbindir, 'systemctl'),
1911 join_paths(rootsbindir, alias))
1912endforeach
1913
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001914if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 executable('systemd-backlight',
1916 'src/backlight/backlight.c',
1917 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001918 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922endif
1923
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001924if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 executable('systemd-rfkill',
1926 'src/rfkill/rfkill.c',
1927 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001928 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001929 install_rpath : rootlibexecdir,
1930 install : true,
1931 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932endif
1933
1934executable('systemd-system-update-generator',
1935 'src/system-update-generator/system-update-generator.c',
1936 include_directories : includes,
1937 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001938 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939 install : true,
1940 install_dir : systemgeneratordir)
1941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001942if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 executable('systemd-cryptsetup',
1944 'src/cryptsetup/cryptsetup.c',
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [libcryptsetup],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 executable('systemd-cryptsetup-generator',
1953 'src/cryptsetup/cryptsetup-generator.c',
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [libcryptsetup],
1957 install_rpath : rootlibexecdir,
1958 install : true,
1959 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 executable('systemd-veritysetup',
1962 'src/veritysetup/veritysetup.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [libcryptsetup],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-veritysetup-generator',
1971 'src/veritysetup/veritysetup-generator.c',
1972 include_directories : includes,
1973 link_with : [libshared],
1974 dependencies : [libcryptsetup],
1975 install_rpath : rootlibexecdir,
1976 install : true,
1977 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001978endif
1979
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001980if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 executable('systemd-sysv-generator',
1982 'src/sysv-generator/sysv-generator.c',
1983 include_directories : includes,
1984 link_with : [libshared],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 executable('systemd-rc-local-generator',
1990 'src/rc-local-generator/rc-local-generator.c',
1991 include_directories : includes,
1992 link_with : [libshared],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001998if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 executable('systemd-hostnamed',
2000 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002001 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002002 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002003 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 install : true,
2005 install_dir : rootlibexecdir)
2006
2007 exe = executable('hostnamectl',
2008 'src/hostname/hostnamectl.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 install_rpath : rootlibexecdir,
2012 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002013 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_LOCALED') == 1
2017 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 # logind will load libxkbcommon.so dynamically on its own
2019 deps = [libdl]
2020 else
2021 deps = []
2022 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 executable('systemd-localed',
2025 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002027 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 install : true,
2031 install_dir : rootlibexecdir)
2032
2033 exe = executable('localectl',
2034 localectl_sources,
2035 include_directories : includes,
2036 link_with : [libshared],
2037 install_rpath : rootlibexecdir,
2038 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002039 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040endif
2041
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002042if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 executable('systemd-timedated',
2044 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002045 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002046 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002050endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051
Yu Watanabe6129ec82018-05-03 18:07:43 +09002052if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 exe = executable('timedatectl',
2054 'src/timedate/timedatectl.c',
2055 include_directories : includes,
2056 install_rpath : rootlibexecdir,
2057 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002058 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002060 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-timesyncd',
2065 systemd_timesyncd_sources,
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [threads,
2069 libm],
2070 install_rpath : rootlibexecdir,
2071 install : true,
2072 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002073
2074 executable('systemd-time-wait-sync',
2075 'src/time-wait-sync/time-wait-sync.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081endif
2082
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002083if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002084 executable('systemd-machined',
2085 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002086 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 link_with : [libmachine_core,
2088 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002089 install_rpath : rootlibexecdir,
2090 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 install_dir : rootlibexecdir)
2092
2093 exe = executable('machinectl',
2094 'src/machine/machinectl.c',
2095 include_directories : includes,
2096 link_with : [libshared],
2097 dependencies : [threads,
2098 libxz,
2099 liblz4],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002103 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 executable('systemd-importd',
2108 systemd_importd_sources,
2109 include_directories : includes,
2110 link_with : [libshared],
2111 dependencies : [threads],
2112 install_rpath : rootlibexecdir,
2113 install : true,
2114 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002115
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 systemd_pull = executable('systemd-pull',
2117 systemd_pull_sources,
2118 include_directories : includes,
2119 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002120 dependencies : [versiondep,
2121 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122 libz,
2123 libbzip2,
2124 libxz,
2125 libgcrypt],
2126 install_rpath : rootlibexecdir,
2127 install : true,
2128 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 systemd_import = executable('systemd-import',
2131 systemd_import_sources,
2132 include_directories : includes,
2133 link_with : [libshared],
2134 dependencies : [libcurl,
2135 libz,
2136 libbzip2,
2137 libxz],
2138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002142 systemd_import_fs = executable('systemd-import-fs',
2143 systemd_import_fs_sources,
2144 include_directories : includes,
2145 link_with : [libshared],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
2149
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002150 systemd_export = executable('systemd-export',
2151 systemd_export_sources,
2152 include_directories : includes,
2153 link_with : [libshared],
2154 dependencies : [libcurl,
2155 libz,
2156 libbzip2,
2157 libxz],
2158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002161
2162 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163endif
2164
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002165if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166 exe = executable('systemd-journal-upload',
2167 systemd_journal_upload_sources,
2168 include_directories : includes,
2169 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002170 dependencies : [versiondep,
2171 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 libcurl,
2173 libgnutls,
2174 libxz,
2175 liblz4],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootlibexecdir)
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_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 s_j_remote = executable('systemd-journal-remote',
2184 systemd_journal_remote_sources,
2185 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002186 link_with : [libshared,
2187 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002188 dependencies : [threads,
2189 libmicrohttpd,
2190 libgnutls,
2191 libxz,
2192 liblz4],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002197 s_j_gatewayd = executable('systemd-journal-gatewayd',
2198 systemd_journal_gatewayd_sources,
2199 include_directories : includes,
2200 link_with : [libshared],
2201 dependencies : [threads,
2202 libmicrohttpd,
2203 libgnutls,
2204 libxz,
2205 liblz4],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootlibexecdir)
2209 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210endif
2211
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002212if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002213 executable('systemd-coredump',
2214 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002215 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002216 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 libacl,
2219 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002220 libxz,
2221 liblz4],
2222 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002223 install : true,
2224 install_dir : rootlibexecdir)
2225
2226 exe = executable('coredumpctl',
2227 coredumpctl_sources,
2228 include_directories : includes,
2229 link_with : [libshared],
2230 dependencies : [threads,
2231 libxz,
2232 liblz4],
2233 install_rpath : rootlibexecdir,
2234 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002235 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236endif
2237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002238if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 exe = executable('systemd-binfmt',
2240 'src/binfmt/binfmt.c',
2241 include_directories : includes,
2242 link_with : [libshared],
2243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002246 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247
2248 meson.add_install_script('sh', '-c',
2249 mkdir_p.format(binfmtdir))
2250 meson.add_install_script('sh', '-c',
2251 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2252endif
2253
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002254if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 executable('systemd-vconsole-setup',
2256 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257 include_directories : includes,
2258 link_with : [libshared],
2259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262endif
2263
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002264if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002265 executable('systemd-random-seed',
2266 'src/random-seed/random-seed.c',
2267 include_directories : includes,
2268 link_with : [libshared],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272endif
2273
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002274if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 executable('systemd-firstboot',
2276 'src/firstboot/firstboot.c',
2277 include_directories : includes,
2278 link_with : [libshared],
2279 dependencies : [libcrypt],
2280 install_rpath : rootlibexecdir,
2281 install : true,
2282 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002283endif
2284
2285executable('systemd-remount-fs',
2286 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002288 link_with : [libcore_shared,
2289 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002290 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291 install : true,
2292 install_dir : rootlibexecdir)
2293
2294executable('systemd-machine-id-setup',
2295 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002297 link_with : [libcore_shared,
2298 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002299 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300 install : true,
2301 install_dir : rootbindir)
2302
2303executable('systemd-fsck',
2304 'src/fsck/fsck.c',
2305 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002307 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308 install : true,
2309 install_dir : rootlibexecdir)
2310
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002311executable('systemd-growfs',
2312 'src/partition/growfs.c',
2313 include_directories : includes,
2314 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002315 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002316 install_rpath : rootlibexecdir,
2317 install : true,
2318 install_dir : rootlibexecdir)
2319
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002320executable('systemd-makefs',
2321 'src/partition/makefs.c',
2322 include_directories : includes,
2323 link_with : [libshared],
2324 install_rpath : rootlibexecdir,
2325 install : true,
2326 install_dir : rootlibexecdir)
2327
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328executable('systemd-sleep',
2329 'src/sleep/sleep.c',
2330 include_directories : includes,
2331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002332 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333 install : true,
2334 install_dir : rootlibexecdir)
2335
Yu Watanabed25e1272019-01-03 02:32:57 +09002336install_data('src/sleep/sleep.conf',
2337 install_dir : pkgsysconfdir)
2338
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002339exe = executable('systemd-sysctl',
2340 'src/sysctl/sysctl.c',
2341 include_directories : includes,
2342 link_with : [libshared],
2343 install_rpath : rootlibexecdir,
2344 install : true,
2345 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002346public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347
2348executable('systemd-ac-power',
2349 'src/ac-power/ac-power.c',
2350 include_directories : includes,
2351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002352 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353 install : true,
2354 install_dir : rootlibexecdir)
2355
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356exe = executable('systemd-detect-virt',
2357 'src/detect-virt/detect-virt.c',
2358 include_directories : includes,
2359 link_with : [libshared],
2360 install_rpath : rootlibexecdir,
2361 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002362public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364exe = executable('systemd-delta',
2365 'src/delta/delta.c',
2366 include_directories : includes,
2367 link_with : [libshared],
2368 install_rpath : rootlibexecdir,
2369 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002370public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372exe = executable('systemd-escape',
2373 'src/escape/escape.c',
2374 include_directories : includes,
2375 link_with : [libshared],
2376 install_rpath : rootlibexecdir,
2377 install : true,
2378 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002379public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381exe = executable('systemd-notify',
2382 'src/notify/notify.c',
2383 include_directories : includes,
2384 link_with : [libshared],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002388public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389
2390executable('systemd-volatile-root',
2391 'src/volatile-root/volatile-root.c',
2392 include_directories : includes,
2393 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002394 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395 install : true,
2396 install_dir : rootlibexecdir)
2397
2398executable('systemd-cgroups-agent',
2399 'src/cgroups-agent/cgroups-agent.c',
2400 include_directories : includes,
2401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002402 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403 install : true,
2404 install_dir : rootlibexecdir)
2405
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002406exe = executable('systemd-id128',
2407 'src/id128/id128.c',
2408 include_directories : includes,
2409 link_with : [libshared],
2410 install_rpath : rootlibexecdir,
2411 install : true)
2412public_programs += exe
2413
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414exe = executable('systemd-path',
2415 'src/path/path.c',
2416 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002418 install_rpath : rootlibexecdir,
2419 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002420public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422exe = executable('systemd-ask-password',
2423 'src/ask-password/ask-password.c',
2424 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002425 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426 install_rpath : rootlibexecdir,
2427 install : true,
2428 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002429public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002430
2431executable('systemd-reply-password',
2432 'src/reply-password/reply-password.c',
2433 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002434 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002435 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436 install : true,
2437 install_dir : rootlibexecdir)
2438
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439exe = executable('systemd-tty-ask-password-agent',
2440 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2441 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002442 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002443 install_rpath : rootlibexecdir,
2444 install : true,
2445 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002446public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002447
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448exe = executable('systemd-cgls',
2449 'src/cgls/cgls.c',
2450 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002451 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452 install_rpath : rootlibexecdir,
2453 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002454public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456exe = executable('systemd-cgtop',
2457 'src/cgtop/cgtop.c',
2458 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002459 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460 install_rpath : rootlibexecdir,
2461 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002462public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463
2464executable('systemd-initctl',
2465 'src/initctl/initctl.c',
2466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002467 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002468 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469 install : true,
2470 install_dir : rootlibexecdir)
2471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472exe = executable('systemd-mount',
2473 'src/mount/mount-tool.c',
2474 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002476 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477 install_rpath : rootlibexecdir,
2478 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002479public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002481meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002482 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('systemd-run',
2485 'src/run/run.c',
2486 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002487 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488 install_rpath : rootlibexecdir,
2489 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002490public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002491
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492exe = executable('systemd-stdio-bridge',
2493 'src/stdio-bridge/stdio-bridge.c',
2494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002495 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002496 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 install_rpath : rootlibexecdir,
2498 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002499public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501exe = executable('busctl',
2502 'src/busctl/busctl.c',
2503 'src/busctl/busctl-introspect.c',
2504 'src/busctl/busctl-introspect.h',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 install_rpath : rootlibexecdir,
2508 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002511if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 exe = executable('systemd-sysusers',
2513 'src/sysusers/sysusers.c',
2514 include_directories : includes,
2515 link_with : [libshared],
2516 install_rpath : rootlibexecdir,
2517 install : true,
2518 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002519 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002520endif
2521
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002522if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002523 exe = executable('systemd-tmpfiles',
2524 'src/tmpfiles/tmpfiles.c',
2525 include_directories : includes,
2526 link_with : [libshared],
2527 dependencies : [libacl],
2528 install_rpath : rootlibexecdir,
2529 install : true,
2530 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002531 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002532
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002533 if want_tests != 'false'
2534 test('test-systemd-tmpfiles',
2535 test_systemd_tmpfiles_py,
2536 # https://github.com/mesonbuild/meson/issues/2681
2537 args : exe.full_path())
2538 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539endif
2540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002541if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002542 exe = executable('systemd-hwdb',
2543 'src/hwdb/hwdb.c',
2544 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2545 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002546 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002547 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002548 install : true,
2549 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002550 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002551endif
2552
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002553if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554 executable('systemd-quotacheck',
2555 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002558 install_rpath : rootlibexecdir,
2559 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002561endif
2562
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563exe = executable('systemd-socket-proxyd',
2564 'src/socket-proxy/socket-proxyd.c',
2565 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002566 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002567 dependencies : [threads],
2568 install_rpath : rootlibexecdir,
2569 install : true,
2570 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('systemd-udevd',
2574 systemd_udevd_sources,
2575 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002576 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002579 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002580 dependencies : [versiondep,
2581 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002582 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002583 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002584 libacl,
2585 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002586 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002587 install : true,
2588 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002589public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002591exe = executable('udevadm',
2592 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002593 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002594 include_directories : includes,
2595 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002597 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002598 dependencies : [versiondep,
2599 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002600 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002602 libacl,
2603 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002604 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605 install : true,
2606 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002607public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608
2609executable('systemd-shutdown',
2610 systemd_shutdown_sources,
2611 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002612 link_with : [libcore_shared,
2613 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002614 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002615 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002616 install : true,
2617 install_dir : rootlibexecdir)
2618
2619executable('systemd-update-done',
2620 'src/update-done/update-done.c',
2621 include_directories : includes,
2622 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002623 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002624 install : true,
2625 install_dir : rootlibexecdir)
2626
2627executable('systemd-update-utmp',
2628 'src/update-utmp/update-utmp.c',
2629 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002630 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002632 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633 install : true,
2634 install_dir : rootlibexecdir)
2635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002636if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 executable('systemd-modules-load',
2638 'src/modules-load/modules-load.c',
2639 include_directories : includes,
2640 link_with : [libshared],
2641 dependencies : [libkmod],
2642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002645
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002646 meson.add_install_script('sh', '-c',
2647 mkdir_p.format(modulesloaddir))
2648 meson.add_install_script('sh', '-c',
2649 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650endif
2651
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652exe = executable('systemd-nspawn',
2653 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002654 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002655 link_with : [libcore_shared,
2656 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002657 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002658 dependencies : [libblkid,
2659 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002660 install_rpath : rootlibexecdir,
2661 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002662public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002663
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002664if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002665 executable('systemd-networkd',
2666 systemd_networkd_sources,
2667 include_directories : includes,
2668 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002669 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002670 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002672 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002673 install_rpath : rootlibexecdir,
2674 install : true,
2675 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 executable('systemd-networkd-wait-online',
2678 systemd_networkd_wait_online_sources,
2679 include_directories : includes,
2680 link_with : [libnetworkd_core,
2681 libshared],
2682 install_rpath : rootlibexecdir,
2683 install : true,
2684 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002685
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002686 exe = executable('networkctl',
2687 networkctl_sources,
2688 include_directories : includes,
2689 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002690 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002691 install_rpath : rootlibexecdir,
2692 install : true,
2693 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002694 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002695endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002696
2697executable('systemd-sulogin-shell',
2698 ['src/sulogin-shell/sulogin-shell.c'],
2699 include_directories : includes,
2700 link_with : [libshared],
2701 install_rpath : rootlibexecdir,
2702 install : true,
2703 install_dir : rootlibexecdir)
2704
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002705############################################################
2706
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002707custom_target(
2708 'systemd-runtest.env',
2709 output : 'systemd-runtest.env',
2710 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002711 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002712 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002713 '} >@OUTPUT@'],
2714 build_by_default : true)
2715
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002716foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 sources = tuple[0]
2718 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2719 dependencies = tuple[2]
2720 condition = tuple.length() >= 4 ? tuple[3] : ''
2721 type = tuple.length() >= 5 ? tuple[4] : ''
2722 defs = tuple.length() >= 6 ? tuple[5] : []
2723 incs = tuple.length() >= 7 ? tuple[6] : includes
2724 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002725
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002726 name = sources[0].split('/')[-1].split('.')[0]
2727 if type.startswith('timeout=')
2728 timeout = type.split('=')[1].to_int()
2729 type = ''
2730 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002731
2732 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002733 exe = executable(
2734 name,
2735 sources,
2736 include_directories : incs,
2737 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002738 dependencies : [versiondep,
2739 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002740 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002741 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002742 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002743 install : install_tests,
2744 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002745
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 if type == 'manual'
2747 message('@0@ is a manual test'.format(name))
2748 elif type == 'unsafe' and want_tests != 'unsafe'
2749 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002750 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002751 test(name, exe,
2752 env : test_env,
2753 timeout : timeout)
2754 endif
2755 else
2756 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2757 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002758endforeach
2759
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002760exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002761 'test-libsystemd-sym',
2762 test_libsystemd_sym_c,
2763 include_directories : includes,
2764 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002765 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002766 install : install_tests,
2767 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002768if want_tests != 'false'
2769 test('test-libsystemd-sym', exe)
2770endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002771
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002772exe = executable(
2773 'test-libsystemd-static-sym',
2774 test_libsystemd_sym_c,
2775 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002776 link_with : [install_libsystemd_static],
2777 dependencies : [threads], # threads is already included in dependencies on the library,
2778 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002779 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002780 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002781 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002782if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002783 test('test-libsystemd-static-sym', exe)
2784endif
2785
2786exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 'test-libudev-sym',
2788 test_libudev_sym_c,
2789 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002790 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002792 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 install : install_tests,
2794 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002795if want_tests != 'false'
2796 test('test-libudev-sym', exe)
2797endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002798
2799exe = executable(
2800 'test-libudev-static-sym',
2801 test_libudev_sym_c,
2802 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002803 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002804 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002805 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002806 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002807 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002808if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002809 test('test-libudev-static-sym', exe)
2810endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002811
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002812############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002813
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002814fuzzer_exes = []
2815
Michael Olbrich59967402018-11-11 11:27:35 +01002816if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002817foreach tuple : fuzzers
2818 sources = tuple[0]
2819 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2820 dependencies = tuple[2]
2821 defs = tuple.length() >= 4 ? tuple[3] : []
2822 incs = tuple.length() >= 5 ? tuple[4] : includes
2823
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002824 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002825 dependencies += fuzzing_engine
2826 else
2827 sources += 'src/fuzz/fuzz-main.c'
2828 endif
2829
2830 name = sources[0].split('/')[-1].split('.')[0]
2831
2832 fuzzer_exes += executable(
2833 name,
2834 sources,
2835 include_directories : [incs, include_directories('src/fuzz')],
2836 link_with : link_with,
2837 dependencies : dependencies,
2838 c_args : defs,
2839 install : false)
2840endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002841endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002842
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002843run_target('fuzzers',
2844 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002845 command : ['true'])
2846
2847############################################################
2848
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002849make_directive_index_py = find_program('tools/make-directive-index.py')
2850make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002851xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002852hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002853
2854subdir('units')
2855subdir('sysctl.d')
2856subdir('sysusers.d')
2857subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002858subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859subdir('hwdb')
2860subdir('network')
2861subdir('man')
2862subdir('shell-completion/bash')
2863subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002864subdir('docs/sysvinit')
2865subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002866
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002867install_subdir('factory/etc',
2868 install_dir : factorydir)
2869
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002870install_data('xorg/50-systemd-user.sh',
2871 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002872install_data('modprobe.d/systemd.conf',
2873 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002874install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002875 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002876 'NEWS',
2877 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302878 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002879 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002880 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302881 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002882 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002883 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002884 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002885 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2886 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002887
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002888meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2889meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2890
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002891############################################################
2892
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002893meson_check_help = find_program('tools/meson-check-help.sh')
2894
2895foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002896 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002897 if want_tests != 'false'
2898 test('check-help-' + name,
2899 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002900 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002901 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002902endforeach
2903
2904############################################################
2905
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002906# Enable tests for all supported sanitizers
2907foreach tuple : sanitizers
2908 sanitizer = tuple[0]
2909 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002910
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002911 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002912 prev = ''
2913 foreach p : fuzz_regression_tests
2914 b = p.split('/')[-2]
2915 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002916
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002917 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002918
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002919 if name != prev
2920 if want_tests == 'false'
2921 message('Not compiling @0@ because tests is set to false'.format(name))
2922 elif slow_tests
2923 exe = custom_target(
2924 name,
2925 output : name,
2926 depends : build,
2927 command : [env, 'ln', '-fs',
2928 join_paths(build.full_path(), b),
2929 '@OUTPUT@'],
2930 build_by_default : true)
2931 else
2932 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2933 endif
2934 endif
2935 prev = name
2936
2937 if want_tests != 'false' and slow_tests
2938 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2939 env,
2940 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002941 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002942 endif
2943 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002944 endif
2945endforeach
2946
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002947
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002948############################################################
2949
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002950if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002951 all_files = run_command(
2952 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002953 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002954 'ls-files',
2955 ':/*.[ch]'])
2956 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002957
userwithuide85a6902017-08-09 13:41:44 +00002958 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002959 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002960 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002961 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002962 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002963 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002964 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002965endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002966
2967if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002968 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002969 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002970 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002971 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002972endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002973
2974if git.found()
2975 git_head = run_command(
2976 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002977 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002978 'rev-parse', 'HEAD']).stdout().strip()
2979 git_head_short = run_command(
2980 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002981 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002982 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2983
2984 run_target(
2985 'git-snapshot',
2986 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002987 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002988 git_head_short),
2989 '--prefix', 'systemd-@0@/'.format(git_head),
2990 'HEAD'])
2991endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002992
2993############################################################
2994
Lennart Poettering51b13862017-12-20 12:51:14 +01002995meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2996run_target(
2997 'check-api-docs',
2998 depends : [man, libsystemd, libudev],
2999 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3000
3001############################################################
3002
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003003status = [
3004 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3005
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003006 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003007 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003008 'prefix directory: @0@'.format(prefixdir),
3009 'rootprefix directory: @0@'.format(rootprefixdir),
3010 'sysconf directory: @0@'.format(sysconfdir),
3011 'include directory: @0@'.format(includedir),
3012 'lib directory: @0@'.format(libdir),
3013 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003014 'SysV init scripts: @0@'.format(sysvinit_path),
3015 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003016 'PAM modules directory: @0@'.format(pamlibdir),
3017 'PAM configuration directory: @0@'.format(pamconfdir),
3018 'RPM macros directory: @0@'.format(rpmmacrosdir),
3019 'modprobe.d directory: @0@'.format(modprobedir),
3020 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3021 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3022 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3023 'bash completions directory: @0@'.format(bashcompletiondir),
3024 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003025 'extra start script: @0@'.format(get_option('rc-local')),
3026 'extra stop script: @0@'.format(get_option('halt-local')),
3027 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3028 get_option('debug-tty')),
3029 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003030 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003031 'maximum system UID: @0@'.format(system_uid_max),
3032 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003033 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3034 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3035 'minimum container UID base: @0@'.format(container_uid_base_min),
3036 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003037 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003038 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003039 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003040 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003041 'nobody user name: @0@'.format(nobody_user),
3042 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003043 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003044 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003045
3046 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003047 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003048 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003049 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003050 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3051 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003052
3053alt_dns_servers = '\n '.join(dns_servers.split(' '))
3054alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3055status += [
3056 'default DNS servers: @0@'.format(alt_dns_servers),
3057 'default NTP servers: @0@'.format(alt_ntp_servers)]
3058
3059alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3060 '@@0@'.format(time_epoch)).stdout().strip()
3061status += [
3062 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3063
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003064status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003065 'static libsystemd: @0@'.format(static_libsystemd),
3066 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003067
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003068# TODO:
3069# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3070# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3071# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003073if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003074 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003075
3076 if have_gnu_efi
3077 status += [
3078 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003079 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003080 'EFI lib directory: @0@'.format(efi_libdir),
3081 'EFI lds directory: @0@'.format(efi_ldsdir),
3082 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003083 endif
3084endif
3085
3086found = []
3087missing = []
3088
3089foreach tuple : [
3090 ['libcryptsetup'],
3091 ['PAM'],
3092 ['AUDIT'],
3093 ['IMA'],
3094 ['AppArmor'],
3095 ['SELinux'],
3096 ['SECCOMP'],
3097 ['SMACK'],
3098 ['zlib'],
3099 ['xz'],
3100 ['lz4'],
3101 ['bzip2'],
3102 ['ACL'],
3103 ['gcrypt'],
3104 ['qrencode'],
3105 ['microhttpd'],
3106 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003107 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003108 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003109 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003110 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003111 ['libidn'],
3112 ['libiptc'],
3113 ['elfutils'],
3114 ['binfmt'],
3115 ['vconsole'],
3116 ['quotacheck'],
3117 ['tmpfiles'],
3118 ['environment.d'],
3119 ['sysusers'],
3120 ['firstboot'],
3121 ['randomseed'],
3122 ['backlight'],
3123 ['rfkill'],
3124 ['logind'],
3125 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003126 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003127 ['importd'],
3128 ['hostnamed'],
3129 ['timedated'],
3130 ['timesyncd'],
3131 ['localed'],
3132 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003133 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003134 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3135 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003136 ['coredump'],
3137 ['polkit'],
3138 ['legacy pkla', install_polkit_pkla],
3139 ['efi'],
3140 ['gnu-efi', have_gnu_efi],
3141 ['kmod'],
3142 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003143 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144 ['blkid'],
3145 ['dbus'],
3146 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003147 ['nss-myhostname'],
3148 ['nss-mymachines'],
3149 ['nss-resolve'],
3150 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003151 ['hwdb'],
3152 ['tpm'],
3153 ['man pages', want_man],
3154 ['html pages', want_html],
3155 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003156 ['SysV compat'],
3157 ['utmp'],
3158 ['ldconfig'],
3159 ['hibernate'],
3160 ['adm group', get_option('adm-group')],
3161 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003162 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003163 ['debug hashmap'],
3164 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003165 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003166 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003167 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003168 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003169 ['link-udev-shared', get_option('link-udev-shared')],
3170 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003171]
3172
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003173 if tuple.length() >= 2
3174 cond = tuple[1]
3175 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003176 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3177 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003178 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003179 endif
3180 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003181 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003182 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003183 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 endif
3185endforeach
3186
3187status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003188 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003189 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003190 '',
3191 'disabled features: @0@'.format(', '.join(missing)),
3192 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003193message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003194
3195if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003196 warning('\n' +
3197 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3198 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3199 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003200endif