blob: 848140bb03fbdceb4c94824f19165807592bb69b [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-Szmek78af8a72019-11-22 14:41:10 +01004 version : '244',
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-Szmek827ca902019-11-10 11:39:15 +010011 'warning_level=2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040012 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090013 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040014 )
15
Zbigniew Jędrzejewski-Szmek78af8a72019-11-22 14:41:10 +010016libsystemd_version = '0.27.1'
17libudev_version = '1.6.16'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020018
Yu Watanabe348b4432018-05-07 18:17:35 +090019# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# Also, for hysterical reasons, we use different variable
21# names, sometimes. Not all variables are included in every
22# set. Ugh, ugh, ugh!
23conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010024conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040025
26substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010027substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040029
Davide Cavalca1485aac2019-02-27 11:19:07 -050030# This is to be used instead of meson.source_root(), as the latter will return
31# the wrong result when systemd is being built as a meson subproject
32project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020033relative_source_path = run_command('realpath',
34 '--relative-to=@0@'.format(meson.current_build_dir()),
35 project_source_root).stdout().strip()
36conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050037
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020038want_ossfuzz = get_option('oss-fuzz')
39want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000040want_fuzzbuzz = get_option('fuzzbuzz')
41if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
42 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020043endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000044
45skip_deps = want_ossfuzz or want_libfuzzer
46fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020047
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040048#####################################################################
49
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040050# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050051git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052if git_hook.returncode() == 0
53 message(git_hook.stdout().strip())
54endif
55
56#####################################################################
57
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010058if get_option('split-usr') == 'auto'
59 split_usr = run_command('test', '-L', '/bin').returncode() != 0
60else
61 split_usr = get_option('split-usr') == 'true'
62endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010063conf.set10('HAVE_SPLIT_USR', split_usr,
64 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010065
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010066if get_option('split-bin') == 'auto'
67 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
68else
69 split_bin = get_option('split-bin') == 'true'
70endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010071conf.set10('HAVE_SPLIT_BIN', split_bin,
72 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010073
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075# Unusual rootprefixdir values are used by some distros
76# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010077rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010078if rootprefixdir == ''
79 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010080endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010081rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082
83sysvinit_path = get_option('sysvinit-path')
84sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090085conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020086 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020088conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
89conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010090conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020091
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010092# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040093# encountered, so this should canonicalize various paths when they are
94# absolute or relative.
95prefixdir = get_option('prefix')
96if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040097 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040098endif
99bindir = join_paths(prefixdir, get_option('bindir'))
100libdir = join_paths(prefixdir, get_option('libdir'))
101sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
102includedir = join_paths(prefixdir, get_option('includedir'))
103datadir = join_paths(prefixdir, get_option('datadir'))
104localstatedir = join_paths('/', get_option('localstatedir'))
105
106rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100107rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400108rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
109
110rootlibdir = get_option('rootlibdir')
111if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400112 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400113endif
114
115# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200116pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
117pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
119polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
120polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400121xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900122rpmmacrosdir = get_option('rpmmacrosdir')
123if rpmmacrosdir != 'no'
124 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
125endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200126modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400127
128# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400129pkgdatadir = join_paths(datadir, 'systemd')
130environmentdir = join_paths(prefixdir, 'lib/environment.d')
131pkgsysconfdir = join_paths(sysconfdir, 'systemd')
132userunitdir = join_paths(prefixdir, 'lib/systemd/user')
133userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
134tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
135sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
136sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
137binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
138modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
139networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
140pkgincludedir = join_paths(includedir, 'systemd')
141systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
142usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
143systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
144userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
145systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
146systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
147systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
148systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
149udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
151udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
152catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
153kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
154factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400155bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
156testsdir = join_paths(prefixdir, 'lib/systemd/tests')
157systemdstatedir = join_paths(localstatedir, 'lib/systemd')
158catalogstatedir = join_paths(systemdstatedir, 'catalog')
159randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200160profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200161ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162
tblume75aaade2018-02-01 22:46:15 +0100163docdir = get_option('docdir')
164if docdir == ''
165 docdir = join_paths(datadir, 'doc/systemd')
166endif
167
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168dbuspolicydir = get_option('dbuspolicydir')
169if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
173dbussessionservicedir = get_option('dbussessionservicedir')
174if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178dbussystemservicedir = get_option('dbussystemservicedir')
179if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183pamlibdir = get_option('pamlibdir')
184if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
188pamconfdir = get_option('pamconfdir')
189if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400190 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191endif
192
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100193memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200194status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100195
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
199conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
200conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400201conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100202
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100203conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100204
Michael Bieble17e5ba2017-04-13 10:30:56 -0400205conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400206conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
207conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
209conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
210conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
211conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100212conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100213conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
215conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
216conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
217conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
218conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100219conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400220conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
222conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
224conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
225conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
226conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
227conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
228conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400229conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
230conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700231conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700232conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400234conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235conf.set_quoted('LIBDIR', libdir)
236conf.set_quoted('ROOTLIBDIR', rootlibdir)
237conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
238conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400239conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
240conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200241conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400242conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
243conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
244conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
245conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200246conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200247conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100248conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200249conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100252substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100253substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400254substs.set('exec_prefix', prefixdir)
255substs.set('libdir', libdir)
256substs.set('rootlibdir', rootlibdir)
257substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100258substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400259substs.set('bindir', bindir)
260substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('rootlibexecdir', rootlibexecdir)
262substs.set('systemunitdir', systemunitdir)
263substs.set('userunitdir', userunitdir)
264substs.set('systempresetdir', systempresetdir)
265substs.set('userpresetdir', userpresetdir)
266substs.set('udevhwdbdir', udevhwdbdir)
267substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400268substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200269substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400270substs.set('catalogdir', catalogdir)
271substs.set('tmpfilesdir', tmpfilesdir)
272substs.set('sysusersdir', sysusersdir)
273substs.set('sysctldir', sysctldir)
274substs.set('binfmtdir', binfmtdir)
275substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200276substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277substs.set('systemgeneratordir', systemgeneratordir)
278substs.set('usergeneratordir', usergeneratordir)
279substs.set('systemenvgeneratordir', systemenvgeneratordir)
280substs.set('userenvgeneratordir', userenvgeneratordir)
281substs.set('systemshutdowndir', systemshutdowndir)
282substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400283substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400284substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400285substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
286substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
287substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100288substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200289substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200290substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200291substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400292
293#####################################################################
294
295cc = meson.get_compiler('c')
296pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400297check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100298meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400299
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200300want_tests = get_option('tests')
301slow_tests = want_tests != 'false' and get_option('slow-tests')
302install_tests = get_option('install-tests')
303
James Hilliard46e63a22018-12-27 09:16:20 +0800304if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200305 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100306 cxx = meson.get_compiler('cpp')
307 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200308else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200309 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400310endif
311
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500312if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200313 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
314 if fuzzing_engine.found()
315 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
316 elif cc.has_argument('-fsanitize=fuzzer-no-link')
317 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
318 else
319 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
320 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200321elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500322 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000323elif want_fuzzbuzz
324 fuzzing_engine = meson.get_compiler('cpp').find_library(get_option('fuzzbuzz-engine'), dirs: get_option('fuzzbuzz-engine-dir'))
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500325endif
326
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100327# Those generate many false positives, and we do not want to change the code to
328# avoid them.
329basic_disabled_warnings = [
330 '-Wno-unused-parameter',
331 '-Wno-missing-field-initializers',
332 '-Wno-unused-result',
333 '-Wno-format-signedness',
334]
335if get_option('b_ndebug') == 'true'
336 # With asserts disabled with get a bunch of warnings about variables which
337 # are used only in the asserts. This is not useful at all, so let's just silence
338 # those warnings.
339 basic_disabled_warnings += [
340 '-Wno-unused-variable',
341 '-Wno-unused-but-set-variable',
342 ]
343endif
344
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-Werror=undef',
347 '-Wlogical-op',
348 '-Wmissing-include-dirs',
349 '-Wold-style-definition',
350 '-Wpointer-arith',
351 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900352 '-Wfloat-equal',
353 '-Wsuggest-attribute=noreturn',
354 '-Werror=missing-prototypes',
355 '-Werror=implicit-function-declaration',
356 '-Werror=missing-declarations',
357 '-Werror=return-type',
358 '-Werror=incompatible-pointer-types',
359 '-Werror=format=2',
360 '-Wstrict-prototypes',
361 '-Wredundant-decls',
362 '-Wmissing-noreturn',
363 '-Wimplicit-fallthrough=5',
364 '-Wshadow',
365 '-Wendif-labels',
366 '-Wstrict-aliasing=2',
367 '-Wwrite-strings',
368 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200369 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200370 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900371 '-Wdate-time',
372 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700373
374 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100375 '-Wno-error=#warnings', # clang
376 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700377
378 # work-around for gcc 7.1 turning this on on its own.
379 '-Wno-error=nonnull',
380
381 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
382 # optimizations enabled, producing essentially false positives.
383 '-Wno-maybe-uninitialized',
384
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900385 '-ffast-math',
386 '-fno-common',
387 '-fdiagnostics-show-option',
388 '-fno-strict-aliasing',
389 '-fvisibility=hidden',
390 '-fstack-protector',
391 '-fstack-protector-strong',
392 '--param=ssp-buffer-size=4',
393]
394
395# --as-needed and --no-undefined are provided by meson by default,
396# run mesonconf to see what is enabled
397possible_link_flags = [
398 '-Wl,-z,relro',
399 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200400 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900401]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403if cc.get_id() == 'clang'
404 possible_cc_flags += [
405 '-Wno-typedef-redefinition',
406 '-Wno-gnu-variable-sized-type-not-at-end',
407 ]
408endif
409
410if get_option('buildtype') != 'debug'
411 possible_cc_flags += [
412 '-ffunction-sections',
413 '-fdata-sections',
414 ]
415
416 possible_link_flags += '-Wl,--gc-sections'
417endif
418
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100419add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900420add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900421add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900422
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800423if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424 #include <time.h>
425 #include <inttypes.h>
426 typedef uint64_t usec_t;
427 usec_t now(clockid_t clock);
428 int main(void) {
429 struct timespec now;
430 return 0;
431 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100432''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400433 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434endif
435
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100436if cxx_cmd != ''
437 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
438endif
439
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200440cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400441
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200442has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444#####################################################################
445# compilation result tests
446
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400447conf.set('_GNU_SOURCE', true)
448conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200449conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450
451conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
452conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
457conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
458
459decl_headers = '''
460#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100461#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463
464foreach decl : ['char16_t',
465 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100466 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400468
469 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200470 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
471
472 if decl == 'struct statx'
473 if have
474 want_linux_stat_h = false
475 else
476 have = cc.sizeof(decl,
477 prefix : decl_headers + '#include <linux/stat.h>',
478 args : '-D_GNU_SOURCE') > 0
479 want_linux_stat_h = have
480 endif
481 endif
482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484endforeach
485
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200486conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700487
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200489 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490endforeach
491
492foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100494 ['gettid', '''#include <sys/types.h>
495 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100496 ['pivot_root', '''#include <stdlib.h>
497 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 #include <sys/stat.h>
500 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100502 ['renameat2', '''#include <stdio.h>
503 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 ['kcmp', '''#include <linux/kcmp.h>'''],
505 ['keyctl', '''#include <sys/types.h>
506 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200509 ['bpf', '''#include <sys/syscall.h>
510 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100511 ['statx', '''#include <sys/types.h>
512 #include <sys/stat.h>
513 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100514 ['explicit_bzero' , '''#include <string.h>'''],
515 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100516 ['set_mempolicy', '''#include <stdlib.h>
517 #include <unistd.h>'''],
518 ['get_mempolicy', '''#include <stdlib.h>
519 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200520 ['pidfd_send_signal', '''#include <stdlib.h>
521 #include <unistd.h>
522 #include <signal.h>
523 #include <sys/wait.h>'''],
524 ['pidfd_open', '''#include <stdlib.h>
525 #include <unistd.h>
526 #include <signal.h>
527 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100528 ['rt_sigqueueinfo', '''#include <stdlib.h>
529 #include <unistd.h>
530 #include <signal.h>
531 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200535 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536endforeach
537
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541else
542 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200543 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200544 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400545endif
546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547#####################################################################
548
Davide Cavalca1485aac2019-02-27 11:19:07 -0500549vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
550 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100551 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100552 meson.project_version()]
553
Louis Taylord1084aa2019-01-21 21:45:36 +0000554version_h = vcs_tag(
555 input : 'src/version/version.h.in',
556 output : 'version.h',
557 command: vcs_tagger)
558
559versiondep = declare_dependency(sources: version_h)
560
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400563m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400565git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100566env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100567perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568
Davide Cavalca1485aac2019-02-27 11:19:07 -0500569meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400570mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400571test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
572splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400573
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
575# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500576progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['kmod', '/usr/bin/kmod' ],
579 ['kexec', '/usr/sbin/kexec' ],
580 ['sulogin', '/usr/sbin/sulogin' ],
581 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
582 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
583 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
584 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200585 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586 ]
587foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588 path = get_option(prog[0] + '-path')
589 if path != ''
590 message('Using @1@ for @0@'.format(prog[0], path))
591 else
592 exe = find_program(prog[0],
593 '/usr/sbin/' + prog[0],
594 '/sbin/' + prog[0],
595 required: false)
596 path = exe.found() ? exe.path() : prog[1]
597 endif
598 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
599 conf.set_quoted(name, path)
600 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endforeach
602
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500603conf.set_quoted('TELINIT', get_option('telinit-path'))
604
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400605if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100606 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400607endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608
609############################################################
610
611gperf = find_program('gperf')
612
613gperf_test_format = '''
614#include <string.h>
615const char * in_word_set(const char *, @0@);
616@1@
617'''
618gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
619gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
620gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
621if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
625 if cc.compiles(gperf_test)
626 gperf_len_type = 'unsigned'
627 else
628 error('unable to determine gperf len type')
629 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632conf.set('GPERF_LEN_TYPE', gperf_len_type,
633 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635############################################################
636
637if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100640foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641 'linux/memfd.h',
642 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200643 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644 'valgrind/memcheck.h',
645 'valgrind/valgrind.h',
646 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200648 conf.set10('HAVE_' + header.underscorify().to_upper(),
649 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650endforeach
651
652############################################################
653
654conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400655conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
656gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657
658default_hierarchy = get_option('default-hierarchy')
659conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
660 description : 'default cgroup hierarchy as string')
661if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
668
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100669default_net_naming_scheme = get_option('default-net-naming-scheme')
670conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
671
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900673if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400674 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900675 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677conf.set('TIME_EPOCH', time_epoch)
678
679system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900680if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400681 system_uid_max = run_command(
682 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800683 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
684 '/etc/login.defs').stdout().strip()
685 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900686 system_uid_max = 999
687 else
688 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800689 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691conf.set('SYSTEM_UID_MAX', system_uid_max)
692substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900695if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 system_gid_max = run_command(
697 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800698 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
699 '/etc/login.defs').stdout().strip()
700 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900701 system_gid_max = 999
702 else
703 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800704 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706conf.set('SYSTEM_GID_MAX', system_gid_max)
707substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708
Yu Watanabeac093402018-05-10 16:04:16 +0900709dynamic_uid_min = get_option('dynamic-uid-min')
710dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100711conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
712conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
713substs.set('dynamicuidmin', dynamic_uid_min)
714substs.set('dynamicuidmax', dynamic_uid_max)
715
Yu Watanabeac093402018-05-10 16:04:16 +0900716container_uid_base_min = get_option('container-uid-base-min')
717container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100718conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
719conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
720substs.set('containeruidbasemin', container_uid_base_min)
721substs.set('containeruidbasemax', container_uid_base_max)
722
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723nobody_user = get_option('nobody-user')
724nobody_group = get_option('nobody-group')
725
Chen Qi2484bff2018-07-23 14:53:09 +0800726if not meson.is_cross_build()
727 getent_result = run_command('getent', 'passwd', '65534')
728 if getent_result.returncode() == 0
729 name = getent_result.stdout().split(':')[0]
730 if name != nobody_user
731 warning('\n' +
732 '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) +
733 'Your build will result in an user table setup that is incompatible with the local system.')
734 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100735 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800736 id_result = run_command('id', '-u', nobody_user)
737 if id_result.returncode() == 0
738 id = id_result.stdout().to_int()
739 if id != 65534
740 warning('\n' +
741 '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) +
742 'Your build will result in an user table setup that is incompatible with the local system.')
743 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100745
Chen Qi2484bff2018-07-23 14:53:09 +0800746 getent_result = run_command('getent', 'group', '65534')
747 if getent_result.returncode() == 0
748 name = getent_result.stdout().split(':')[0]
749 if name != nobody_group
750 warning('\n' +
751 '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) +
752 'Your build will result in an group table setup that is incompatible with the local system.')
753 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100754 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800755 id_result = run_command('id', '-g', nobody_group)
756 if id_result.returncode() == 0
757 id = id_result.stdout().to_int()
758 if id != 65534
759 warning('\n' +
760 '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) +
761 'Your build will result in an group table setup that is incompatible with the local system.')
762 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100763 endif
764endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900765if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900766 warning('\n' +
767 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
768 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900769endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770
771conf.set_quoted('NOBODY_USER_NAME', nobody_user)
772conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900773substs.set('NOBODY_USER_NAME', nobody_user)
774substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100775
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776tty_gid = get_option('tty-gid')
777conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400778substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
Ikey Doherty84786b82017-12-03 12:28:23 +0000780# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900781users_gid = get_option('users-gid')
782substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000783
Yu Watanabe348b4432018-05-07 18:17:35 +0900784conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
785conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Michael Bieblace5e312018-07-13 23:36:13 +0200787dev_kvm_mode = get_option('dev-kvm-mode')
788substs.set('DEV_KVM_MODE', dev_kvm_mode)
789conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100790group_render_mode = get_option('group-render-mode')
791substs.set('GROUP_RENDER_MODE', group_render_mode)
792conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400794kill_user_processes = get_option('default-kill-user-processes')
795conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100796conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400797substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400799dns_servers = get_option('dns-servers')
800conf.set_quoted('DNS_SERVERS', dns_servers)
801substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400803ntp_servers = get_option('ntp-servers')
804conf.set_quoted('NTP_SERVERS', ntp_servers)
805substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806
Dave Reisner8ca9e922018-12-28 07:38:36 -0500807default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900808if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800809 if not meson.is_cross_build()
810 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
811 default_locale = run_command(choose_default_locale_sh).stdout().strip()
812 else
813 default_locale = 'C.UTF-8'
814 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900815endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500816conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
819
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200820service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700821watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
822substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200823
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400824substs.set('SUSHELL', get_option('debug-shell'))
825substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200826conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828enable_debug_hashmap = false
829enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900830enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200831foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900832 if name == 'hashmap'
833 enable_debug_hashmap = true
834 elif name == 'mmap-cache'
835 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900836 elif name == 'siphash'
837 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900838 else
839 message('unknown debug option "@0@", ignoring'.format(name))
840 endif
841endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
843conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900844conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400845
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200846conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200847conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200848
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100849default_user_path = get_option('user-path')
850if default_user_path != ''
851 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100852 default_user_path_display = default_user_path
853else
854 # meson 0.49 fails when ?: is used in .format()
855 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100856endif
857
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100858
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859#####################################################################
860
861threads = dependency('threads')
862librt = cc.find_library('rt')
863libm = cc.find_library('m')
864libdl = cc.find_library('dl')
865libcrypt = cc.find_library('crypt')
866
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400867libcap = dependency('libcap', required : false)
868if not libcap.found()
869 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
870 libcap = cc.find_library('cap')
871endif
872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100874 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875
876want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000877if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400879 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887
888want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000889if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libselinux = dependency('libselinux',
891 version : '>= 2.1.9',
892 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899
900want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000901if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libapparmor = dependency('libapparmor',
903 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911smack_run_label = get_option('smack-run-label')
912if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
915
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400916want_polkit = get_option('polkit')
917install_polkit = false
918install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000919if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400921
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libpolkit = dependency('polkit-gobject-1',
923 required : false)
924 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
925 message('Old polkit detected, will install pkla files')
926 install_polkit_pkla = true
927 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400930
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400931want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000932if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400933 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400937 libacl = []
938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400940
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000942if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000952if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960
961want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libkmod = dependency('libkmod',
964 version : '>= 15',
965 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972
973want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000974if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libpam = cc.find_library('pam', required : want_pam == 'true')
976 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libpam = []
981 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000986if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libmicrohttpd = dependency('libmicrohttpd',
988 version : '>= 0.9.33',
989 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000998if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001000 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001010if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libcurl = dependency('libcurl',
1012 version : '>= 7.32.0',
1013 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001022want_libidn2 = get_option('libidn2')
1023if want_libidn == 'true' and want_libidn2 == 'true'
1024 error('libidn and libidn2 cannot be requested simultaneously')
1025endif
1026
Yu Watanabe1b931392019-06-29 03:13:30 +09001027if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001028 libidn = dependency('libidn2',
1029 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libidn.found()
1031else
1032 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001033 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001036if not have and want_libidn != 'false' and not skip_deps
1037 # libidn is used for both libidn and libidn2 objects
1038 libidn = dependency('libidn',
1039 required : want_libidn == 'true')
1040 have = libidn.found()
1041else
1042 have = false
1043endif
1044conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
1046want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001047if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libiptc = dependency('libiptc',
1049 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
1057want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001058if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libqrencode = dependency('libqrencode',
1060 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libqrencode.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 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001068want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001069if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001070 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1071 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
1075endif
1076if not have
1077 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078 libgcrypt = []
1079 libgpg_error = []
1080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001082
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001084if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libgnutls = dependency('gnutls',
1086 version : '>= 3.1.4',
1087 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001095want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001096if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001097 libopenssl = dependency('openssl',
1098 version : '>= 1.1.0',
1099 required : want_openssl == 'true')
1100 have = libopenssl.found()
1101else
1102 have = false
1103 libopenssl = []
1104endif
1105conf.set10('HAVE_OPENSSL', have)
1106
Lennart Poettering839fddb2019-11-05 11:49:27 +01001107want_p11kit = get_option('p11kit')
1108if want_p11kit != 'false' and not skip_deps
1109 libp11kit = dependency('p11-kit-1',
1110 version : '>= 0.23.3',
1111 required : want_p11kit == 'true')
1112 have = libp11kit.found()
1113else
1114 have = false
1115 libp11kit = []
1116endif
1117conf.set10('HAVE_P11KIT', have)
1118
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001120if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libdw = dependency('libdw',
1122 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001126 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001127endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129
1130want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001131if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libz = dependency('zlib',
1133 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140
1141want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001142if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libbzip2 = cc.find_library('bz2',
1144 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001153if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libxz = dependency('liblzma',
1155 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
1163want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001164if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001166 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001175want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001176if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001177 libxkbcommon = dependency('xkbcommon',
1178 version : '>= 0.3.0',
1179 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001181else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001183 libxkbcommon = []
1184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001186
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001187want_pcre2 = get_option('pcre2')
1188if want_pcre2 != 'false'
1189 libpcre2 = dependency('libpcre2-8',
1190 required : want_pcre2 == 'true')
1191 have = libpcre2.found()
1192else
1193 have = false
1194 libpcre2 = []
1195endif
1196conf.set10('HAVE_PCRE2', have)
1197
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001198want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001199if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001200 libglib = dependency('glib-2.0',
1201 version : '>= 2.22.0',
1202 required : want_glib == 'true')
1203 libgobject = dependency('gobject-2.0',
1204 version : '>= 2.22.0',
1205 required : want_glib == 'true')
1206 libgio = dependency('gio-2.0',
1207 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001208 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001211 libglib = []
1212 libgobject = []
1213 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001214endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216
1217want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001218if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001219 libdbus = dependency('dbus-1',
1220 version : '>= 1.3.2',
1221 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001225 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001228
Yu Watanabe42303dc2017-06-18 05:22:32 +09001229default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001230if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001231 default_dnssec = 'no'
1232endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001234 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1235 default_dnssec = 'no'
1236endif
1237conf.set('DEFAULT_DNSSEC_MODE',
1238 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1239substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1240
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001241dns_over_tls = get_option('dns-over-tls')
1242if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001243 if dns_over_tls == 'openssl'
1244 have_gnutls = false
1245 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001246 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001247 if dns_over_tls == 'gnutls' and not have_gnutls
1248 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1249 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001250 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001251 if dns_over_tls == 'gnutls' or have_gnutls
1252 have_openssl = false
1253 else
1254 have_openssl = conf.get('HAVE_OPENSSL') == 1
1255 if dns_over_tls != 'auto' and not have_openssl
1256 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001257 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001258 endif
1259 endif
1260 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001261else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001262 have = false
1263 have_gnutls = false
1264 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001265endif
1266conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001267conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1268conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001269
Iwan Timmerc9299be2018-06-13 20:26:24 +02001270default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001271if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001272 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001273endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001274if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001275 message('default-dns-over-tls cannot be enabled or set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001276 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001277endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001278conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1279 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1280substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001281
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001283if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001284 have = (conf.get('HAVE_LIBCURL') == 1 and
1285 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286 conf.get('HAVE_XZ') == 1 and
1287 conf.get('HAVE_GCRYPT') == 1)
1288 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001289 error('importd support was requested, but dependencies are not available')
1290 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001291else
1292 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001294conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001295
1296want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001297if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001298 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1299 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001300 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1301 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001302 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001303 # config should be installed when any of the programs are built.
1304 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1305 error('remote support was requested, but dependencies are not available')
1306 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307 have = have_deps[0] or have_deps[1]
1308else
1309 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001311conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001313foreach term : ['utmp',
1314 'hibernate',
1315 'environment-d',
1316 'binfmt',
1317 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001318 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001319 'resolve',
1320 'logind',
1321 'hostnamed',
1322 'localed',
1323 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001324 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001325 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001326 'networkd',
1327 'timedated',
1328 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001329 'firstboot',
1330 'randomseed',
1331 'backlight',
1332 'vconsole',
1333 'quotacheck',
1334 'sysusers',
1335 'tmpfiles',
1336 'hwdb',
1337 'rfkill',
1338 'ldconfig',
1339 'efi',
1340 'tpm',
1341 'ima',
1342 'smack',
1343 'gshadow',
1344 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001345 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001346 'nss-systemd']
1347 have = get_option(term)
1348 name = 'ENABLE_' + term.underscorify().to_upper()
1349 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350endforeach
1351
Yu Watanabe08540a92018-07-18 09:25:57 +09001352foreach tuple : [['nss-mymachines', 'machined'],
1353 ['nss-resolve', 'resolve']]
1354 want = get_option(tuple[0])
1355 if want != 'false'
1356 have = get_option(tuple[1])
1357 if want == 'true' and not have
1358 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1359 endif
1360 else
1361 have = false
1362 endif
1363 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1364 conf.set10(name, have)
1365endforeach
1366
1367enable_nss = false
1368foreach term : ['ENABLE_NSS_MYHOSTNAME',
1369 'ENABLE_NSS_MYMACHINES',
1370 'ENABLE_NSS_RESOLVE',
1371 'ENABLE_NSS_SYSTEMD']
1372 if conf.get(term) == 1
1373 enable_nss = true
1374 endif
1375endforeach
1376conf.set10('ENABLE_NSS', enable_nss)
1377
Yu Watanabe348b4432018-05-07 18:17:35 +09001378conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001379
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001380tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001381fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001382
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001383conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001384
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385#####################################################################
1386
1387if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001389
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001390 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001392 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 elif efi_arch == 'x86_64'
1394 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 elif efi_arch == 'arm'
1397 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001398 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 elif efi_arch == 'aarch64'
1400 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001401 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 else
1403 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001404 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001407 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001409
Yu Watanabeac093402018-05-10 16:04:16 +09001410 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001411else
1412 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001414conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415
1416#####################################################################
1417
1418config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 output : 'config.h',
1420 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421
Yu Watanabe348b4432018-05-07 18:17:35 +09001422meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1423
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001425 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426 'src/shared',
1427 'src/systemd',
1428 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001429 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001430 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431 'src/resolve',
1432 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001433 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434 'src/login',
1435 'src/udev',
1436 'src/libudev',
1437 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001438 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439 'src/libsystemd/sd-bus',
1440 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001441 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 'src/libsystemd/sd-hwdb',
1443 'src/libsystemd/sd-id128',
1444 'src/libsystemd/sd-netlink',
1445 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001446 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001448 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449
1450add_project_arguments('-include', 'config.h', language : 'c')
1451
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001452generate_gperfs = find_program('tools/generate-gperfs.py')
1453
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454subdir('po')
1455subdir('catalog')
1456subdir('src/systemd')
1457subdir('src/basic')
1458subdir('src/libsystemd')
1459subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462
1463libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 'journal-core',
1465 libjournal_core_sources,
1466 journald_gperf_c,
1467 include_directories : includes,
1468 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469
Davide Cavalca1485aac2019-02-27 11:19:07 -05001470libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001473 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001474 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 include_directories : includes,
1476 link_args : ['-shared',
1477 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001478 link_with : [libbasic,
1479 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001480 link_whole : [libsystemd_static,
1481 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 dependencies : [threads,
1483 librt,
1484 libxz,
1485 liblz4],
1486 link_depends : libsystemd_sym,
1487 install : true,
1488 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489
Davide Cavalca70848ec2018-04-09 02:43:35 -07001490static_libsystemd = get_option('static-libsystemd')
1491static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1492
1493install_libsystemd_static = static_library(
1494 'systemd',
1495 libsystemd_sources,
1496 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001497 basic_sources,
1498 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001499 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001500 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001501 build_by_default : static_libsystemd != 'false',
1502 install : static_libsystemd != 'false',
1503 install_dir : rootlibdir,
1504 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1505 dependencies : [threads,
1506 librt,
1507 libxz,
1508 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001509 libcap,
1510 libblkid,
1511 libmount,
1512 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001513 libgcrypt],
1514 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1515
Mario Limonciellob61d7772019-09-09 22:49:35 +01001516#Generate autosuspend rules
1517make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519############################################################
1520
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001521# binaries that have --help and are intended for use by humans,
1522# usually, but not always, installed in /bin.
1523public_programs = []
1524
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525subdir('src/libudev')
1526subdir('src/shared')
1527subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001528subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529subdir('src/udev')
1530subdir('src/network')
1531
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001532subdir('src/analyze')
1533subdir('src/journal-remote')
1534subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001535subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001536subdir('src/hostname')
1537subdir('src/import')
1538subdir('src/kernel-install')
1539subdir('src/locale')
1540subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001541subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001542subdir('src/userdb')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001543subdir('src/nspawn')
1544subdir('src/resolve')
1545subdir('src/timedate')
1546subdir('src/timesync')
1547subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001548subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001549
1550subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001551subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001552subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001553subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001554
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001555############################################################
1556
1557# only static linking apart from libdl, to make sure that the
1558# module is linked to all libraries that it uses.
1559test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 'test-dlopen',
1561 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001562 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 include_directories : includes,
1564 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001565 dependencies : [libdl],
1566 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001567
Yu Watanabe08540a92018-07-18 09:25:57 +09001568foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001569 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001570 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1571 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001572
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001573 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 if condition
1575 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001578 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001579
Lennart Poettering1684c562019-07-04 18:31:11 +02001580 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1581 if tuple.length() > 2
1582 sources += tuple[2].split()
1583 endif
1584
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 nss = shared_library(
1586 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001587 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001588 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 version : '2',
1590 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001591 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1592 link_args : ['-Wl,-z,nodelete',
1593 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001594 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001595 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001596 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 libbasic],
1598 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001599 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 link_depends : sym,
1601 install : true,
1602 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001603
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 # We cannot use shared_module because it does not support version suffix.
1605 # Unfortunately shared_library insists on creating the symlink…
1606 meson.add_install_script('sh', '-c',
1607 'rm $DESTDIR@0@/libnss_@1@.so'
1608 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001609
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001610 if want_tests != 'false'
1611 test('dlopen-nss_' + module,
1612 test_dlopen,
1613 # path to dlopen must include a slash
1614 args : nss.full_path())
1615 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001617endforeach
1618
1619############################################################
1620
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621executable('systemd',
1622 systemd_sources,
1623 include_directories : includes,
1624 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001625 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001626 dependencies : [versiondep,
1627 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628 librt,
1629 libseccomp,
1630 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001631 libmount,
1632 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001633 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634 install : true,
1635 install_dir : rootlibexecdir)
1636
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001637meson.add_install_script(meson_make_symlink,
1638 join_paths(rootlibexecdir, 'systemd'),
1639 join_paths(rootsbindir, 'init'))
1640
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001641exe = executable('systemd-analyze',
1642 systemd_analyze_sources,
1643 include_directories : includes,
1644 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001645 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001646 dependencies : [versiondep,
1647 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001648 librt,
1649 libseccomp,
1650 libselinux,
1651 libmount,
1652 libblkid],
1653 install_rpath : rootlibexecdir,
1654 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001655public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656
1657executable('systemd-journald',
1658 systemd_journald_sources,
1659 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001660 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001661 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001662 dependencies : [threads,
1663 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001664 liblz4,
1665 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001666 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667 install : true,
1668 install_dir : rootlibexecdir)
1669
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670exe = executable('systemd-cat',
1671 systemd_cat_sources,
1672 include_directories : includes,
1673 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001674 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675 dependencies : [threads],
1676 install_rpath : rootlibexecdir,
1677 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001678public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680exe = executable('journalctl',
1681 journalctl_sources,
1682 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001683 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001684 dependencies : [threads,
1685 libqrencode,
1686 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001687 liblz4,
1688 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001692public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693
1694executable('systemd-getty-generator',
1695 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001697 link_with : [libshared],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701
1702executable('systemd-debug-generator',
1703 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001705 link_with : [libshared],
1706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001710executable('systemd-run-generator',
1711 'src/run-generator/run-generator.c',
1712 include_directories : includes,
1713 link_with : [libshared],
1714 install_rpath : rootlibexecdir,
1715 install : true,
1716 install_dir : systemgeneratordir)
1717
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718executable('systemd-fstab-generator',
1719 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001721 link_with : [libcore_shared,
1722 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001727if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 executable('30-systemd-environment-d-generator',
1729 'src/environment-d-generator/environment-d-generator.c',
1730 include_directories : includes,
1731 link_with : [libshared],
1732 install_rpath : rootlibexecdir,
1733 install : true,
1734 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001735
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 meson.add_install_script(meson_make_symlink,
1737 join_paths(sysconfdir, 'environment'),
1738 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739endif
1740
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001741if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 executable('systemd-hibernate-resume-generator',
1743 'src/hibernate-resume/hibernate-resume-generator.c',
1744 include_directories : includes,
1745 link_with : [libshared],
1746 install_rpath : rootlibexecdir,
1747 install : true,
1748 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-hibernate-resume',
1751 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001752 include_directories : includes,
1753 link_with : [libshared],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757endif
1758
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001759if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 executable('systemd-gpt-auto-generator',
1761 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001762 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001764 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 dependencies : libblkid,
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : systemgeneratordir)
1769
1770 exe = executable('systemd-dissect',
1771 'src/dissect/dissect.c',
1772 include_directories : includes,
1773 link_with : [libshared],
1774 install_rpath : rootlibexecdir,
1775 install : true,
1776 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001777 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778endif
1779
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001780if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('systemd-resolved',
1782 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001783 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001784 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001785 libbasic_gcrypt,
1786 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001787 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001788 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 install : true,
1790 install_dir : rootlibexecdir)
1791
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001792 exe = executable('resolvectl',
1793 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001795 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001796 libbasic_gcrypt,
1797 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001799 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 libm,
1801 libidn],
1802 install_rpath : rootlibexecdir,
1803 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001804 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001805
1806 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001807 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001808 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001809
1810 meson.add_install_script(meson_make_symlink,
1811 join_paths(bindir, 'resolvectl'),
1812 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001813endif
1814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001815if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 executable('systemd-logind',
1817 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001818 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001820 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001821 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001823 install_rpath : rootlibexecdir,
1824 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 exe = executable('loginctl',
1828 loginctl_sources,
1829 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001830 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 dependencies : [threads,
1832 liblz4,
1833 libxz],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001837 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001838
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 exe = executable('systemd-inhibit',
1840 'src/login/inhibit.c',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 install_rpath : rootlibexecdir,
1844 install : true,
1845 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001846 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001847
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001848 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001849 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 pam_systemd = shared_library(
1851 'pam_systemd',
1852 pam_systemd_c,
1853 name_prefix : '',
1854 include_directories : includes,
1855 link_args : ['-shared',
1856 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001857 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 libshared_static],
1859 dependencies : [threads,
1860 libpam,
1861 libpam_misc],
1862 link_depends : pam_systemd_sym,
1863 install : true,
1864 install_dir : pamlibdir)
1865
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001866 if want_tests != 'false'
1867 test('dlopen-pam_systemd',
1868 test_dlopen,
1869 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001870 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001871 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001873
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001874 executable('systemd-user-runtime-dir',
1875 user_runtime_dir_sources,
1876 include_directories : includes,
1877 link_with : [libshared],
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
1881endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001883if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 executable('systemd-user-sessions',
1885 'src/user-sessions/user-sessions.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891endif
1892
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001893if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 exe = executable('bootctl',
1895 'src/boot/bootctl.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [libblkid],
1899 install_rpath : rootlibexecdir,
1900 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001901 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001902
1903 executable('systemd-bless-boot',
1904 'src/boot/bless-boot.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [libblkid],
1908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001911
1912 executable('systemd-bless-boot-generator',
1913 'src/boot/bless-boot-generator.c',
1914 include_directories : includes,
1915 link_with : [libshared],
1916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919endif
1920
Lennart Poetteringf876f532018-06-25 16:07:33 +02001921executable('systemd-boot-check-no-failures',
1922 'src/boot/boot-check-no-failures.c',
1923 include_directories : includes,
1924 link_with : [libshared],
1925 dependencies : [libblkid],
1926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : rootlibexecdir)
1929
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001930exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1931 include_directories : includes,
1932 link_with : [libshared],
1933 dependencies : [threads],
1934 install_rpath : rootlibexecdir,
1935 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001936public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001937
Felipe Satelerf3794362018-05-22 15:08:57 -04001938
1939if get_option('link-systemctl-shared')
1940 systemctl_link_with = [libshared]
1941else
1942 systemctl_link_with = [libsystemd_static,
1943 libshared_static,
1944 libjournal_client,
1945 libbasic_gcrypt]
1946endif
1947
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001948exe = executable('systemctl',
1949 'src/systemctl/systemctl.c',
1950 'src/systemctl/sysv-compat.h',
1951 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001952 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001953 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001954 dependencies : [threads,
1955 libcap,
1956 libselinux,
1957 libxz,
1958 liblz4],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001962public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963
Lennart Poettering61d05782018-04-16 21:41:40 +02001964if conf.get('ENABLE_PORTABLED') == 1
1965 executable('systemd-portabled',
1966 systemd_portabled_sources,
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [threads],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : rootlibexecdir)
1973
1974 exe = executable('portablectl', 'src/portable/portablectl.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 dependencies : [threads],
1978 install_rpath : rootlibexecdir,
1979 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001980 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001981 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001982endif
1983
Lennart Poetteringd093b622019-07-04 18:33:30 +02001984if conf.get('ENABLE_USERDB') == 1
1985 executable('systemd-userwork',
1986 systemd_userwork_sources,
1987 include_directories : includes,
1988 link_with : [libshared],
1989 dependencies : [threads],
1990 install_rpath : rootlibexecdir,
1991 install : true,
1992 install_dir : rootlibexecdir)
1993
1994 executable('systemd-userdbd',
1995 systemd_userdbd_sources,
1996 include_directories : includes,
1997 link_with : [libshared],
1998 dependencies : [threads],
1999 install_rpath : rootlibexecdir,
2000 install : true,
2001 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002002
2003 executable('userdbctl',
2004 userdbctl_sources,
2005 include_directories : includes,
2006 link_with : [libshared],
2007 dependencies : [threads],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002011endif
2012
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002013foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2014 meson.add_install_script(meson_make_symlink,
2015 join_paths(rootbindir, 'systemctl'),
2016 join_paths(rootsbindir, alias))
2017endforeach
2018
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002019if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 executable('systemd-backlight',
2021 'src/backlight/backlight.c',
2022 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002023 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027endif
2028
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002029if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 executable('systemd-rfkill',
2031 'src/rfkill/rfkill.c',
2032 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002033 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 install_rpath : rootlibexecdir,
2035 install : true,
2036 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037endif
2038
2039executable('systemd-system-update-generator',
2040 'src/system-update-generator/system-update-generator.c',
2041 include_directories : includes,
2042 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002043 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002044 install : true,
2045 install_dir : systemgeneratordir)
2046
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002047if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002048 systemd_cryptsetup_sources = files('''
2049 src/cryptsetup/cryptsetup.c
2050 src/cryptsetup/cryptsetup-pkcs11.h
2051'''.split())
2052
2053 if conf.get('HAVE_P11KIT') == 1
2054 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2055 endif
2056
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002058 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 include_directories : includes,
2060 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002061 dependencies : [libcryptsetup,
2062 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 executable('systemd-cryptsetup-generator',
2068 'src/cryptsetup/cryptsetup-generator.c',
2069 include_directories : includes,
2070 link_with : [libshared],
2071 dependencies : [libcryptsetup],
2072 install_rpath : rootlibexecdir,
2073 install : true,
2074 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002075
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 executable('systemd-veritysetup',
2077 'src/veritysetup/veritysetup.c',
2078 include_directories : includes,
2079 link_with : [libshared],
2080 dependencies : [libcryptsetup],
2081 install_rpath : rootlibexecdir,
2082 install : true,
2083 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002085 executable('systemd-veritysetup-generator',
2086 'src/veritysetup/veritysetup-generator.c',
2087 include_directories : includes,
2088 link_with : [libshared],
2089 dependencies : [libcryptsetup],
2090 install_rpath : rootlibexecdir,
2091 install : true,
2092 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093endif
2094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 executable('systemd-sysv-generator',
2097 'src/sysv-generator/sysv-generator.c',
2098 include_directories : includes,
2099 link_with : [libshared],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 executable('systemd-rc-local-generator',
2105 'src/rc-local-generator/rc-local-generator.c',
2106 include_directories : includes,
2107 link_with : [libshared],
2108 install_rpath : rootlibexecdir,
2109 install : true,
2110 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111endif
2112
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002113if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 executable('systemd-hostnamed',
2115 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002118 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 install : true,
2120 install_dir : rootlibexecdir)
2121
2122 exe = executable('hostnamectl',
2123 'src/hostname/hostnamectl.c',
2124 include_directories : includes,
2125 link_with : [libshared],
2126 install_rpath : rootlibexecdir,
2127 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002128 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129endif
2130
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002131if conf.get('ENABLE_LOCALED') == 1
2132 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 # logind will load libxkbcommon.so dynamically on its own
2134 deps = [libdl]
2135 else
2136 deps = []
2137 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002138
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 executable('systemd-localed',
2140 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002142 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 install : true,
2146 install_dir : rootlibexecdir)
2147
2148 exe = executable('localectl',
2149 localectl_sources,
2150 include_directories : includes,
2151 link_with : [libshared],
2152 install_rpath : rootlibexecdir,
2153 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002154 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155endif
2156
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002157if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002158 executable('systemd-timedated',
2159 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002161 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002165endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166
Yu Watanabe6129ec82018-05-03 18:07:43 +09002167if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002168 exe = executable('timedatectl',
2169 'src/timedate/timedatectl.c',
2170 include_directories : includes,
2171 install_rpath : rootlibexecdir,
2172 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002173 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002175 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176endif
2177
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002178if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 executable('systemd-timesyncd',
2180 systemd_timesyncd_sources,
2181 include_directories : includes,
2182 link_with : [libshared],
2183 dependencies : [threads,
2184 libm],
2185 install_rpath : rootlibexecdir,
2186 install : true,
2187 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002188
2189 executable('systemd-time-wait-sync',
2190 'src/time-wait-sync/time-wait-sync.c',
2191 include_directories : includes,
2192 link_with : [libshared],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196endif
2197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 executable('systemd-machined',
2200 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002201 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 link_with : [libmachine_core,
2203 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204 install_rpath : rootlibexecdir,
2205 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002206 install_dir : rootlibexecdir)
2207
2208 exe = executable('machinectl',
2209 'src/machine/machinectl.c',
2210 include_directories : includes,
2211 link_with : [libshared],
2212 dependencies : [threads,
2213 libxz,
2214 liblz4],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002218 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219endif
2220
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002221if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002222 executable('systemd-importd',
2223 systemd_importd_sources,
2224 include_directories : includes,
2225 link_with : [libshared],
2226 dependencies : [threads],
2227 install_rpath : rootlibexecdir,
2228 install : true,
2229 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 systemd_pull = executable('systemd-pull',
2232 systemd_pull_sources,
2233 include_directories : includes,
2234 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002235 dependencies : [versiondep,
2236 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002237 libz,
2238 libbzip2,
2239 libxz,
2240 libgcrypt],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 systemd_import = executable('systemd-import',
2246 systemd_import_sources,
2247 include_directories : includes,
2248 link_with : [libshared],
2249 dependencies : [libcurl,
2250 libz,
2251 libbzip2,
2252 libxz],
2253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002257 systemd_import_fs = executable('systemd-import-fs',
2258 systemd_import_fs_sources,
2259 include_directories : includes,
2260 link_with : [libshared],
2261 install_rpath : rootlibexecdir,
2262 install : true,
2263 install_dir : rootlibexecdir)
2264
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002265 systemd_export = executable('systemd-export',
2266 systemd_export_sources,
2267 include_directories : includes,
2268 link_with : [libshared],
2269 dependencies : [libcurl,
2270 libz,
2271 libbzip2,
2272 libxz],
2273 install_rpath : rootlibexecdir,
2274 install : true,
2275 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002276
2277 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278endif
2279
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002280if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002281 exe = executable('systemd-journal-upload',
2282 systemd_journal_upload_sources,
2283 include_directories : includes,
2284 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002285 dependencies : [versiondep,
2286 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 libcurl,
2288 libgnutls,
2289 libxz,
2290 liblz4],
2291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002294 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295endif
2296
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002297if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002298 s_j_remote = executable('systemd-journal-remote',
2299 systemd_journal_remote_sources,
2300 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002301 link_with : [libshared,
2302 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 dependencies : [threads,
2304 libmicrohttpd,
2305 libgnutls,
2306 libxz,
2307 liblz4],
2308 install_rpath : rootlibexecdir,
2309 install : true,
2310 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312 s_j_gatewayd = executable('systemd-journal-gatewayd',
2313 systemd_journal_gatewayd_sources,
2314 include_directories : includes,
2315 link_with : [libshared],
2316 dependencies : [threads,
2317 libmicrohttpd,
2318 libgnutls,
2319 libxz,
2320 liblz4],
2321 install_rpath : rootlibexecdir,
2322 install : true,
2323 install_dir : rootlibexecdir)
2324 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325endif
2326
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002327if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 executable('systemd-coredump',
2329 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002330 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 libacl,
2334 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 libxz,
2336 liblz4],
2337 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002338 install : true,
2339 install_dir : rootlibexecdir)
2340
2341 exe = executable('coredumpctl',
2342 coredumpctl_sources,
2343 include_directories : includes,
2344 link_with : [libshared],
2345 dependencies : [threads,
2346 libxz,
2347 liblz4],
2348 install_rpath : rootlibexecdir,
2349 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002350 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351endif
2352
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002353if conf.get('ENABLE_PSTORE') == 1
2354 executable('systemd-pstore',
2355 systemd_pstore_sources,
2356 include_directories : includes,
2357 link_with : [libshared],
2358 dependencies : [threads,
2359 libacl,
2360 libdw,
2361 libxz,
2362 liblz4],
2363 install_rpath : rootlibexecdir,
2364 install : true,
2365 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002366endif
2367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002368if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002369 exe = executable('systemd-binfmt',
2370 'src/binfmt/binfmt.c',
2371 include_directories : includes,
2372 link_with : [libshared],
2373 install_rpath : rootlibexecdir,
2374 install : true,
2375 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002376 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002377
2378 meson.add_install_script('sh', '-c',
2379 mkdir_p.format(binfmtdir))
2380 meson.add_install_script('sh', '-c',
2381 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2382endif
2383
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002384if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002385 executable('systemd-vconsole-setup',
2386 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387 include_directories : includes,
2388 link_with : [libshared],
2389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392endif
2393
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002394if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002395 executable('systemd-random-seed',
2396 'src/random-seed/random-seed.c',
2397 include_directories : includes,
2398 link_with : [libshared],
2399 install_rpath : rootlibexecdir,
2400 install : true,
2401 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402endif
2403
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002404if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002405 executable('systemd-firstboot',
2406 'src/firstboot/firstboot.c',
2407 include_directories : includes,
2408 link_with : [libshared],
2409 dependencies : [libcrypt],
2410 install_rpath : rootlibexecdir,
2411 install : true,
2412 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413endif
2414
2415executable('systemd-remount-fs',
2416 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002417 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002418 link_with : [libcore_shared,
2419 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002420 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421 install : true,
2422 install_dir : rootlibexecdir)
2423
2424executable('systemd-machine-id-setup',
2425 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002427 link_with : [libcore_shared,
2428 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002429 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002430 install : true,
2431 install_dir : rootbindir)
2432
2433executable('systemd-fsck',
2434 'src/fsck/fsck.c',
2435 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002436 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002437 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438 install : true,
2439 install_dir : rootlibexecdir)
2440
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002441executable('systemd-growfs',
2442 'src/partition/growfs.c',
2443 include_directories : includes,
2444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002445 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootlibexecdir)
2449
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002450executable('systemd-makefs',
2451 'src/partition/makefs.c',
2452 include_directories : includes,
2453 link_with : [libshared],
2454 install_rpath : rootlibexecdir,
2455 install : true,
2456 install_dir : rootlibexecdir)
2457
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458executable('systemd-sleep',
2459 'src/sleep/sleep.c',
2460 include_directories : includes,
2461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463 install : true,
2464 install_dir : rootlibexecdir)
2465
Yu Watanabed25e1272019-01-03 02:32:57 +09002466install_data('src/sleep/sleep.conf',
2467 install_dir : pkgsysconfdir)
2468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('systemd-sysctl',
2470 'src/sysctl/sysctl.c',
2471 include_directories : includes,
2472 link_with : [libshared],
2473 install_rpath : rootlibexecdir,
2474 install : true,
2475 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002476public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002477
2478executable('systemd-ac-power',
2479 'src/ac-power/ac-power.c',
2480 include_directories : includes,
2481 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002482 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483 install : true,
2484 install_dir : rootlibexecdir)
2485
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486exe = executable('systemd-detect-virt',
2487 'src/detect-virt/detect-virt.c',
2488 include_directories : includes,
2489 link_with : [libshared],
2490 install_rpath : rootlibexecdir,
2491 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-delta',
2495 'src/delta/delta.c',
2496 include_directories : includes,
2497 link_with : [libshared],
2498 install_rpath : rootlibexecdir,
2499 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002500public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502exe = executable('systemd-escape',
2503 'src/escape/escape.c',
2504 include_directories : includes,
2505 link_with : [libshared],
2506 install_rpath : rootlibexecdir,
2507 install : true,
2508 install_dir : rootbindir)
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-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('systemd-notify',
2512 'src/notify/notify.c',
2513 include_directories : includes,
2514 link_with : [libshared],
2515 install_rpath : rootlibexecdir,
2516 install : true,
2517 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002518public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519
2520executable('systemd-volatile-root',
2521 'src/volatile-root/volatile-root.c',
2522 include_directories : includes,
2523 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002524 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002525 install : true,
2526 install_dir : rootlibexecdir)
2527
2528executable('systemd-cgroups-agent',
2529 'src/cgroups-agent/cgroups-agent.c',
2530 include_directories : includes,
2531 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002532 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533 install : true,
2534 install_dir : rootlibexecdir)
2535
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002536exe = executable('systemd-id128',
2537 'src/id128/id128.c',
2538 include_directories : includes,
2539 link_with : [libshared],
2540 install_rpath : rootlibexecdir,
2541 install : true)
2542public_programs += exe
2543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544exe = executable('systemd-path',
2545 'src/path/path.c',
2546 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002547 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548 install_rpath : rootlibexecdir,
2549 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002550public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552exe = executable('systemd-ask-password',
2553 'src/ask-password/ask-password.c',
2554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002555 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 install_rpath : rootlibexecdir,
2557 install : true,
2558 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002559public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002560
2561executable('systemd-reply-password',
2562 'src/reply-password/reply-password.c',
2563 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002564 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002565 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566 install : true,
2567 install_dir : rootlibexecdir)
2568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569exe = executable('systemd-tty-ask-password-agent',
2570 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2571 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002572 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573 install_rpath : rootlibexecdir,
2574 install : true,
2575 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002576public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002577
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578exe = executable('systemd-cgls',
2579 'src/cgls/cgls.c',
2580 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002581 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002582 install_rpath : rootlibexecdir,
2583 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002584public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002586exe = executable('systemd-cgtop',
2587 'src/cgtop/cgtop.c',
2588 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002589 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590 install_rpath : rootlibexecdir,
2591 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002592public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002593
2594executable('systemd-initctl',
2595 'src/initctl/initctl.c',
2596 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002597 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002598 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599 install : true,
2600 install_dir : rootlibexecdir)
2601
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002602exe = executable('systemd-mount',
2603 'src/mount/mount-tool.c',
2604 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002605 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002606 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002607 install_rpath : rootlibexecdir,
2608 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002609public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002611meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002612 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002613
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614exe = executable('systemd-run',
2615 'src/run/run.c',
2616 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002617 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618 install_rpath : rootlibexecdir,
2619 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002620public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622exe = executable('systemd-stdio-bridge',
2623 'src/stdio-bridge/stdio-bridge.c',
2624 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002625 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002626 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 install_rpath : rootlibexecdir,
2628 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002629public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002630
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631exe = executable('busctl',
2632 'src/busctl/busctl.c',
2633 'src/busctl/busctl-introspect.c',
2634 'src/busctl/busctl-introspect.h',
2635 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002636 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002637 install_rpath : rootlibexecdir,
2638 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002639public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002640
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002641if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002642 exe = executable('systemd-sysusers',
2643 'src/sysusers/sysusers.c',
2644 include_directories : includes,
2645 link_with : [libshared],
2646 install_rpath : rootlibexecdir,
2647 install : true,
2648 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002649 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650endif
2651
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002652if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002653 exe = executable('systemd-tmpfiles',
2654 'src/tmpfiles/tmpfiles.c',
2655 include_directories : includes,
2656 link_with : [libshared],
2657 dependencies : [libacl],
2658 install_rpath : rootlibexecdir,
2659 install : true,
2660 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002661 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002662
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002663 if want_tests != 'false'
2664 test('test-systemd-tmpfiles',
2665 test_systemd_tmpfiles_py,
2666 # https://github.com/mesonbuild/meson/issues/2681
2667 args : exe.full_path())
2668 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669endif
2670
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002671if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002672 exe = executable('systemd-hwdb',
2673 'src/hwdb/hwdb.c',
2674 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2675 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002676 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002677 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002678 install : true,
2679 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002680 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002681endif
2682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002683if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002684 executable('systemd-quotacheck',
2685 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002686 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002687 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002688 install_rpath : rootlibexecdir,
2689 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002690 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691endif
2692
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002693exe = executable('systemd-socket-proxyd',
2694 'src/socket-proxy/socket-proxyd.c',
2695 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002696 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002697 dependencies : [threads],
2698 install_rpath : rootlibexecdir,
2699 install : true,
2700 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002701public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002703exe = executable('systemd-udevd',
2704 systemd_udevd_sources,
2705 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002706 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002707 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002708 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002709 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002710 dependencies : [versiondep,
2711 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002712 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002713 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002714 libacl,
2715 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002716 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002717 install : true,
2718 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002719public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002720
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002721exe = executable('udevadm',
2722 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002723 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002724 include_directories : includes,
2725 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002726 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002727 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002728 dependencies : [versiondep,
2729 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002730 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002731 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002732 libacl,
2733 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002734 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002735 install : true,
2736 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002737public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002738
2739executable('systemd-shutdown',
2740 systemd_shutdown_sources,
2741 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002742 link_with : [libcore_shared,
2743 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002744 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002745 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002746 install : true,
2747 install_dir : rootlibexecdir)
2748
2749executable('systemd-update-done',
2750 'src/update-done/update-done.c',
2751 include_directories : includes,
2752 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002753 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002754 install : true,
2755 install_dir : rootlibexecdir)
2756
2757executable('systemd-update-utmp',
2758 'src/update-utmp/update-utmp.c',
2759 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002761 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002762 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002763 install : true,
2764 install_dir : rootlibexecdir)
2765
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002766if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002767 executable('systemd-modules-load',
2768 'src/modules-load/modules-load.c',
2769 include_directories : includes,
2770 link_with : [libshared],
2771 dependencies : [libkmod],
2772 install_rpath : rootlibexecdir,
2773 install : true,
2774 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002775
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002776 meson.add_install_script('sh', '-c',
2777 mkdir_p.format(modulesloaddir))
2778 meson.add_install_script('sh', '-c',
2779 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780endif
2781
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002782exe = executable('systemd-nspawn',
2783 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002784 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002785 link_with : [libcore_shared,
2786 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002787 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002788 dependencies : [libblkid,
2789 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002790 install_rpath : rootlibexecdir,
2791 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002792public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002794if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002795 executable('systemd-networkd',
2796 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002797 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002798 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002800 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002801 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002802 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 install_rpath : rootlibexecdir,
2804 install : true,
2805 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002806
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 executable('systemd-networkd-wait-online',
2808 systemd_networkd_wait_online_sources,
2809 include_directories : includes,
2810 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002811 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 install_rpath : rootlibexecdir,
2813 install : true,
2814 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002815
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002816 exe = executable('networkctl',
2817 networkctl_sources,
2818 include_directories : includes,
2819 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002820 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002821 install_rpath : rootlibexecdir,
2822 install : true,
2823 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002824 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002825
2826 executable('systemd-network-generator',
2827 network_generator_sources,
2828 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002829 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002830 install_rpath : rootlibexecdir,
2831 install : true,
2832 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002833endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002834
2835executable('systemd-sulogin-shell',
2836 ['src/sulogin-shell/sulogin-shell.c'],
2837 include_directories : includes,
2838 link_with : [libshared],
2839 install_rpath : rootlibexecdir,
2840 install : true,
2841 install_dir : rootlibexecdir)
2842
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002843############################################################
2844
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002845custom_target(
2846 'systemd-runtest.env',
2847 output : 'systemd-runtest.env',
2848 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002849 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002850 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002851 '} >@OUTPUT@'],
2852 build_by_default : true)
2853
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002854foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002855 sources = tuple[0]
2856 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2857 dependencies = tuple[2]
2858 condition = tuple.length() >= 4 ? tuple[3] : ''
2859 type = tuple.length() >= 5 ? tuple[4] : ''
2860 defs = tuple.length() >= 6 ? tuple[5] : []
2861 incs = tuple.length() >= 7 ? tuple[6] : includes
2862 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002863
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002864 name = sources[0].split('/')[-1].split('.')[0]
2865 if type.startswith('timeout=')
2866 timeout = type.split('=')[1].to_int()
2867 type = ''
2868 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002869
2870 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002871 exe = executable(
2872 name,
2873 sources,
2874 include_directories : incs,
2875 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002876 dependencies : [versiondep,
2877 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002878 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002879 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002880 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002881 install : install_tests,
2882 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002883
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002884 if type == 'manual'
2885 message('@0@ is a manual test'.format(name))
2886 elif type == 'unsafe' and want_tests != 'unsafe'
2887 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002888 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002889 test(name, exe,
2890 env : test_env,
2891 timeout : timeout)
2892 endif
2893 else
2894 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2895 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002896endforeach
2897
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002898exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002899 'test-libsystemd-sym',
2900 test_libsystemd_sym_c,
2901 include_directories : includes,
2902 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002903 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002904 install : install_tests,
2905 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002906if want_tests != 'false'
2907 test('test-libsystemd-sym', exe)
2908endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002909
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002910exe = executable(
2911 'test-libsystemd-static-sym',
2912 test_libsystemd_sym_c,
2913 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002914 link_with : [install_libsystemd_static],
2915 dependencies : [threads], # threads is already included in dependencies on the library,
2916 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002917 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002918 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002919 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002920if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002921 test('test-libsystemd-static-sym', exe)
2922endif
2923
2924exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002925 'test-libudev-sym',
2926 test_libudev_sym_c,
2927 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002928 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002929 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002930 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002931 install : install_tests,
2932 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002933if want_tests != 'false'
2934 test('test-libudev-sym', exe)
2935endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002936
2937exe = executable(
2938 'test-libudev-static-sym',
2939 test_libudev_sym_c,
2940 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002941 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002942 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002943 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002944 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002945 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002946if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002947 test('test-libudev-static-sym', exe)
2948endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002949
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002950############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002952fuzzer_exes = []
2953
Michael Olbrich59967402018-11-11 11:27:35 +01002954if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002955foreach tuple : fuzzers
2956 sources = tuple[0]
2957 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2958 dependencies = tuple[2]
2959 defs = tuple.length() >= 4 ? tuple[3] : []
2960 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002961 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002962
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002963 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002964 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002965 elif want_libfuzzer
2966 if fuzzing_engine.found()
2967 dependencies += fuzzing_engine
2968 else
2969 link_args += ['-fsanitize=fuzzer']
2970 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002971 else
2972 sources += 'src/fuzz/fuzz-main.c'
2973 endif
2974
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002975 if want_fuzzbuzz
2976 sources += 'src/fuzz/fuzzer-entry-point.c'
2977 endif
2978
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002979 name = sources[0].split('/')[-1].split('.')[0]
2980
2981 fuzzer_exes += executable(
2982 name,
2983 sources,
2984 include_directories : [incs, include_directories('src/fuzz')],
2985 link_with : link_with,
2986 dependencies : dependencies,
2987 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002988 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002989 install : false)
2990endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002991endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002992
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002993run_target('fuzzers',
2994 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002995 command : ['true'])
2996
2997############################################################
2998
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002999make_directive_index_py = find_program('tools/make-directive-index.py')
3000make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003001xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003002hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003003autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003005subdir('sysctl.d')
3006subdir('sysusers.d')
3007subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003008subdir('hwdb.d')
3009subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003010subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003011subdir('network')
3012subdir('man')
3013subdir('shell-completion/bash')
3014subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003015subdir('docs/sysvinit')
3016subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003017
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003018install_subdir('factory/etc',
3019 install_dir : factorydir)
3020
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003021install_data('xorg/50-systemd-user.sh',
3022 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003023install_data('modprobe.d/systemd.conf',
3024 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003025install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003026 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003027 'NEWS',
3028 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303029 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003030 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003031 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003032 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003033 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003034 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003035 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003036 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3037 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003038
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003039meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3040meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3041
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003042############################################################
3043
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003044meson_check_help = find_program('tools/meson-check-help.sh')
3045
3046foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003047 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003048 if want_tests != 'false'
3049 test('check-help-' + name,
3050 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003051 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003052 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003053endforeach
3054
3055############################################################
3056
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003057check_directives_sh = find_program('tools/check-directives.sh')
3058
3059if want_tests != 'false'
3060 test('check-directives',
3061 check_directives_sh,
3062 args : project_source_root)
3063endif
3064
3065############################################################
3066
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003067# Enable tests for all supported sanitizers
3068foreach tuple : sanitizers
3069 sanitizer = tuple[0]
3070 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003071
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003072 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003073 prev = ''
3074 foreach p : fuzz_regression_tests
3075 b = p.split('/')[-2]
3076 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003077
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003078 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003079
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003080 if name != prev
3081 if want_tests == 'false'
3082 message('Not compiling @0@ because tests is set to false'.format(name))
3083 elif slow_tests
3084 exe = custom_target(
3085 name,
3086 output : name,
3087 depends : build,
3088 command : [env, 'ln', '-fs',
3089 join_paths(build.full_path(), b),
3090 '@OUTPUT@'],
3091 build_by_default : true)
3092 else
3093 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3094 endif
3095 endif
3096 prev = name
3097
3098 if want_tests != 'false' and slow_tests
3099 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3100 env,
3101 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003102 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003103 endif
3104 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003105 endif
3106endforeach
3107
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003108
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003109############################################################
3110
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003111if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003112 all_files = run_command(
3113 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003114 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003115 'ls-files',
3116 ':/*.[ch]'])
3117 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003118
userwithuide85a6902017-08-09 13:41:44 +00003119 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003120 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003121 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003122 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003123 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003124 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003125 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003126endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003127
3128if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003129 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003130 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003131 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003132 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003133endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003134
3135if git.found()
3136 git_head = run_command(
3137 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003138 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003139 'rev-parse', 'HEAD']).stdout().strip()
3140 git_head_short = run_command(
3141 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003142 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003143 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3144
3145 run_target(
3146 'git-snapshot',
3147 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003148 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003149 git_head_short),
3150 '--prefix', 'systemd-@0@/'.format(git_head),
3151 'HEAD'])
3152endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153
3154############################################################
3155
Lennart Poettering51b13862017-12-20 12:51:14 +01003156meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3157run_target(
3158 'check-api-docs',
3159 depends : [man, libsystemd, libudev],
3160 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3161
3162############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003163watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003164
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003165status = [
3166 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3167
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003168 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003169 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003170 'prefix directory: @0@'.format(prefixdir),
3171 'rootprefix directory: @0@'.format(rootprefixdir),
3172 'sysconf directory: @0@'.format(sysconfdir),
3173 'include directory: @0@'.format(includedir),
3174 'lib directory: @0@'.format(libdir),
3175 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003176 'SysV init scripts: @0@'.format(sysvinit_path),
3177 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003178 'PAM modules directory: @0@'.format(pamlibdir),
3179 'PAM configuration directory: @0@'.format(pamconfdir),
3180 'RPM macros directory: @0@'.format(rpmmacrosdir),
3181 'modprobe.d directory: @0@'.format(modprobedir),
3182 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3183 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3184 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3185 'bash completions directory: @0@'.format(bashcompletiondir),
3186 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003187 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3189 get_option('debug-tty')),
3190 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003191 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003192 'maximum system UID: @0@'.format(system_uid_max),
3193 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003194 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3195 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3196 'minimum container UID base: @0@'.format(container_uid_base_min),
3197 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003198 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003199 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003200 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003202 'nobody user name: @0@'.format(nobody_user),
3203 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003205 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003206
3207 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003208 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003209 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003210 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003211 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003212 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003213 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003214 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003215
3216alt_dns_servers = '\n '.join(dns_servers.split(' '))
3217alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3218status += [
3219 'default DNS servers: @0@'.format(alt_dns_servers),
3220 'default NTP servers: @0@'.format(alt_ntp_servers)]
3221
3222alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3223 '@@0@'.format(time_epoch)).stdout().strip()
3224status += [
3225 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3226
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003227status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003228 'static libsystemd: @0@'.format(static_libsystemd),
3229 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003230
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231# TODO:
3232# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3233# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3234# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3235
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003236if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003237 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238
3239 if have_gnu_efi
3240 status += [
3241 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003242 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003243 'EFI lib directory: @0@'.format(efi_libdir),
3244 'EFI lds directory: @0@'.format(efi_ldsdir),
3245 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 endif
3247endif
3248
3249found = []
3250missing = []
3251
3252foreach tuple : [
3253 ['libcryptsetup'],
3254 ['PAM'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003255 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003256 ['AUDIT'],
3257 ['IMA'],
3258 ['AppArmor'],
3259 ['SELinux'],
3260 ['SECCOMP'],
3261 ['SMACK'],
3262 ['zlib'],
3263 ['xz'],
3264 ['lz4'],
3265 ['bzip2'],
3266 ['ACL'],
3267 ['gcrypt'],
3268 ['qrencode'],
3269 ['microhttpd'],
3270 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003271 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003272 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003273 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003274 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003275 ['libidn'],
3276 ['libiptc'],
3277 ['elfutils'],
3278 ['binfmt'],
3279 ['vconsole'],
3280 ['quotacheck'],
3281 ['tmpfiles'],
3282 ['environment.d'],
3283 ['sysusers'],
3284 ['firstboot'],
3285 ['randomseed'],
3286 ['backlight'],
3287 ['rfkill'],
3288 ['logind'],
3289 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003290 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003291 ['userdb'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003292 ['importd'],
3293 ['hostnamed'],
3294 ['timedated'],
3295 ['timesyncd'],
3296 ['localed'],
3297 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003298 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003299 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3300 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003301 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003302 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003303 ['polkit'],
3304 ['legacy pkla', install_polkit_pkla],
3305 ['efi'],
3306 ['gnu-efi', have_gnu_efi],
3307 ['kmod'],
3308 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003309 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003310 ['blkid'],
3311 ['dbus'],
3312 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003313 ['nss-myhostname'],
3314 ['nss-mymachines'],
3315 ['nss-resolve'],
3316 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003317 ['hwdb'],
3318 ['tpm'],
3319 ['man pages', want_man],
3320 ['html pages', want_html],
3321 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003322 ['SysV compat'],
3323 ['utmp'],
3324 ['ldconfig'],
3325 ['hibernate'],
3326 ['adm group', get_option('adm-group')],
3327 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003328 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003329 ['debug hashmap'],
3330 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003331 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003332 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003333 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003334 ['link-udev-shared', get_option('link-udev-shared')],
3335 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003336 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003337]
3338
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003339 if tuple.length() >= 2
3340 cond = tuple[1]
3341 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003342 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3343 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003344 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003345 endif
3346 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003347 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003348 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003349 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003350 endif
3351endforeach
3352
3353status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003354 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003355 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003356 '',
3357 'disabled features: @0@'.format(', '.join(missing)),
3358 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003359message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003360
3361if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003362 warning('\n' +
3363 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3364 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3365 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003366endif