blob: 6837fb9271b41b6f375c6b823eeb9767ea5a05b2 [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('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
285substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400286substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
287substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
288substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100289substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200290substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200291substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200292substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293
294#####################################################################
295
296cc = meson.get_compiler('c')
297pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400298check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100299meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400300
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200301want_tests = get_option('tests')
302slow_tests = want_tests != 'false' and get_option('slow-tests')
303install_tests = get_option('install-tests')
304
James Hilliard46e63a22018-12-27 09:16:20 +0800305if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200306 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100307 cxx = meson.get_compiler('cpp')
308 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200309else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200310 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400311endif
312
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500313if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200314 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
315 if fuzzing_engine.found()
316 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
317 elif cc.has_argument('-fsanitize=fuzzer-no-link')
318 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
319 else
320 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
321 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200322elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500323 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000324elif want_fuzzbuzz
325 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 -0500326endif
327
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100328# Those generate many false positives, and we do not want to change the code to
329# avoid them.
330basic_disabled_warnings = [
331 '-Wno-unused-parameter',
332 '-Wno-missing-field-initializers',
333 '-Wno-unused-result',
334 '-Wno-format-signedness',
335]
336if get_option('b_ndebug') == 'true'
337 # With asserts disabled with get a bunch of warnings about variables which
338 # are used only in the asserts. This is not useful at all, so let's just silence
339 # those warnings.
340 basic_disabled_warnings += [
341 '-Wno-unused-variable',
342 '-Wno-unused-but-set-variable',
343 ]
344endif
345
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347 '-Werror=undef',
348 '-Wlogical-op',
349 '-Wmissing-include-dirs',
350 '-Wold-style-definition',
351 '-Wpointer-arith',
352 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900353 '-Wfloat-equal',
354 '-Wsuggest-attribute=noreturn',
355 '-Werror=missing-prototypes',
356 '-Werror=implicit-function-declaration',
357 '-Werror=missing-declarations',
358 '-Werror=return-type',
359 '-Werror=incompatible-pointer-types',
360 '-Werror=format=2',
361 '-Wstrict-prototypes',
362 '-Wredundant-decls',
363 '-Wmissing-noreturn',
364 '-Wimplicit-fallthrough=5',
365 '-Wshadow',
366 '-Wendif-labels',
367 '-Wstrict-aliasing=2',
368 '-Wwrite-strings',
369 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200370 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200371 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900372 '-Wdate-time',
373 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700374
375 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100376 '-Wno-error=#warnings', # clang
377 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700378
379 # work-around for gcc 7.1 turning this on on its own.
380 '-Wno-error=nonnull',
381
382 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
383 # optimizations enabled, producing essentially false positives.
384 '-Wno-maybe-uninitialized',
385
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900386 '-ffast-math',
387 '-fno-common',
388 '-fdiagnostics-show-option',
389 '-fno-strict-aliasing',
390 '-fvisibility=hidden',
391 '-fstack-protector',
392 '-fstack-protector-strong',
393 '--param=ssp-buffer-size=4',
394]
395
396# --as-needed and --no-undefined are provided by meson by default,
397# run mesonconf to see what is enabled
398possible_link_flags = [
399 '-Wl,-z,relro',
400 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200401 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900402]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900404if cc.get_id() == 'clang'
405 possible_cc_flags += [
406 '-Wno-typedef-redefinition',
407 '-Wno-gnu-variable-sized-type-not-at-end',
408 ]
409endif
410
411if get_option('buildtype') != 'debug'
412 possible_cc_flags += [
413 '-ffunction-sections',
414 '-fdata-sections',
415 ]
416
417 possible_link_flags += '-Wl,--gc-sections'
418endif
419
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100420add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900421add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900422add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900423
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800424if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425 #include <time.h>
426 #include <inttypes.h>
427 typedef uint64_t usec_t;
428 usec_t now(clockid_t clock);
429 int main(void) {
430 struct timespec now;
431 return 0;
432 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100433''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400434 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435endif
436
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100437if cxx_cmd != ''
438 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
439endif
440
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200441cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400442
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200443has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445#####################################################################
446# compilation result tests
447
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400448conf.set('_GNU_SOURCE', true)
449conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200450conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451
452conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
453conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
457conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
458conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
459
460decl_headers = '''
461#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100462#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464
465foreach decl : ['char16_t',
466 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100467 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400469
470 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200471 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
472
473 if decl == 'struct statx'
474 if have
475 want_linux_stat_h = false
476 else
477 have = cc.sizeof(decl,
478 prefix : decl_headers + '#include <linux/stat.h>',
479 args : '-D_GNU_SOURCE') > 0
480 want_linux_stat_h = have
481 endif
482 endif
483
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485endforeach
486
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200487conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700488
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200490 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491endforeach
492
493foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100495 ['gettid', '''#include <sys/types.h>
496 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100497 ['pivot_root', '''#include <stdlib.h>
498 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 #include <sys/stat.h>
501 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100503 ['renameat2', '''#include <stdio.h>
504 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400505 ['kcmp', '''#include <linux/kcmp.h>'''],
506 ['keyctl', '''#include <sys/types.h>
507 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200510 ['bpf', '''#include <sys/syscall.h>
511 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100512 ['statx', '''#include <sys/types.h>
513 #include <sys/stat.h>
514 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100515 ['explicit_bzero' , '''#include <string.h>'''],
516 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100517 ['set_mempolicy', '''#include <stdlib.h>
518 #include <unistd.h>'''],
519 ['get_mempolicy', '''#include <stdlib.h>
520 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200521 ['pidfd_send_signal', '''#include <stdlib.h>
522 #include <unistd.h>
523 #include <signal.h>
524 #include <sys/wait.h>'''],
525 ['pidfd_open', '''#include <stdlib.h>
526 #include <unistd.h>
527 #include <signal.h>
528 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100529 ['rt_sigqueueinfo', '''#include <stdlib.h>
530 #include <unistd.h>
531 #include <signal.h>
532 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400533]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534
Lennart Poettering85db59b2017-12-25 12:01:14 +0100535 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537endforeach
538
Lennart Poettering85db59b2017-12-25 12:01:14 +0100539if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200540 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200541 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400542else
543 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200544 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200545 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400546endif
547
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548#####################################################################
549
Davide Cavalca1485aac2019-02-27 11:19:07 -0500550vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
551 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100552 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100553 meson.project_version()]
554
Louis Taylord1084aa2019-01-21 21:45:36 +0000555version_h = vcs_tag(
556 input : 'src/version/version.h.in',
557 output : 'version.h',
558 command: vcs_tagger)
559
560versiondep = declare_dependency(sources: version_h)
561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400564m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400566git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100567env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100568perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
Davide Cavalca1485aac2019-02-27 11:19:07 -0500570meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400571mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400572test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
573splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
576# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579 ['kmod', '/usr/bin/kmod' ],
580 ['kexec', '/usr/sbin/kexec' ],
581 ['sulogin', '/usr/sbin/sulogin' ],
582 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
583 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
584 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
585 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200586 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587 ]
588foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589 path = get_option(prog[0] + '-path')
590 if path != ''
591 message('Using @1@ for @0@'.format(prog[0], path))
592 else
593 exe = find_program(prog[0],
594 '/usr/sbin/' + prog[0],
595 '/sbin/' + prog[0],
596 required: false)
597 path = exe.found() ? exe.path() : prog[1]
598 endif
599 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
600 conf.set_quoted(name, path)
601 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602endforeach
603
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500604conf.set_quoted('TELINIT', get_option('telinit-path'))
605
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100607 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400608endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610############################################################
611
612gperf = find_program('gperf')
613
614gperf_test_format = '''
615#include <string.h>
616const char * in_word_set(const char *, @0@);
617@1@
618'''
619gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
620gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
621gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
622if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400625 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
626 if cc.compiles(gperf_test)
627 gperf_len_type = 'unsigned'
628 else
629 error('unable to determine gperf len type')
630 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633conf.set('GPERF_LEN_TYPE', gperf_len_type,
634 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636############################################################
637
638if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100641foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642 'linux/memfd.h',
643 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200644 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645 'valgrind/memcheck.h',
646 'valgrind/valgrind.h',
647 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400648
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200649 conf.set10('HAVE_' + header.underscorify().to_upper(),
650 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endforeach
652
653############################################################
654
655conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400656conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
657gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658
659default_hierarchy = get_option('default-hierarchy')
660conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
661 description : 'default cgroup hierarchy as string')
662if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668endif
669
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100670default_net_naming_scheme = get_option('default-net-naming-scheme')
671conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
672
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900674if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400675 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900676 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678conf.set('TIME_EPOCH', time_epoch)
679
680system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900681if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400682 system_uid_max = run_command(
683 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800684 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
685 '/etc/login.defs').stdout().strip()
686 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900687 system_uid_max = 999
688 else
689 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800690 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692conf.set('SYSTEM_UID_MAX', system_uid_max)
693substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900696if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400697 system_gid_max = run_command(
698 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800699 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
700 '/etc/login.defs').stdout().strip()
701 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900702 system_gid_max = 999
703 else
704 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800705 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707conf.set('SYSTEM_GID_MAX', system_gid_max)
708substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400709
Yu Watanabeac093402018-05-10 16:04:16 +0900710dynamic_uid_min = get_option('dynamic-uid-min')
711dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100712conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
713conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
714substs.set('dynamicuidmin', dynamic_uid_min)
715substs.set('dynamicuidmax', dynamic_uid_max)
716
Yu Watanabeac093402018-05-10 16:04:16 +0900717container_uid_base_min = get_option('container-uid-base-min')
718container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100719conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
720conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
721substs.set('containeruidbasemin', container_uid_base_min)
722substs.set('containeruidbasemax', container_uid_base_max)
723
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724nobody_user = get_option('nobody-user')
725nobody_group = get_option('nobody-group')
726
Chen Qi2484bff2018-07-23 14:53:09 +0800727if not meson.is_cross_build()
728 getent_result = run_command('getent', 'passwd', '65534')
729 if getent_result.returncode() == 0
730 name = getent_result.stdout().split(':')[0]
731 if name != nobody_user
732 warning('\n' +
733 '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) +
734 'Your build will result in an user table setup that is incompatible with the local system.')
735 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100736 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800737 id_result = run_command('id', '-u', nobody_user)
738 if id_result.returncode() == 0
739 id = id_result.stdout().to_int()
740 if id != 65534
741 warning('\n' +
742 '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) +
743 'Your build will result in an user table setup that is incompatible with the local system.')
744 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100745 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100746
Chen Qi2484bff2018-07-23 14:53:09 +0800747 getent_result = run_command('getent', 'group', '65534')
748 if getent_result.returncode() == 0
749 name = getent_result.stdout().split(':')[0]
750 if name != nobody_group
751 warning('\n' +
752 '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) +
753 'Your build will result in an group table setup that is incompatible with the local system.')
754 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100755 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800756 id_result = run_command('id', '-g', nobody_group)
757 if id_result.returncode() == 0
758 id = id_result.stdout().to_int()
759 if id != 65534
760 warning('\n' +
761 '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) +
762 'Your build will result in an group table setup that is incompatible with the local system.')
763 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100764 endif
765endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900766if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900767 warning('\n' +
768 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
769 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900770endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100771
772conf.set_quoted('NOBODY_USER_NAME', nobody_user)
773conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900774substs.set('NOBODY_USER_NAME', nobody_user)
775substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100776
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777tty_gid = get_option('tty-gid')
778conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400779substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780
Ikey Doherty84786b82017-12-03 12:28:23 +0000781# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900782users_gid = get_option('users-gid')
783substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000784
Yu Watanabe348b4432018-05-07 18:17:35 +0900785conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
786conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
Michael Bieblace5e312018-07-13 23:36:13 +0200788dev_kvm_mode = get_option('dev-kvm-mode')
789substs.set('DEV_KVM_MODE', dev_kvm_mode)
790conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100791group_render_mode = get_option('group-render-mode')
792substs.set('GROUP_RENDER_MODE', group_render_mode)
793conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400795kill_user_processes = get_option('default-kill-user-processes')
796conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100797conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400798substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400799
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400800dns_servers = get_option('dns-servers')
801conf.set_quoted('DNS_SERVERS', dns_servers)
802substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400804ntp_servers = get_option('ntp-servers')
805conf.set_quoted('NTP_SERVERS', ntp_servers)
806substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
Dave Reisner8ca9e922018-12-28 07:38:36 -0500808default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900809if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800810 if not meson.is_cross_build()
811 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
812 default_locale = run_command(choose_default_locale_sh).stdout().strip()
813 else
814 default_locale = 'C.UTF-8'
815 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900816endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500817conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
818
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
820
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200821service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700822watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
823substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200824
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400825substs.set('SUSHELL', get_option('debug-shell'))
826substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200827conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829enable_debug_hashmap = false
830enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900831enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200832foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900833 if name == 'hashmap'
834 enable_debug_hashmap = true
835 elif name == 'mmap-cache'
836 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900837 elif name == 'siphash'
838 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900839 else
840 message('unknown debug option "@0@", ignoring'.format(name))
841 endif
842endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
844conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900845conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400846
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200847conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200848conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200849
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100850default_user_path = get_option('user-path')
851if default_user_path != ''
852 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100853 default_user_path_display = default_user_path
854else
855 # meson 0.49 fails when ?: is used in .format()
856 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100857endif
858
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860#####################################################################
861
862threads = dependency('threads')
863librt = cc.find_library('rt')
864libm = cc.find_library('m')
865libdl = cc.find_library('dl')
866libcrypt = cc.find_library('crypt')
867
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400868libcap = dependency('libcap', required : false)
869if not libcap.found()
870 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
871 libcap = cc.find_library('cap')
872endif
873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100875 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876
877want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000878if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400880 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000890if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libselinux = dependency('libselinux',
892 version : '>= 2.1.9',
893 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000902if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libapparmor = dependency('libapparmor',
904 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912smack_run_label = get_option('smack-run-label')
913if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
916
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400917want_polkit = get_option('polkit')
918install_polkit = false
919install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000920if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400922
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libpolkit = dependency('polkit-gobject-1',
924 required : false)
925 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
926 message('Old polkit detected, will install pkla files')
927 install_polkit_pkla = true
928 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400931
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400932want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000933if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400934 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400936else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400938 libacl = []
939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400941
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000943if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951
952want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000953if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000963if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libkmod = dependency('libkmod',
965 version : '>= 15',
966 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000975if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libpam = cc.find_library('pam', required : want_pam == 'true')
977 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libpam = []
982 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
986want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000987if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libmicrohttpd = dependency('libmicrohttpd',
989 version : '>= 0.9.33',
990 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000999if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001001 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009
1010want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001011if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libcurl = dependency('libcurl',
1013 version : '>= 7.32.0',
1014 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021
1022want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001023want_libidn2 = get_option('libidn2')
1024if want_libidn == 'true' and want_libidn2 == 'true'
1025 error('libidn and libidn2 cannot be requested simultaneously')
1026endif
1027
Yu Watanabe1b931392019-06-29 03:13:30 +09001028if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001029 libidn = dependency('libidn2',
1030 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = libidn.found()
1032else
1033 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001034 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001037if not have and want_libidn != 'false' and not skip_deps
1038 # libidn is used for both libidn and libidn2 objects
1039 libidn = dependency('libidn',
1040 required : want_libidn == 'true')
1041 have = libidn.found()
1042else
1043 have = false
1044endif
1045conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046
1047want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001048if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libiptc = dependency('libiptc',
1050 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057
1058want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001059if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 libqrencode = dependency('libqrencode',
1061 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001069want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001070if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001071 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1072 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
1076endif
1077if not have
1078 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079 libgcrypt = []
1080 libgpg_error = []
1081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001085if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libgnutls = dependency('gnutls',
1087 version : '>= 3.1.4',
1088 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001096want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001097if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001098 libopenssl = dependency('openssl',
1099 version : '>= 1.1.0',
1100 required : want_openssl == 'true')
1101 have = libopenssl.found()
1102else
1103 have = false
1104 libopenssl = []
1105endif
1106conf.set10('HAVE_OPENSSL', have)
1107
Lennart Poettering839fddb2019-11-05 11:49:27 +01001108want_p11kit = get_option('p11kit')
1109if want_p11kit != 'false' and not skip_deps
1110 libp11kit = dependency('p11-kit-1',
1111 version : '>= 0.23.3',
1112 required : want_p11kit == 'true')
1113 have = libp11kit.found()
1114else
1115 have = false
1116 libp11kit = []
1117endif
1118conf.set10('HAVE_P11KIT', have)
1119
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001121if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 libdw = dependency('libdw',
1123 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130
1131want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001132if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libz = dependency('zlib',
1134 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141
1142want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001143if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libbzip2 = cc.find_library('bz2',
1145 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001154if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libxz = dependency('liblzma',
1156 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001165if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001167 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001176want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001177if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001178 libxkbcommon = dependency('xkbcommon',
1179 version : '>= 0.3.0',
1180 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001182else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001184 libxkbcommon = []
1185endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001187
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001188want_pcre2 = get_option('pcre2')
1189if want_pcre2 != 'false'
1190 libpcre2 = dependency('libpcre2-8',
1191 required : want_pcre2 == 'true')
1192 have = libpcre2.found()
1193else
1194 have = false
1195 libpcre2 = []
1196endif
1197conf.set10('HAVE_PCRE2', have)
1198
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001199want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001200if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 libglib = dependency('glib-2.0',
1202 version : '>= 2.22.0',
1203 required : want_glib == 'true')
1204 libgobject = dependency('gobject-2.0',
1205 version : '>= 2.22.0',
1206 required : want_glib == 'true')
1207 libgio = dependency('gio-2.0',
1208 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001209 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001212 libglib = []
1213 libgobject = []
1214 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001215endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001216conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001217
1218want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001219if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 libdbus = dependency('dbus-1',
1221 version : '>= 1.3.2',
1222 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001224else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001225 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001229
Yu Watanabe42303dc2017-06-18 05:22:32 +09001230default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001231if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001232 default_dnssec = 'no'
1233endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001235 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1236 default_dnssec = 'no'
1237endif
1238conf.set('DEFAULT_DNSSEC_MODE',
1239 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1240substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1241
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001242dns_over_tls = get_option('dns-over-tls')
1243if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001244 if dns_over_tls == 'openssl'
1245 have_gnutls = false
1246 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001247 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001248 if dns_over_tls == 'gnutls' and not have_gnutls
1249 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1250 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001251 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001252 if dns_over_tls == 'gnutls' or have_gnutls
1253 have_openssl = false
1254 else
1255 have_openssl = conf.get('HAVE_OPENSSL') == 1
1256 if dns_over_tls != 'auto' and not have_openssl
1257 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001258 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001259 endif
1260 endif
1261 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001262else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001263 have = false
1264 have_gnutls = false
1265 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001266endif
1267conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001268conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1269conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001270
Iwan Timmerc9299be2018-06-13 20:26:24 +02001271default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001272if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001273 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001274endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001275if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001276 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 +02001277 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001278endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001279conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1280 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1281substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001282
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001284if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001285 have = (conf.get('HAVE_LIBCURL') == 1 and
1286 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001287 conf.get('HAVE_XZ') == 1 and
1288 conf.get('HAVE_GCRYPT') == 1)
1289 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001290 error('importd support was requested, but dependencies are not available')
1291 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001292else
1293 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001295conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296
1297want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001298if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001299 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1300 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1302 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001303 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001304 # config should be installed when any of the programs are built.
1305 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1306 error('remote support was requested, but dependencies are not available')
1307 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001308 have = have_deps[0] or have_deps[1]
1309else
1310 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001312conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001314foreach term : ['utmp',
1315 'hibernate',
1316 'environment-d',
1317 'binfmt',
1318 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001319 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001320 'resolve',
1321 'logind',
1322 'hostnamed',
1323 'localed',
1324 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001325 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001326 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001327 'networkd',
1328 'timedated',
1329 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001330 'firstboot',
1331 'randomseed',
1332 'backlight',
1333 'vconsole',
1334 'quotacheck',
1335 'sysusers',
1336 'tmpfiles',
1337 'hwdb',
1338 'rfkill',
1339 'ldconfig',
1340 'efi',
1341 'tpm',
1342 'ima',
1343 'smack',
1344 'gshadow',
1345 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001346 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001347 'nss-systemd']
1348 have = get_option(term)
1349 name = 'ENABLE_' + term.underscorify().to_upper()
1350 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351endforeach
1352
Yu Watanabe08540a92018-07-18 09:25:57 +09001353foreach tuple : [['nss-mymachines', 'machined'],
1354 ['nss-resolve', 'resolve']]
1355 want = get_option(tuple[0])
1356 if want != 'false'
1357 have = get_option(tuple[1])
1358 if want == 'true' and not have
1359 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1360 endif
1361 else
1362 have = false
1363 endif
1364 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1365 conf.set10(name, have)
1366endforeach
1367
1368enable_nss = false
1369foreach term : ['ENABLE_NSS_MYHOSTNAME',
1370 'ENABLE_NSS_MYMACHINES',
1371 'ENABLE_NSS_RESOLVE',
1372 'ENABLE_NSS_SYSTEMD']
1373 if conf.get(term) == 1
1374 enable_nss = true
1375 endif
1376endforeach
1377conf.set10('ENABLE_NSS', enable_nss)
1378
Yu Watanabe348b4432018-05-07 18:17:35 +09001379conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001380
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001381tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001382fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001383
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001384conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001385
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001386#####################################################################
1387
1388if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001390
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001391 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001393 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 elif efi_arch == 'x86_64'
1395 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001396 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 elif efi_arch == 'arm'
1398 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001399 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 elif efi_arch == 'aarch64'
1401 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001402 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 else
1404 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001405 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001408 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001410
Yu Watanabeac093402018-05-10 16:04:16 +09001411 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001412else
1413 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001415conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416
1417#####################################################################
1418
1419config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 output : 'config.h',
1421 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422
Yu Watanabe348b4432018-05-07 18:17:35 +09001423meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1424
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001426 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427 'src/shared',
1428 'src/systemd',
1429 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001430 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001431 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432 'src/resolve',
1433 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001434 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 'src/login',
1436 'src/udev',
1437 'src/libudev',
1438 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001439 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 'src/libsystemd/sd-bus',
1441 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001442 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443 'src/libsystemd/sd-hwdb',
1444 'src/libsystemd/sd-id128',
1445 'src/libsystemd/sd-netlink',
1446 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001447 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001449 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450
1451add_project_arguments('-include', 'config.h', language : 'c')
1452
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001453generate_gperfs = find_program('tools/generate-gperfs.py')
1454
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455subdir('po')
1456subdir('catalog')
1457subdir('src/systemd')
1458subdir('src/basic')
1459subdir('src/libsystemd')
1460subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
1464libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 'journal-core',
1466 libjournal_core_sources,
1467 journald_gperf_c,
1468 include_directories : includes,
1469 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470
Davide Cavalca1485aac2019-02-27 11:19:07 -05001471libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001474 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001475 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 include_directories : includes,
1477 link_args : ['-shared',
1478 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001479 link_with : [libbasic,
1480 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001481 link_whole : [libsystemd_static,
1482 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 dependencies : [threads,
1484 librt,
1485 libxz,
1486 liblz4],
1487 link_depends : libsystemd_sym,
1488 install : true,
1489 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490
Davide Cavalca70848ec2018-04-09 02:43:35 -07001491static_libsystemd = get_option('static-libsystemd')
1492static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1493
1494install_libsystemd_static = static_library(
1495 'systemd',
1496 libsystemd_sources,
1497 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001498 basic_sources,
1499 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001500 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001501 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001502 build_by_default : static_libsystemd != 'false',
1503 install : static_libsystemd != 'false',
1504 install_dir : rootlibdir,
1505 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1506 dependencies : [threads,
1507 librt,
1508 libxz,
1509 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001510 libcap,
1511 libblkid,
1512 libmount,
1513 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001514 libgcrypt],
1515 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1516
Mario Limonciellob61d7772019-09-09 22:49:35 +01001517#Generate autosuspend rules
1518make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1519
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520############################################################
1521
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001522# binaries that have --help and are intended for use by humans,
1523# usually, but not always, installed in /bin.
1524public_programs = []
1525
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526subdir('src/libudev')
1527subdir('src/shared')
1528subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001529subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530subdir('src/udev')
1531subdir('src/network')
1532
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001533subdir('src/analyze')
1534subdir('src/journal-remote')
1535subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001536subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001537subdir('src/hostname')
1538subdir('src/import')
1539subdir('src/kernel-install')
1540subdir('src/locale')
1541subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001542subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001543subdir('src/userdb')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001544subdir('src/nspawn')
1545subdir('src/resolve')
1546subdir('src/timedate')
1547subdir('src/timesync')
1548subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001549subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001550
1551subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001552subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001553subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001554subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001555
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001556############################################################
1557
1558# only static linking apart from libdl, to make sure that the
1559# module is linked to all libraries that it uses.
1560test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 'test-dlopen',
1562 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001563 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 include_directories : includes,
1565 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001566 dependencies : [libdl],
1567 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001568
Yu Watanabe08540a92018-07-18 09:25:57 +09001569foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001570 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001571 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1572 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001574 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 if condition
1576 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001577
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001579 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 nss = shared_library(
1582 'nss_' + module,
1583 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001584 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 version : '2',
1586 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001587 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1588 link_args : ['-Wl,-z,nodelete',
1589 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001590 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001591 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001592 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 libbasic],
1594 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001595 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 link_depends : sym,
1597 install : true,
1598 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 # We cannot use shared_module because it does not support version suffix.
1601 # Unfortunately shared_library insists on creating the symlink…
1602 meson.add_install_script('sh', '-c',
1603 'rm $DESTDIR@0@/libnss_@1@.so'
1604 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001605
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001606 if want_tests != 'false'
1607 test('dlopen-nss_' + module,
1608 test_dlopen,
1609 # path to dlopen must include a slash
1610 args : nss.full_path())
1611 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001613endforeach
1614
1615############################################################
1616
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617executable('systemd',
1618 systemd_sources,
1619 include_directories : includes,
1620 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001621 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001622 dependencies : [versiondep,
1623 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001624 librt,
1625 libseccomp,
1626 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001627 libmount,
1628 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001629 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630 install : true,
1631 install_dir : rootlibexecdir)
1632
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001633meson.add_install_script(meson_make_symlink,
1634 join_paths(rootlibexecdir, 'systemd'),
1635 join_paths(rootsbindir, 'init'))
1636
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001637exe = executable('systemd-analyze',
1638 systemd_analyze_sources,
1639 include_directories : includes,
1640 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001641 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001642 dependencies : [versiondep,
1643 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 librt,
1645 libseccomp,
1646 libselinux,
1647 libmount,
1648 libblkid],
1649 install_rpath : rootlibexecdir,
1650 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001651public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652
1653executable('systemd-journald',
1654 systemd_journald_sources,
1655 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001656 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001657 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658 dependencies : [threads,
1659 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001660 liblz4,
1661 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001662 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663 install : true,
1664 install_dir : rootlibexecdir)
1665
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666exe = executable('systemd-cat',
1667 systemd_cat_sources,
1668 include_directories : includes,
1669 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001670 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001671 dependencies : [threads],
1672 install_rpath : rootlibexecdir,
1673 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001674public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001676exe = executable('journalctl',
1677 journalctl_sources,
1678 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001679 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 dependencies : [threads,
1681 libqrencode,
1682 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001683 liblz4,
1684 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001685 install_rpath : rootlibexecdir,
1686 install : true,
1687 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001688public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689
1690executable('systemd-getty-generator',
1691 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001693 link_with : [libshared],
1694 install_rpath : rootlibexecdir,
1695 install : true,
1696 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697
1698executable('systemd-debug-generator',
1699 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001701 link_with : [libshared],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001706executable('systemd-run-generator',
1707 'src/run-generator/run-generator.c',
1708 include_directories : includes,
1709 link_with : [libshared],
1710 install_rpath : rootlibexecdir,
1711 install : true,
1712 install_dir : systemgeneratordir)
1713
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714executable('systemd-fstab-generator',
1715 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001717 link_with : [libcore_shared,
1718 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('30-systemd-environment-d-generator',
1725 'src/environment-d-generator/environment-d-generator.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001731
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 meson.add_install_script(meson_make_symlink,
1733 join_paths(sysconfdir, 'environment'),
1734 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735endif
1736
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001737if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 executable('systemd-hibernate-resume-generator',
1739 'src/hibernate-resume/hibernate-resume-generator.c',
1740 include_directories : includes,
1741 link_with : [libshared],
1742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 executable('systemd-hibernate-resume',
1747 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001748 include_directories : includes,
1749 link_with : [libshared],
1750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753endif
1754
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001755if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 executable('systemd-gpt-auto-generator',
1757 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001758 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 dependencies : libblkid,
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : systemgeneratordir)
1765
1766 exe = executable('systemd-dissect',
1767 'src/dissect/dissect.c',
1768 include_directories : includes,
1769 link_with : [libshared],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001773 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774endif
1775
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001776if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-resolved',
1778 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001779 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001780 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001781 libbasic_gcrypt,
1782 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001783 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001784 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 install : true,
1786 install_dir : rootlibexecdir)
1787
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001788 exe = executable('resolvectl',
1789 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001791 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001792 libbasic_gcrypt,
1793 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001795 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 libm,
1797 libidn],
1798 install_rpath : rootlibexecdir,
1799 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001800 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001801
1802 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001803 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001804 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001805
1806 meson.add_install_script(meson_make_symlink,
1807 join_paths(bindir, 'resolvectl'),
1808 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-logind',
1813 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001814 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001816 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001819 install_rpath : rootlibexecdir,
1820 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 exe = executable('loginctl',
1824 loginctl_sources,
1825 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001826 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 dependencies : [threads,
1828 liblz4,
1829 libxz],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001833 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001834
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 exe = executable('systemd-inhibit',
1836 'src/login/inhibit.c',
1837 include_directories : includes,
1838 link_with : [libshared],
1839 install_rpath : rootlibexecdir,
1840 install : true,
1841 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001842 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001843
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001844 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001845 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 pam_systemd = shared_library(
1847 'pam_systemd',
1848 pam_systemd_c,
1849 name_prefix : '',
1850 include_directories : includes,
1851 link_args : ['-shared',
1852 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001853 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 libshared_static],
1855 dependencies : [threads,
1856 libpam,
1857 libpam_misc],
1858 link_depends : pam_systemd_sym,
1859 install : true,
1860 install_dir : pamlibdir)
1861
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001862 if want_tests != 'false'
1863 test('dlopen-pam_systemd',
1864 test_dlopen,
1865 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001866 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001867 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001869
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001870 executable('systemd-user-runtime-dir',
1871 user_runtime_dir_sources,
1872 include_directories : includes,
1873 link_with : [libshared],
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : rootlibexecdir)
1877endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001878
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001879if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 executable('systemd-user-sessions',
1881 'src/user-sessions/user-sessions.c',
1882 include_directories : includes,
1883 link_with : [libshared],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 exe = executable('bootctl',
1891 'src/boot/bootctl.c',
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [libblkid],
1895 install_rpath : rootlibexecdir,
1896 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001897 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001898
1899 executable('systemd-bless-boot',
1900 'src/boot/bless-boot.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [libblkid],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001907
1908 executable('systemd-bless-boot-generator',
1909 'src/boot/bless-boot-generator.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 install_rpath : rootlibexecdir,
1913 install : true,
1914 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001915endif
1916
Lennart Poetteringf876f532018-06-25 16:07:33 +02001917executable('systemd-boot-check-no-failures',
1918 'src/boot/boot-check-no-failures.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [libblkid],
1922 install_rpath : rootlibexecdir,
1923 install : true,
1924 install_dir : rootlibexecdir)
1925
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001926exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1927 include_directories : includes,
1928 link_with : [libshared],
1929 dependencies : [threads],
1930 install_rpath : rootlibexecdir,
1931 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001932public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001933
Felipe Satelerf3794362018-05-22 15:08:57 -04001934
1935if get_option('link-systemctl-shared')
1936 systemctl_link_with = [libshared]
1937else
1938 systemctl_link_with = [libsystemd_static,
1939 libshared_static,
1940 libjournal_client,
1941 libbasic_gcrypt]
1942endif
1943
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001944exe = executable('systemctl',
1945 'src/systemctl/systemctl.c',
1946 'src/systemctl/sysv-compat.h',
1947 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001948 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001949 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001950 dependencies : [threads,
1951 libcap,
1952 libselinux,
1953 libxz,
1954 liblz4],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001958public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001959
Lennart Poettering61d05782018-04-16 21:41:40 +02001960if conf.get('ENABLE_PORTABLED') == 1
1961 executable('systemd-portabled',
1962 systemd_portabled_sources,
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [threads],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
1969
1970 exe = executable('portablectl', 'src/portable/portablectl.c',
1971 include_directories : includes,
1972 link_with : [libshared],
1973 dependencies : [threads],
1974 install_rpath : rootlibexecdir,
1975 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001976 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001977 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001978endif
1979
Lennart Poetteringd093b622019-07-04 18:33:30 +02001980if conf.get('ENABLE_USERDB') == 1
1981 executable('systemd-userwork',
1982 systemd_userwork_sources,
1983 include_directories : includes,
1984 link_with : [libshared],
1985 dependencies : [threads],
1986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
1989
1990 executable('systemd-userdbd',
1991 systemd_userdbd_sources,
1992 include_directories : includes,
1993 link_with : [libshared],
1994 dependencies : [threads],
1995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02001998
1999 executable('userdbctl',
2000 userdbctl_sources,
2001 include_directories : includes,
2002 link_with : [libshared],
2003 dependencies : [threads],
2004 install_rpath : rootlibexecdir,
2005 install : true,
2006 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002007endif
2008
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002009foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2010 meson.add_install_script(meson_make_symlink,
2011 join_paths(rootbindir, 'systemctl'),
2012 join_paths(rootsbindir, alias))
2013endforeach
2014
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002015if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 executable('systemd-backlight',
2017 'src/backlight/backlight.c',
2018 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002019 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023endif
2024
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002025if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 executable('systemd-rfkill',
2027 'src/rfkill/rfkill.c',
2028 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002029 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033endif
2034
2035executable('systemd-system-update-generator',
2036 'src/system-update-generator/system-update-generator.c',
2037 include_directories : includes,
2038 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002039 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040 install : true,
2041 install_dir : systemgeneratordir)
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002044 systemd_cryptsetup_sources = files('''
2045 src/cryptsetup/cryptsetup.c
2046 src/cryptsetup/cryptsetup-pkcs11.h
2047'''.split())
2048
2049 if conf.get('HAVE_P11KIT') == 1
2050 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2051 endif
2052
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002054 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002055 include_directories : includes,
2056 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002057 dependencies : [libcryptsetup,
2058 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 install_rpath : rootlibexecdir,
2060 install : true,
2061 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 executable('systemd-cryptsetup-generator',
2064 'src/cryptsetup/cryptsetup-generator.c',
2065 include_directories : includes,
2066 link_with : [libshared],
2067 dependencies : [libcryptsetup],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 executable('systemd-veritysetup',
2073 'src/veritysetup/veritysetup.c',
2074 include_directories : includes,
2075 link_with : [libshared],
2076 dependencies : [libcryptsetup],
2077 install_rpath : rootlibexecdir,
2078 install : true,
2079 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-veritysetup-generator',
2082 'src/veritysetup/veritysetup-generator.c',
2083 include_directories : includes,
2084 link_with : [libshared],
2085 dependencies : [libcryptsetup],
2086 install_rpath : rootlibexecdir,
2087 install : true,
2088 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089endif
2090
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002091if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002092 executable('systemd-sysv-generator',
2093 'src/sysv-generator/sysv-generator.c',
2094 include_directories : includes,
2095 link_with : [libshared],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 executable('systemd-rc-local-generator',
2101 'src/rc-local-generator/rc-local-generator.c',
2102 include_directories : includes,
2103 link_with : [libshared],
2104 install_rpath : rootlibexecdir,
2105 install : true,
2106 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107endif
2108
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002109if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 executable('systemd-hostnamed',
2111 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 install : true,
2116 install_dir : rootlibexecdir)
2117
2118 exe = executable('hostnamectl',
2119 'src/hostname/hostnamectl.c',
2120 include_directories : includes,
2121 link_with : [libshared],
2122 install_rpath : rootlibexecdir,
2123 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002124 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125endif
2126
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002127if conf.get('ENABLE_LOCALED') == 1
2128 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 # logind will load libxkbcommon.so dynamically on its own
2130 deps = [libdl]
2131 else
2132 deps = []
2133 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002134
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 executable('systemd-localed',
2136 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002138 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 install : true,
2142 install_dir : rootlibexecdir)
2143
2144 exe = executable('localectl',
2145 localectl_sources,
2146 include_directories : includes,
2147 link_with : [libshared],
2148 install_rpath : rootlibexecdir,
2149 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002150 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151endif
2152
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002153if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002154 executable('systemd-timedated',
2155 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002156 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002157 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002161endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162
Yu Watanabe6129ec82018-05-03 18:07:43 +09002163if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002164 exe = executable('timedatectl',
2165 'src/timedate/timedatectl.c',
2166 include_directories : includes,
2167 install_rpath : rootlibexecdir,
2168 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002169 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002171 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002172endif
2173
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002174if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 executable('systemd-timesyncd',
2176 systemd_timesyncd_sources,
2177 include_directories : includes,
2178 link_with : [libshared],
2179 dependencies : [threads,
2180 libm],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002184
2185 executable('systemd-time-wait-sync',
2186 'src/time-wait-sync/time-wait-sync.c',
2187 include_directories : includes,
2188 link_with : [libshared],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192endif
2193
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002194if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 executable('systemd-machined',
2196 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002197 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002198 link_with : [libmachine_core,
2199 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200 install_rpath : rootlibexecdir,
2201 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 install_dir : rootlibexecdir)
2203
2204 exe = executable('machinectl',
2205 'src/machine/machinectl.c',
2206 include_directories : includes,
2207 link_with : [libshared],
2208 dependencies : [threads,
2209 libxz,
2210 liblz4],
2211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002214 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215endif
2216
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002217if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 executable('systemd-importd',
2219 systemd_importd_sources,
2220 include_directories : includes,
2221 link_with : [libshared],
2222 dependencies : [threads],
2223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002227 systemd_pull = executable('systemd-pull',
2228 systemd_pull_sources,
2229 include_directories : includes,
2230 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002231 dependencies : [versiondep,
2232 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 libz,
2234 libbzip2,
2235 libxz,
2236 libgcrypt],
2237 install_rpath : rootlibexecdir,
2238 install : true,
2239 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002240
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 systemd_import = executable('systemd-import',
2242 systemd_import_sources,
2243 include_directories : includes,
2244 link_with : [libshared],
2245 dependencies : [libcurl,
2246 libz,
2247 libbzip2,
2248 libxz],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002253 systemd_import_fs = executable('systemd-import-fs',
2254 systemd_import_fs_sources,
2255 include_directories : includes,
2256 link_with : [libshared],
2257 install_rpath : rootlibexecdir,
2258 install : true,
2259 install_dir : rootlibexecdir)
2260
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 systemd_export = executable('systemd-export',
2262 systemd_export_sources,
2263 include_directories : includes,
2264 link_with : [libshared],
2265 dependencies : [libcurl,
2266 libz,
2267 libbzip2,
2268 libxz],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002272
2273 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274endif
2275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002276if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 exe = executable('systemd-journal-upload',
2278 systemd_journal_upload_sources,
2279 include_directories : includes,
2280 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002281 dependencies : [versiondep,
2282 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 libcurl,
2284 libgnutls,
2285 libxz,
2286 liblz4],
2287 install_rpath : rootlibexecdir,
2288 install : true,
2289 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002290 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291endif
2292
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002293if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 s_j_remote = executable('systemd-journal-remote',
2295 systemd_journal_remote_sources,
2296 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002297 link_with : [libshared,
2298 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299 dependencies : [threads,
2300 libmicrohttpd,
2301 libgnutls,
2302 libxz,
2303 liblz4],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 s_j_gatewayd = executable('systemd-journal-gatewayd',
2309 systemd_journal_gatewayd_sources,
2310 include_directories : includes,
2311 link_with : [libshared],
2312 dependencies : [threads,
2313 libmicrohttpd,
2314 libgnutls,
2315 libxz,
2316 liblz4],
2317 install_rpath : rootlibexecdir,
2318 install : true,
2319 install_dir : rootlibexecdir)
2320 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 executable('systemd-coredump',
2325 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002326 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002327 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 libacl,
2330 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331 libxz,
2332 liblz4],
2333 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 install : true,
2335 install_dir : rootlibexecdir)
2336
2337 exe = executable('coredumpctl',
2338 coredumpctl_sources,
2339 include_directories : includes,
2340 link_with : [libshared],
2341 dependencies : [threads,
2342 libxz,
2343 liblz4],
2344 install_rpath : rootlibexecdir,
2345 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002346 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347endif
2348
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002349if conf.get('ENABLE_PSTORE') == 1
2350 executable('systemd-pstore',
2351 systemd_pstore_sources,
2352 include_directories : includes,
2353 link_with : [libshared],
2354 dependencies : [threads,
2355 libacl,
2356 libdw,
2357 libxz,
2358 liblz4],
2359 install_rpath : rootlibexecdir,
2360 install : true,
2361 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002362endif
2363
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002364if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002365 exe = executable('systemd-binfmt',
2366 'src/binfmt/binfmt.c',
2367 include_directories : includes,
2368 link_with : [libshared],
2369 install_rpath : rootlibexecdir,
2370 install : true,
2371 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002372 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002373
2374 meson.add_install_script('sh', '-c',
2375 mkdir_p.format(binfmtdir))
2376 meson.add_install_script('sh', '-c',
2377 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2378endif
2379
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002380if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002381 executable('systemd-vconsole-setup',
2382 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383 include_directories : includes,
2384 link_with : [libshared],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388endif
2389
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002390if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002391 executable('systemd-random-seed',
2392 'src/random-seed/random-seed.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398endif
2399
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002400if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002401 executable('systemd-firstboot',
2402 'src/firstboot/firstboot.c',
2403 include_directories : includes,
2404 link_with : [libshared],
2405 dependencies : [libcrypt],
2406 install_rpath : rootlibexecdir,
2407 install : true,
2408 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409endif
2410
2411executable('systemd-remount-fs',
2412 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002414 link_with : [libcore_shared,
2415 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002416 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002417 install : true,
2418 install_dir : rootlibexecdir)
2419
2420executable('systemd-machine-id-setup',
2421 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002423 link_with : [libcore_shared,
2424 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002425 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426 install : true,
2427 install_dir : rootbindir)
2428
2429executable('systemd-fsck',
2430 'src/fsck/fsck.c',
2431 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002432 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002433 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434 install : true,
2435 install_dir : rootlibexecdir)
2436
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002437executable('systemd-growfs',
2438 'src/partition/growfs.c',
2439 include_directories : includes,
2440 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002441 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002442 install_rpath : rootlibexecdir,
2443 install : true,
2444 install_dir : rootlibexecdir)
2445
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002446executable('systemd-makefs',
2447 'src/partition/makefs.c',
2448 include_directories : includes,
2449 link_with : [libshared],
2450 install_rpath : rootlibexecdir,
2451 install : true,
2452 install_dir : rootlibexecdir)
2453
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454executable('systemd-sleep',
2455 'src/sleep/sleep.c',
2456 include_directories : includes,
2457 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002458 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459 install : true,
2460 install_dir : rootlibexecdir)
2461
Yu Watanabed25e1272019-01-03 02:32:57 +09002462install_data('src/sleep/sleep.conf',
2463 install_dir : pkgsysconfdir)
2464
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465exe = executable('systemd-sysctl',
2466 'src/sysctl/sysctl.c',
2467 include_directories : includes,
2468 link_with : [libshared],
2469 install_rpath : rootlibexecdir,
2470 install : true,
2471 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002472public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473
2474executable('systemd-ac-power',
2475 'src/ac-power/ac-power.c',
2476 include_directories : includes,
2477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002478 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479 install : true,
2480 install_dir : rootlibexecdir)
2481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482exe = executable('systemd-detect-virt',
2483 'src/detect-virt/detect-virt.c',
2484 include_directories : includes,
2485 link_with : [libshared],
2486 install_rpath : rootlibexecdir,
2487 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002488public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490exe = executable('systemd-delta',
2491 'src/delta/delta.c',
2492 include_directories : includes,
2493 link_with : [libshared],
2494 install_rpath : rootlibexecdir,
2495 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002496public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498exe = executable('systemd-escape',
2499 'src/escape/escape.c',
2500 include_directories : includes,
2501 link_with : [libshared],
2502 install_rpath : rootlibexecdir,
2503 install : true,
2504 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002505public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002506
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507exe = executable('systemd-notify',
2508 'src/notify/notify.c',
2509 include_directories : includes,
2510 link_with : [libshared],
2511 install_rpath : rootlibexecdir,
2512 install : true,
2513 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
2516executable('systemd-volatile-root',
2517 'src/volatile-root/volatile-root.c',
2518 include_directories : includes,
2519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002520 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002521 install : true,
2522 install_dir : rootlibexecdir)
2523
2524executable('systemd-cgroups-agent',
2525 'src/cgroups-agent/cgroups-agent.c',
2526 include_directories : includes,
2527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002528 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529 install : true,
2530 install_dir : rootlibexecdir)
2531
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002532exe = executable('systemd-id128',
2533 'src/id128/id128.c',
2534 include_directories : includes,
2535 link_with : [libshared],
2536 install_rpath : rootlibexecdir,
2537 install : true)
2538public_programs += exe
2539
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002540exe = executable('systemd-path',
2541 'src/path/path.c',
2542 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544 install_rpath : rootlibexecdir,
2545 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002546public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548exe = executable('systemd-ask-password',
2549 'src/ask-password/ask-password.c',
2550 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552 install_rpath : rootlibexecdir,
2553 install : true,
2554 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002555public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556
2557executable('systemd-reply-password',
2558 'src/reply-password/reply-password.c',
2559 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002560 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002561 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562 install : true,
2563 install_dir : rootlibexecdir)
2564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565exe = executable('systemd-tty-ask-password-agent',
2566 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2567 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002568 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 install_rpath : rootlibexecdir,
2570 install : true,
2571 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002572public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002574exe = executable('systemd-cgls',
2575 'src/cgls/cgls.c',
2576 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002577 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578 install_rpath : rootlibexecdir,
2579 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002580public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002582exe = executable('systemd-cgtop',
2583 'src/cgtop/cgtop.c',
2584 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002585 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002586 install_rpath : rootlibexecdir,
2587 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002588public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589
2590executable('systemd-initctl',
2591 'src/initctl/initctl.c',
2592 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002593 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002594 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002595 install : true,
2596 install_dir : rootlibexecdir)
2597
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002598exe = executable('systemd-mount',
2599 'src/mount/mount-tool.c',
2600 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002601 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002602 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603 install_rpath : rootlibexecdir,
2604 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002605public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002607meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002608 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610exe = executable('systemd-run',
2611 'src/run/run.c',
2612 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002613 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614 install_rpath : rootlibexecdir,
2615 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618exe = executable('systemd-stdio-bridge',
2619 'src/stdio-bridge/stdio-bridge.c',
2620 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002621 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002622 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623 install_rpath : rootlibexecdir,
2624 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002625public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002626
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627exe = executable('busctl',
2628 'src/busctl/busctl.c',
2629 'src/busctl/busctl-introspect.c',
2630 'src/busctl/busctl-introspect.h',
2631 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 install_rpath : rootlibexecdir,
2634 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002635public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002637if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002638 exe = executable('systemd-sysusers',
2639 'src/sysusers/sysusers.c',
2640 include_directories : includes,
2641 link_with : [libshared],
2642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002645 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646endif
2647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002648if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002649 exe = executable('systemd-tmpfiles',
2650 'src/tmpfiles/tmpfiles.c',
2651 include_directories : includes,
2652 link_with : [libshared],
2653 dependencies : [libacl],
2654 install_rpath : rootlibexecdir,
2655 install : true,
2656 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002657 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002658
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002659 if want_tests != 'false'
2660 test('test-systemd-tmpfiles',
2661 test_systemd_tmpfiles_py,
2662 # https://github.com/mesonbuild/meson/issues/2681
2663 args : exe.full_path())
2664 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665endif
2666
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002667if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002668 exe = executable('systemd-hwdb',
2669 'src/hwdb/hwdb.c',
2670 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2671 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002672 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002673 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002674 install : true,
2675 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002676 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677endif
2678
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002679if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002680 executable('systemd-quotacheck',
2681 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002682 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002683 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002684 install_rpath : rootlibexecdir,
2685 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002686 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687endif
2688
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002689exe = executable('systemd-socket-proxyd',
2690 'src/socket-proxy/socket-proxyd.c',
2691 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002692 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002693 dependencies : [threads],
2694 install_rpath : rootlibexecdir,
2695 install : true,
2696 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002697public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002698
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002699exe = executable('systemd-udevd',
2700 systemd_udevd_sources,
2701 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002702 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002703 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002704 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002705 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002706 dependencies : [versiondep,
2707 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002708 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002709 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002710 libacl,
2711 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002712 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002713 install : true,
2714 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002715public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002716
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002717exe = executable('udevadm',
2718 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002719 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002720 include_directories : includes,
2721 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002722 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002723 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002724 dependencies : [versiondep,
2725 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002726 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002728 libacl,
2729 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002730 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002731 install : true,
2732 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002733public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002734
2735executable('systemd-shutdown',
2736 systemd_shutdown_sources,
2737 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002738 link_with : [libcore_shared,
2739 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002740 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002741 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002742 install : true,
2743 install_dir : rootlibexecdir)
2744
2745executable('systemd-update-done',
2746 'src/update-done/update-done.c',
2747 include_directories : includes,
2748 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002749 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002750 install : true,
2751 install_dir : rootlibexecdir)
2752
2753executable('systemd-update-utmp',
2754 'src/update-utmp/update-utmp.c',
2755 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002756 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002757 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002758 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002759 install : true,
2760 install_dir : rootlibexecdir)
2761
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002762if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 executable('systemd-modules-load',
2764 'src/modules-load/modules-load.c',
2765 include_directories : includes,
2766 link_with : [libshared],
2767 dependencies : [libkmod],
2768 install_rpath : rootlibexecdir,
2769 install : true,
2770 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002771
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002772 meson.add_install_script('sh', '-c',
2773 mkdir_p.format(modulesloaddir))
2774 meson.add_install_script('sh', '-c',
2775 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002776endif
2777
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002778exe = executable('systemd-nspawn',
2779 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002780 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002781 link_with : [libcore_shared,
2782 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002783 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002784 dependencies : [libblkid,
2785 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002786 install_rpath : rootlibexecdir,
2787 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002788public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002789
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002790if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 executable('systemd-networkd',
2792 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002793 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002794 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002795 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002796 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002797 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002798 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 install_rpath : rootlibexecdir,
2800 install : true,
2801 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002802
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 executable('systemd-networkd-wait-online',
2804 systemd_networkd_wait_online_sources,
2805 include_directories : includes,
2806 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002807 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 install_rpath : rootlibexecdir,
2809 install : true,
2810 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002811
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002812 exe = executable('networkctl',
2813 networkctl_sources,
2814 include_directories : includes,
2815 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002816 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002817 install_rpath : rootlibexecdir,
2818 install : true,
2819 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002820 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002821
2822 executable('systemd-network-generator',
2823 network_generator_sources,
2824 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002825 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002826 install_rpath : rootlibexecdir,
2827 install : true,
2828 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002829endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002830
2831executable('systemd-sulogin-shell',
2832 ['src/sulogin-shell/sulogin-shell.c'],
2833 include_directories : includes,
2834 link_with : [libshared],
2835 install_rpath : rootlibexecdir,
2836 install : true,
2837 install_dir : rootlibexecdir)
2838
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002839############################################################
2840
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002841custom_target(
2842 'systemd-runtest.env',
2843 output : 'systemd-runtest.env',
2844 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002845 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002846 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002847 '} >@OUTPUT@'],
2848 build_by_default : true)
2849
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002850foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002851 sources = tuple[0]
2852 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2853 dependencies = tuple[2]
2854 condition = tuple.length() >= 4 ? tuple[3] : ''
2855 type = tuple.length() >= 5 ? tuple[4] : ''
2856 defs = tuple.length() >= 6 ? tuple[5] : []
2857 incs = tuple.length() >= 7 ? tuple[6] : includes
2858 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002859
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002860 name = sources[0].split('/')[-1].split('.')[0]
2861 if type.startswith('timeout=')
2862 timeout = type.split('=')[1].to_int()
2863 type = ''
2864 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002865
2866 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002867 exe = executable(
2868 name,
2869 sources,
2870 include_directories : incs,
2871 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002872 dependencies : [versiondep,
2873 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002874 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002875 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002876 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002877 install : install_tests,
2878 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002879
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002880 if type == 'manual'
2881 message('@0@ is a manual test'.format(name))
2882 elif type == 'unsafe' and want_tests != 'unsafe'
2883 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002884 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002885 test(name, exe,
2886 env : test_env,
2887 timeout : timeout)
2888 endif
2889 else
2890 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2891 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002892endforeach
2893
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002894exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002895 'test-libsystemd-sym',
2896 test_libsystemd_sym_c,
2897 include_directories : includes,
2898 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002899 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002900 install : install_tests,
2901 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002902if want_tests != 'false'
2903 test('test-libsystemd-sym', exe)
2904endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002905
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002906exe = executable(
2907 'test-libsystemd-static-sym',
2908 test_libsystemd_sym_c,
2909 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002910 link_with : [install_libsystemd_static],
2911 dependencies : [threads], # threads is already included in dependencies on the library,
2912 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002913 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002914 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002915 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002916if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002917 test('test-libsystemd-static-sym', exe)
2918endif
2919
2920exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002921 'test-libudev-sym',
2922 test_libudev_sym_c,
2923 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002924 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002925 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002926 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002927 install : install_tests,
2928 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002929if want_tests != 'false'
2930 test('test-libudev-sym', exe)
2931endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002932
2933exe = executable(
2934 'test-libudev-static-sym',
2935 test_libudev_sym_c,
2936 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002937 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002938 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002939 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002940 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002941 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002942if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002943 test('test-libudev-static-sym', exe)
2944endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002945
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002946############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002947
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002948fuzzer_exes = []
2949
Michael Olbrich59967402018-11-11 11:27:35 +01002950if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002951foreach tuple : fuzzers
2952 sources = tuple[0]
2953 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2954 dependencies = tuple[2]
2955 defs = tuple.length() >= 4 ? tuple[3] : []
2956 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002957 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002958
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002959 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002960 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002961 elif want_libfuzzer
2962 if fuzzing_engine.found()
2963 dependencies += fuzzing_engine
2964 else
2965 link_args += ['-fsanitize=fuzzer']
2966 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002967 else
2968 sources += 'src/fuzz/fuzz-main.c'
2969 endif
2970
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002971 if want_fuzzbuzz
2972 sources += 'src/fuzz/fuzzer-entry-point.c'
2973 endif
2974
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002975 name = sources[0].split('/')[-1].split('.')[0]
2976
2977 fuzzer_exes += executable(
2978 name,
2979 sources,
2980 include_directories : [incs, include_directories('src/fuzz')],
2981 link_with : link_with,
2982 dependencies : dependencies,
2983 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002984 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002985 install : false)
2986endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002987endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002988
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002989run_target('fuzzers',
2990 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002991 command : ['true'])
2992
2993############################################################
2994
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002995make_directive_index_py = find_program('tools/make-directive-index.py')
2996make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002997xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002998hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01002999autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003000
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003001subdir('sysctl.d')
3002subdir('sysusers.d')
3003subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003004subdir('hwdb.d')
3005subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003006subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003007subdir('network')
3008subdir('man')
3009subdir('shell-completion/bash')
3010subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003011subdir('docs/sysvinit')
3012subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003013
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003014install_subdir('factory/etc',
3015 install_dir : factorydir)
3016
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003017install_data('xorg/50-systemd-user.sh',
3018 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003019install_data('modprobe.d/systemd.conf',
3020 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003021install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003022 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003023 'NEWS',
3024 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303025 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003026 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003027 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003028 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003029 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003030 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003031 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003032 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3033 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003034
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003035meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3036meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3037
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003038############################################################
3039
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003040meson_check_help = find_program('tools/meson-check-help.sh')
3041
3042foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003043 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003044 if want_tests != 'false'
3045 test('check-help-' + name,
3046 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003047 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003048 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003049endforeach
3050
3051############################################################
3052
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003053check_directives_sh = find_program('tools/check-directives.sh')
3054
3055if want_tests != 'false'
3056 test('check-directives',
3057 check_directives_sh,
3058 args : project_source_root)
3059endif
3060
3061############################################################
3062
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003063# Enable tests for all supported sanitizers
3064foreach tuple : sanitizers
3065 sanitizer = tuple[0]
3066 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003067
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003068 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003069 prev = ''
3070 foreach p : fuzz_regression_tests
3071 b = p.split('/')[-2]
3072 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003073
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003074 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003075
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003076 if name != prev
3077 if want_tests == 'false'
3078 message('Not compiling @0@ because tests is set to false'.format(name))
3079 elif slow_tests
3080 exe = custom_target(
3081 name,
3082 output : name,
3083 depends : build,
3084 command : [env, 'ln', '-fs',
3085 join_paths(build.full_path(), b),
3086 '@OUTPUT@'],
3087 build_by_default : true)
3088 else
3089 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3090 endif
3091 endif
3092 prev = name
3093
3094 if want_tests != 'false' and slow_tests
3095 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3096 env,
3097 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003098 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003099 endif
3100 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003101 endif
3102endforeach
3103
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003104
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003105############################################################
3106
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003107if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003108 all_files = run_command(
3109 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003110 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003111 'ls-files',
3112 ':/*.[ch]'])
3113 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003114
userwithuide85a6902017-08-09 13:41:44 +00003115 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003116 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003117 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003118 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003119 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003120 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003121 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003122endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003123
3124if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003125 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003126 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003127 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003128 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003129endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003130
3131if git.found()
3132 git_head = run_command(
3133 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003134 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003135 'rev-parse', 'HEAD']).stdout().strip()
3136 git_head_short = 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', '--short=7', 'HEAD']).stdout().strip()
3140
3141 run_target(
3142 'git-snapshot',
3143 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003144 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003145 git_head_short),
3146 '--prefix', 'systemd-@0@/'.format(git_head),
3147 'HEAD'])
3148endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003149
3150############################################################
3151
Lennart Poettering51b13862017-12-20 12:51:14 +01003152meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3153run_target(
3154 'check-api-docs',
3155 depends : [man, libsystemd, libudev],
3156 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3157
3158############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003159watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003160
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003161status = [
3162 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3163
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003164 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003165 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003166 'prefix directory: @0@'.format(prefixdir),
3167 'rootprefix directory: @0@'.format(rootprefixdir),
3168 'sysconf directory: @0@'.format(sysconfdir),
3169 'include directory: @0@'.format(includedir),
3170 'lib directory: @0@'.format(libdir),
3171 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 'SysV init scripts: @0@'.format(sysvinit_path),
3173 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003174 'PAM modules directory: @0@'.format(pamlibdir),
3175 'PAM configuration directory: @0@'.format(pamconfdir),
3176 'RPM macros directory: @0@'.format(rpmmacrosdir),
3177 'modprobe.d directory: @0@'.format(modprobedir),
3178 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3179 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3180 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3181 'bash completions directory: @0@'.format(bashcompletiondir),
3182 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003183 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3185 get_option('debug-tty')),
3186 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003187 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 'maximum system UID: @0@'.format(system_uid_max),
3189 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003190 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3191 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3192 'minimum container UID base: @0@'.format(container_uid_base_min),
3193 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003194 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003195 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003196 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003197 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003198 'nobody user name: @0@'.format(nobody_user),
3199 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003201 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003202
3203 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003204 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003205 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003206 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003207 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003208 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003209 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003210 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003211
3212alt_dns_servers = '\n '.join(dns_servers.split(' '))
3213alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3214status += [
3215 'default DNS servers: @0@'.format(alt_dns_servers),
3216 'default NTP servers: @0@'.format(alt_ntp_servers)]
3217
3218alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3219 '@@0@'.format(time_epoch)).stdout().strip()
3220status += [
3221 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3222
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003223status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003224 'static libsystemd: @0@'.format(static_libsystemd),
3225 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003226
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227# TODO:
3228# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3229# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3230# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3231
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003232if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003233 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003234
3235 if have_gnu_efi
3236 status += [
3237 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003238 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003239 'EFI lib directory: @0@'.format(efi_libdir),
3240 'EFI lds directory: @0@'.format(efi_ldsdir),
3241 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003242 endif
3243endif
3244
3245found = []
3246missing = []
3247
3248foreach tuple : [
3249 ['libcryptsetup'],
3250 ['PAM'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003251 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003252 ['AUDIT'],
3253 ['IMA'],
3254 ['AppArmor'],
3255 ['SELinux'],
3256 ['SECCOMP'],
3257 ['SMACK'],
3258 ['zlib'],
3259 ['xz'],
3260 ['lz4'],
3261 ['bzip2'],
3262 ['ACL'],
3263 ['gcrypt'],
3264 ['qrencode'],
3265 ['microhttpd'],
3266 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003267 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003268 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003269 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003270 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003271 ['libidn'],
3272 ['libiptc'],
3273 ['elfutils'],
3274 ['binfmt'],
3275 ['vconsole'],
3276 ['quotacheck'],
3277 ['tmpfiles'],
3278 ['environment.d'],
3279 ['sysusers'],
3280 ['firstboot'],
3281 ['randomseed'],
3282 ['backlight'],
3283 ['rfkill'],
3284 ['logind'],
3285 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003286 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003287 ['userdb'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003288 ['importd'],
3289 ['hostnamed'],
3290 ['timedated'],
3291 ['timesyncd'],
3292 ['localed'],
3293 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003294 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003295 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3296 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003297 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003298 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003299 ['polkit'],
3300 ['legacy pkla', install_polkit_pkla],
3301 ['efi'],
3302 ['gnu-efi', have_gnu_efi],
3303 ['kmod'],
3304 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003305 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003306 ['blkid'],
3307 ['dbus'],
3308 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003309 ['nss-myhostname'],
3310 ['nss-mymachines'],
3311 ['nss-resolve'],
3312 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003313 ['hwdb'],
3314 ['tpm'],
3315 ['man pages', want_man],
3316 ['html pages', want_html],
3317 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003318 ['SysV compat'],
3319 ['utmp'],
3320 ['ldconfig'],
3321 ['hibernate'],
3322 ['adm group', get_option('adm-group')],
3323 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003324 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003325 ['debug hashmap'],
3326 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003327 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003328 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003329 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003330 ['link-udev-shared', get_option('link-udev-shared')],
3331 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003332 ['link-networkd-shared', get_option('link-networkd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003333]
3334
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003335 if tuple.length() >= 2
3336 cond = tuple[1]
3337 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003338 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3339 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003340 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003341 endif
3342 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003343 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003344 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003345 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003346 endif
3347endforeach
3348
3349status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003350 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003351 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003352 '',
3353 'disabled features: @0@'.format(', '.join(missing)),
3354 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003355message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003356
3357if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003358 warning('\n' +
3359 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3360 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3361 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003362endif