blob: 5af7c112f14ee5b2b13eb0a0520746d94d70e669 [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-Szmek384db812020-02-05 09:51:59 +01004 version : '245',
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-Szmek384db812020-02-05 09:51:59 +010016libsystemd_version = '0.28.0'
17libudev_version = '1.6.17'
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-Szmek6ffeca82020-02-28 11:09:16 +010024conf.set('PROJECT_VERSION', meson.project_version(),
25 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026
27substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010028substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010029substs.set('PROJECT_VERSION', meson.project_version(),
30 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040031
Davide Cavalca1485aac2019-02-27 11:19:07 -050032# This is to be used instead of meson.source_root(), as the latter will return
33# the wrong result when systemd is being built as a meson subproject
34project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020035relative_source_path = run_command('realpath',
36 '--relative-to=@0@'.format(meson.current_build_dir()),
37 project_source_root).stdout().strip()
38conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050039
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020040want_ossfuzz = get_option('oss-fuzz')
41want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000042if want_ossfuzz + want_libfuzzer > 1
43 error('only one of oss-fuzz or llvm-fuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020044endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000045
46skip_deps = want_ossfuzz or want_libfuzzer
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000047fuzzer_build = want_ossfuzz or want_libfuzzer
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020048
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040049#####################################################################
50
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040051# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050052git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040053if git_hook.returncode() == 0
54 message(git_hook.stdout().strip())
55endif
56
57#####################################################################
58
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010059if get_option('split-usr') == 'auto'
60 split_usr = run_command('test', '-L', '/bin').returncode() != 0
61else
62 split_usr = get_option('split-usr') == 'true'
63endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010064conf.set10('HAVE_SPLIT_USR', split_usr,
65 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010066
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010067if get_option('split-bin') == 'auto'
68 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
69else
70 split_bin = get_option('split-bin') == 'true'
71endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010072conf.set10('HAVE_SPLIT_BIN', split_bin,
73 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010074
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010076# Unusual rootprefixdir values are used by some distros
77# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010078rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010079if rootprefixdir == ''
80 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010081endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010082rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040083
84sysvinit_path = get_option('sysvinit-path')
85sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090086conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020087 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040088
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020089conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
90conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010091conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020092
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010093# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040094# encountered, so this should canonicalize various paths when they are
95# absolute or relative.
96prefixdir = get_option('prefix')
97if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040098 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040099endif
100bindir = join_paths(prefixdir, get_option('bindir'))
101libdir = join_paths(prefixdir, get_option('libdir'))
102sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
103includedir = join_paths(prefixdir, get_option('includedir'))
104datadir = join_paths(prefixdir, get_option('datadir'))
105localstatedir = join_paths('/', get_option('localstatedir'))
106
107rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100108rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400109rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
110
111rootlibdir = get_option('rootlibdir')
112if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400113 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400114endif
115
116# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200117pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
118pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400119polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
120polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
121polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400122xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900123rpmmacrosdir = get_option('rpmmacrosdir')
124if rpmmacrosdir != 'no'
125 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
126endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200127modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400128
129# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400130pkgdatadir = join_paths(datadir, 'systemd')
131environmentdir = join_paths(prefixdir, 'lib/environment.d')
132pkgsysconfdir = join_paths(sysconfdir, 'systemd')
133userunitdir = join_paths(prefixdir, 'lib/systemd/user')
134userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
135tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
136sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
137sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
138binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
139modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
140networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
141pkgincludedir = join_paths(includedir, 'systemd')
142systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
143usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
144systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
145userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
146systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
147systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
148systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
149systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
150udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400151udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
152udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
153catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
154kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
155factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400156bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
157testsdir = join_paths(prefixdir, 'lib/systemd/tests')
158systemdstatedir = join_paths(localstatedir, 'lib/systemd')
159catalogstatedir = join_paths(systemdstatedir, 'catalog')
160randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200161profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200162ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163
tblume75aaade2018-02-01 22:46:15 +0100164docdir = get_option('docdir')
165if docdir == ''
166 docdir = join_paths(datadir, 'doc/systemd')
167endif
168
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169dbuspolicydir = get_option('dbuspolicydir')
170if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400171 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400172endif
173
174dbussessionservicedir = get_option('dbussessionservicedir')
175if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400176 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177endif
178
179dbussystemservicedir = get_option('dbussystemservicedir')
180if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400181 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182endif
183
184pamlibdir = get_option('pamlibdir')
185if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400186 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400187endif
188
189pamconfdir = get_option('pamconfdir')
190if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400191 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400192endif
193
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100194memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200195status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100196
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400197conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100198conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400199conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
200conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
201conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400202conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100203
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100204conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100205
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100206conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
207conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400208conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
210conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
211conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
212conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100213conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100214conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.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-Szmek96d33e42020-03-24 16:28:26 +0100223conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
224conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
225conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
226conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.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 Poettering70a5db52019-07-04 18:35:39 +0200246conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200247conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200248conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100249conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200250conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400251
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400252substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100253substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100254substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400255substs.set('exec_prefix', prefixdir)
256substs.set('libdir', libdir)
257substs.set('rootlibdir', rootlibdir)
258substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100259substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400260substs.set('bindir', bindir)
261substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('rootlibexecdir', rootlibexecdir)
263substs.set('systemunitdir', systemunitdir)
264substs.set('userunitdir', userunitdir)
265substs.set('systempresetdir', systempresetdir)
266substs.set('userpresetdir', userpresetdir)
267substs.set('udevhwdbdir', udevhwdbdir)
268substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400269substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200270substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400271substs.set('catalogdir', catalogdir)
272substs.set('tmpfilesdir', tmpfilesdir)
273substs.set('sysusersdir', sysusersdir)
274substs.set('sysctldir', sysctldir)
275substs.set('binfmtdir', binfmtdir)
276substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200277substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278substs.set('systemgeneratordir', systemgeneratordir)
279substs.set('usergeneratordir', usergeneratordir)
280substs.set('systemenvgeneratordir', systemenvgeneratordir)
281substs.set('userenvgeneratordir', userenvgeneratordir)
282substs.set('systemshutdowndir', systemshutdowndir)
283substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400284substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400285substs.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')
324endif
325
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100326# Those generate many false positives, and we do not want to change the code to
327# avoid them.
328basic_disabled_warnings = [
329 '-Wno-unused-parameter',
330 '-Wno-missing-field-initializers',
331 '-Wno-unused-result',
332 '-Wno-format-signedness',
333]
334if get_option('b_ndebug') == 'true'
335 # With asserts disabled with get a bunch of warnings about variables which
336 # are used only in the asserts. This is not useful at all, so let's just silence
337 # those warnings.
338 basic_disabled_warnings += [
339 '-Wno-unused-variable',
340 '-Wno-unused-but-set-variable',
341 ]
342endif
343
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345 '-Werror=undef',
346 '-Wlogical-op',
347 '-Wmissing-include-dirs',
348 '-Wold-style-definition',
349 '-Wpointer-arith',
350 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900351 '-Wfloat-equal',
352 '-Wsuggest-attribute=noreturn',
353 '-Werror=missing-prototypes',
354 '-Werror=implicit-function-declaration',
355 '-Werror=missing-declarations',
356 '-Werror=return-type',
357 '-Werror=incompatible-pointer-types',
358 '-Werror=format=2',
359 '-Wstrict-prototypes',
360 '-Wredundant-decls',
361 '-Wmissing-noreturn',
362 '-Wimplicit-fallthrough=5',
363 '-Wshadow',
364 '-Wendif-labels',
365 '-Wstrict-aliasing=2',
366 '-Wwrite-strings',
367 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200368 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200369 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370 '-Wdate-time',
371 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700372
373 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100374 '-Wno-error=#warnings', # clang
375 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700376
377 # work-around for gcc 7.1 turning this on on its own.
378 '-Wno-error=nonnull',
379
380 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
381 # optimizations enabled, producing essentially false positives.
382 '-Wno-maybe-uninitialized',
383
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900384 '-ffast-math',
385 '-fno-common',
386 '-fdiagnostics-show-option',
387 '-fno-strict-aliasing',
388 '-fvisibility=hidden',
389 '-fstack-protector',
390 '-fstack-protector-strong',
391 '--param=ssp-buffer-size=4',
392]
393
394# --as-needed and --no-undefined are provided by meson by default,
395# run mesonconf to see what is enabled
396possible_link_flags = [
397 '-Wl,-z,relro',
398 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200399 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900400]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900402if cc.get_id() == 'clang'
403 possible_cc_flags += [
404 '-Wno-typedef-redefinition',
405 '-Wno-gnu-variable-sized-type-not-at-end',
406 ]
407endif
408
409if get_option('buildtype') != 'debug'
410 possible_cc_flags += [
411 '-ffunction-sections',
412 '-fdata-sections',
413 ]
414
415 possible_link_flags += '-Wl,--gc-sections'
416endif
417
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100418add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900419add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900420add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900421
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800422if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423 #include <time.h>
424 #include <inttypes.h>
425 typedef uint64_t usec_t;
426 usec_t now(clockid_t clock);
427 int main(void) {
428 struct timespec now;
429 return 0;
430 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100431''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400432 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433endif
434
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100435if cxx_cmd != ''
436 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
437endif
438
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200439cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400440
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200441has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
442
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443#####################################################################
444# compilation result tests
445
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400446conf.set('_GNU_SOURCE', true)
447conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200448conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
451conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
452conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
453conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
454
455decl_headers = '''
456#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100457#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400459
460foreach decl : ['char16_t',
461 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100462 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400464
465 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200466 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
467
468 if decl == 'struct statx'
469 if have
470 want_linux_stat_h = false
471 else
472 have = cc.sizeof(decl,
473 prefix : decl_headers + '#include <linux/stat.h>',
474 args : '-D_GNU_SOURCE') > 0
475 want_linux_stat_h = have
476 endif
477 endif
478
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200479 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200482conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700483
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200485 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486endforeach
487
488foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100490 ['gettid', '''#include <sys/types.h>
491 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100492 ['pivot_root', '''#include <stdlib.h>
493 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400495 #include <sys/stat.h>
496 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100498 ['renameat2', '''#include <stdio.h>
499 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 ['kcmp', '''#include <linux/kcmp.h>'''],
501 ['keyctl', '''#include <sys/types.h>
502 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200505 ['bpf', '''#include <sys/syscall.h>
506 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100507 ['statx', '''#include <sys/types.h>
508 #include <sys/stat.h>
509 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100510 ['explicit_bzero' , '''#include <string.h>'''],
511 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100512 ['set_mempolicy', '''#include <stdlib.h>
513 #include <unistd.h>'''],
514 ['get_mempolicy', '''#include <stdlib.h>
515 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200516 ['pidfd_send_signal', '''#include <stdlib.h>
517 #include <unistd.h>
518 #include <signal.h>
519 #include <sys/wait.h>'''],
520 ['pidfd_open', '''#include <stdlib.h>
521 #include <unistd.h>
522 #include <signal.h>
523 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100524 ['rt_sigqueueinfo', '''#include <stdlib.h>
525 #include <unistd.h>
526 #include <signal.h>
527 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529
Lennart Poettering85db59b2017-12-25 12:01:14 +0100530 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532endforeach
533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200535 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400537else
538 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541endif
542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543#####################################################################
544
Davide Cavalca1485aac2019-02-27 11:19:07 -0500545vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
546 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100547 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100548 meson.project_version()]
549
Louis Taylord1084aa2019-01-21 21:45:36 +0000550version_h = vcs_tag(
551 input : 'src/version/version.h.in',
552 output : 'version.h',
553 command: vcs_tagger)
554
555versiondep = declare_dependency(sources: version_h)
556
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400559m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400561git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100562env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100563perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
Davide Cavalca1485aac2019-02-27 11:19:07 -0500565meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400566mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400567test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
568splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400569
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
571# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500572progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 ['kmod', '/usr/bin/kmod' ],
575 ['kexec', '/usr/sbin/kexec' ],
576 ['sulogin', '/usr/sbin/sulogin' ],
577 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
578 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
579 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
580 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200581 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582 ]
583foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400584 path = get_option(prog[0] + '-path')
585 if path != ''
586 message('Using @1@ for @0@'.format(prog[0], path))
587 else
588 exe = find_program(prog[0],
589 '/usr/sbin/' + prog[0],
590 '/sbin/' + prog[0],
591 required: false)
592 path = exe.found() ? exe.path() : prog[1]
593 endif
594 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
595 conf.set_quoted(name, path)
596 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endforeach
598
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500599conf.set_quoted('TELINIT', get_option('telinit-path'))
600
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400601if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100602 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400603endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604
605############################################################
606
607gperf = find_program('gperf')
608
609gperf_test_format = '''
610#include <string.h>
611const char * in_word_set(const char *, @0@);
612@1@
613'''
614gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
615gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
616gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
617if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400618 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
621 if cc.compiles(gperf_test)
622 gperf_len_type = 'unsigned'
623 else
624 error('unable to determine gperf len type')
625 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
627message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628conf.set('GPERF_LEN_TYPE', gperf_len_type,
629 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
631############################################################
632
633if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100636foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637 'linux/memfd.h',
638 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200639 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'valgrind/memcheck.h',
641 'valgrind/valgrind.h',
642 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200644 conf.set10('HAVE_' + header.underscorify().to_upper(),
645 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endforeach
647
648############################################################
649
650conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400651conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
652gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653
654default_hierarchy = get_option('default-hierarchy')
655conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
656 description : 'default cgroup hierarchy as string')
657if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400658 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
664
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100665default_net_naming_scheme = get_option('default-net-naming-scheme')
666conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
667
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900669if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400670 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900671 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673conf.set('TIME_EPOCH', time_epoch)
674
675system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900676if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400677 system_uid_max = run_command(
678 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800679 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
680 '/etc/login.defs').stdout().strip()
681 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900682 system_uid_max = 999
683 else
684 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800685 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400686endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687conf.set('SYSTEM_UID_MAX', system_uid_max)
688substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900691if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 system_gid_max = run_command(
693 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800694 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
695 '/etc/login.defs').stdout().strip()
696 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900697 system_gid_max = 999
698 else
699 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800700 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702conf.set('SYSTEM_GID_MAX', system_gid_max)
703substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704
Yu Watanabeac093402018-05-10 16:04:16 +0900705dynamic_uid_min = get_option('dynamic-uid-min')
706dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100707conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
708conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
709substs.set('dynamicuidmin', dynamic_uid_min)
710substs.set('dynamicuidmax', dynamic_uid_max)
711
Yu Watanabeac093402018-05-10 16:04:16 +0900712container_uid_base_min = get_option('container-uid-base-min')
713container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100714conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
715conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
716substs.set('containeruidbasemin', container_uid_base_min)
717substs.set('containeruidbasemax', container_uid_base_max)
718
Lennart Poetteringafde4572017-12-05 11:00:24 +0100719nobody_user = get_option('nobody-user')
720nobody_group = get_option('nobody-group')
721
Chen Qi2484bff2018-07-23 14:53:09 +0800722if not meson.is_cross_build()
723 getent_result = run_command('getent', 'passwd', '65534')
724 if getent_result.returncode() == 0
725 name = getent_result.stdout().split(':')[0]
726 if name != nobody_user
727 warning('\n' +
728 '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) +
729 'Your build will result in an user table setup that is incompatible with the local system.')
730 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800732 id_result = run_command('id', '-u', nobody_user)
733 if id_result.returncode() == 0
734 id = id_result.stdout().to_int()
735 if id != 65534
736 warning('\n' +
737 '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) +
738 'Your build will result in an user table setup that is incompatible with the local system.')
739 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100741
Chen Qi2484bff2018-07-23 14:53:09 +0800742 getent_result = run_command('getent', 'group', '65534')
743 if getent_result.returncode() == 0
744 name = getent_result.stdout().split(':')[0]
745 if name != nobody_group
746 warning('\n' +
747 '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) +
748 'Your build will result in an group table setup that is incompatible with the local system.')
749 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100750 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800751 id_result = run_command('id', '-g', nobody_group)
752 if id_result.returncode() == 0
753 id = id_result.stdout().to_int()
754 if id != 65534
755 warning('\n' +
756 '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) +
757 'Your build will result in an group table setup that is incompatible with the local system.')
758 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100759 endif
760endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900761if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900762 warning('\n' +
763 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
764 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900765endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100766
767conf.set_quoted('NOBODY_USER_NAME', nobody_user)
768conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900769substs.set('NOBODY_USER_NAME', nobody_user)
770substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100771
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772tty_gid = get_option('tty-gid')
773conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400774substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775
Ikey Doherty84786b82017-12-03 12:28:23 +0000776# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900777users_gid = get_option('users-gid')
778substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000779
Yu Watanabe348b4432018-05-07 18:17:35 +0900780conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
781conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
Michael Bieblace5e312018-07-13 23:36:13 +0200783dev_kvm_mode = get_option('dev-kvm-mode')
784substs.set('DEV_KVM_MODE', dev_kvm_mode)
785conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100786group_render_mode = get_option('group-render-mode')
787substs.set('GROUP_RENDER_MODE', group_render_mode)
788conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400790kill_user_processes = get_option('default-kill-user-processes')
791conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100792conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400793substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400795dns_servers = get_option('dns-servers')
796conf.set_quoted('DNS_SERVERS', dns_servers)
797substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400799ntp_servers = get_option('ntp-servers')
800conf.set_quoted('NTP_SERVERS', ntp_servers)
801substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
Dave Reisner8ca9e922018-12-28 07:38:36 -0500803default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900804if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800805 if not meson.is_cross_build()
806 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
807 default_locale = run_command(choose_default_locale_sh).stdout().strip()
808 else
809 default_locale = 'C.UTF-8'
810 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900811endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500812conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
813
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
815
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200816service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700817watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
818substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200819
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400820substs.set('SUSHELL', get_option('debug-shell'))
821substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200822conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400823
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824enable_debug_hashmap = false
825enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900826enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200827foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900828 if name == 'hashmap'
829 enable_debug_hashmap = true
830 elif name == 'mmap-cache'
831 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900832 elif name == 'siphash'
833 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900834 else
835 message('unknown debug option "@0@", ignoring'.format(name))
836 endif
837endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
839conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900840conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400841
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200842conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200843conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200844
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100845default_user_path = get_option('user-path')
846if default_user_path != ''
847 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100848 default_user_path_display = default_user_path
849else
850 # meson 0.49 fails when ?: is used in .format()
851 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100852endif
853
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100854
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855#####################################################################
856
857threads = dependency('threads')
858librt = cc.find_library('rt')
859libm = cc.find_library('m')
860libdl = cc.find_library('dl')
861libcrypt = cc.find_library('crypt')
862
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400863libcap = dependency('libcap', required : false)
864if not libcap.found()
865 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
866 libcap = cc.find_library('cap')
867endif
868
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100870 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100872want_libfdisk = get_option('fdisk')
873if want_libfdisk != 'false' and not skip_deps
874 libfdisk = dependency('fdisk',
875 required : want_libfdisk == 'true')
876 have = libfdisk.found()
877else
878 have = false
879 libfdisk = []
880endif
881conf.set10('HAVE_LIBFDISK', have)
882
Lennart Poettering70a5db52019-07-04 18:35:39 +0200883want_pwquality = get_option('pwquality')
884if want_pwquality != 'false' and not skip_deps
885 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
886 have = libpwquality.found()
887else
888 have = false
889 libpwquality = []
890endif
891conf.set10('HAVE_PWQUALITY', have)
892
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000894if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400896 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000906if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libselinux = dependency('libselinux',
908 version : '>= 2.1.9',
909 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000918if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libapparmor = dependency('libapparmor',
920 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928smack_run_label = get_option('smack-run-label')
929if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
932
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400933want_polkit = get_option('polkit')
934install_polkit = false
935install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000936if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400938
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libpolkit = dependency('polkit-gobject-1',
940 required : false)
941 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
942 message('Old polkit detected, will install pkla files')
943 install_polkit_pkla = true
944 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400947
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000949if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954 libacl = []
955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000959if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
968want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000969if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000979if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libkmod = dependency('libkmod',
981 version : '>= 15',
982 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000991if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libpam = cc.find_library('pam', required : want_pam == 'true')
993 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libpam = []
998 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001003if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libmicrohttpd = dependency('libmicrohttpd',
1005 version : '>= 0.9.33',
1006 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001015if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001017 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001020
1021 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1022 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001030if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libcurl = dependency('libcurl',
1032 version : '>= 7.32.0',
1033 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001042want_libidn2 = get_option('libidn2')
1043if want_libidn == 'true' and want_libidn2 == 'true'
1044 error('libidn and libidn2 cannot be requested simultaneously')
1045endif
1046
Yu Watanabe1b931392019-06-29 03:13:30 +09001047if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001048 libidn = dependency('libidn2',
1049 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libidn.found()
1051else
1052 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001053 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001056if not have and want_libidn != 'false' and not skip_deps
1057 # libidn is used for both libidn and libidn2 objects
1058 libidn = dependency('libidn',
1059 required : want_libidn == 'true')
1060 have = libidn.found()
1061else
1062 have = false
1063endif
1064conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065
1066want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001067if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 libiptc = dependency('libiptc',
1069 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076
1077want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001078if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libqrencode = dependency('libqrencode',
1080 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001088want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001089if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001090 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1091 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
1095endif
1096if not have
1097 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098 libgcrypt = []
1099 libgpg_error = []
1100endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001104if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libgnutls = dependency('gnutls',
1106 version : '>= 3.1.4',
1107 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001115want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001116if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001117 libopenssl = dependency('openssl',
1118 version : '>= 1.1.0',
1119 required : want_openssl == 'true')
1120 have = libopenssl.found()
1121else
1122 have = false
1123 libopenssl = []
1124endif
1125conf.set10('HAVE_OPENSSL', have)
1126
Lennart Poettering839fddb2019-11-05 11:49:27 +01001127want_p11kit = get_option('p11kit')
1128if want_p11kit != 'false' and not skip_deps
1129 libp11kit = dependency('p11-kit-1',
1130 version : '>= 0.23.3',
1131 required : want_p11kit == 'true')
1132 have = libp11kit.found()
1133else
1134 have = false
1135 libp11kit = []
1136endif
1137conf.set10('HAVE_P11KIT', have)
1138
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001140if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 libdw = dependency('libdw',
1142 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149
1150want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001151if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libz = dependency('zlib',
1153 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160
1161want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001162if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libbzip2 = cc.find_library('bz2',
1164 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171
1172want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001173if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001174 libxz = dependency('liblzma',
1175 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182
1183want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001184if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001186 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001189else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001195want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001196if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001197 libxkbcommon = dependency('xkbcommon',
1198 version : '>= 0.3.0',
1199 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001201else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001203 libxkbcommon = []
1204endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001206
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001207want_pcre2 = get_option('pcre2')
1208if want_pcre2 != 'false'
1209 libpcre2 = dependency('libpcre2-8',
1210 required : want_pcre2 == 'true')
1211 have = libpcre2.found()
1212else
1213 have = false
1214 libpcre2 = []
1215endif
1216conf.set10('HAVE_PCRE2', have)
1217
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001218want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001219if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 libglib = dependency('glib-2.0',
1221 version : '>= 2.22.0',
1222 required : want_glib == 'true')
1223 libgobject = dependency('gobject-2.0',
1224 version : '>= 2.22.0',
1225 required : want_glib == 'true')
1226 libgio = dependency('gio-2.0',
1227 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001228 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001229else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001231 libglib = []
1232 libgobject = []
1233 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001236
1237want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001238if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001239 libdbus = dependency('dbus-1',
1240 version : '>= 1.3.2',
1241 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001243else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001248
Yu Watanabe42303dc2017-06-18 05:22:32 +09001249default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001250if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001251 default_dnssec = 'no'
1252endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001253if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001254 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1255 default_dnssec = 'no'
1256endif
1257conf.set('DEFAULT_DNSSEC_MODE',
1258 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1259substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1260
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001261dns_over_tls = get_option('dns-over-tls')
1262if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001263 if dns_over_tls == 'openssl'
1264 have_gnutls = false
1265 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001266 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001267 if dns_over_tls == 'gnutls' and not have_gnutls
1268 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1269 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001270 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001271 if dns_over_tls == 'gnutls' or have_gnutls
1272 have_openssl = false
1273 else
1274 have_openssl = conf.get('HAVE_OPENSSL') == 1
1275 if dns_over_tls != 'auto' and not have_openssl
1276 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001277 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001278 endif
1279 endif
1280 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001282 have = false
1283 have_gnutls = false
1284 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285endif
1286conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001287conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1288conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001289
Iwan Timmerc9299be2018-06-13 20:26:24 +02001290default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001291if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001292 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001293endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001294if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001295 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 +02001296 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001297endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001298conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1299 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1300substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001301
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001302want_repart = get_option('repart')
1303if want_repart != 'false'
1304 have = (conf.get('HAVE_OPENSSL') == 1 and
1305 conf.get('HAVE_LIBFDISK') == 1)
1306 if want_repart == 'true' and not have
1307 error('repart support was requested, but dependencies are not available')
1308 endif
1309else
1310 have = false
1311endif
1312conf.set10('ENABLE_REPART', have)
1313
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001315if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001316 have = (conf.get('HAVE_LIBCURL') == 1 and
1317 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318 conf.get('HAVE_XZ') == 1 and
1319 conf.get('HAVE_GCRYPT') == 1)
1320 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 error('importd support was requested, but dependencies are not available')
1322 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323else
1324 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001326conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327
Lennart Poettering70a5db52019-07-04 18:35:39 +02001328want_homed = get_option('homed')
1329if want_homed != 'false'
1330 have = (conf.get('HAVE_OPENSSL') == 1 and
1331 conf.get('HAVE_LIBFDISK') == 1 and
1332 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1333 if want_homed == 'true' and not have
1334 error('homed support was requested, but dependencies are not available')
1335 endif
1336else
1337 have = false
1338endif
1339conf.set10('ENABLE_HOMED', have)
1340
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001341have = have and conf.get('HAVE_PAM') == 1
1342conf.set10('ENABLE_PAM_HOME', have)
1343
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001345if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001346 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1347 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1349 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001350 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 # config should be installed when any of the programs are built.
1352 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1353 error('remote support was requested, but dependencies are not available')
1354 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001355 have = have_deps[0] or have_deps[1]
1356else
1357 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001359conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001361foreach term : ['utmp',
1362 'hibernate',
1363 'environment-d',
1364 'binfmt',
1365 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001366 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001367 'resolve',
1368 'logind',
1369 'hostnamed',
1370 'localed',
1371 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001372 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001373 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001374 'networkd',
1375 'timedated',
1376 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001377 'firstboot',
1378 'randomseed',
1379 'backlight',
1380 'vconsole',
1381 'quotacheck',
1382 'sysusers',
1383 'tmpfiles',
1384 'hwdb',
1385 'rfkill',
1386 'ldconfig',
1387 'efi',
1388 'tpm',
1389 'ima',
1390 'smack',
1391 'gshadow',
1392 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001393 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001394 'nss-systemd']
1395 have = get_option(term)
1396 name = 'ENABLE_' + term.underscorify().to_upper()
1397 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398endforeach
1399
Yu Watanabe08540a92018-07-18 09:25:57 +09001400foreach tuple : [['nss-mymachines', 'machined'],
1401 ['nss-resolve', 'resolve']]
1402 want = get_option(tuple[0])
1403 if want != 'false'
1404 have = get_option(tuple[1])
1405 if want == 'true' and not have
1406 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1407 endif
1408 else
1409 have = false
1410 endif
1411 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1412 conf.set10(name, have)
1413endforeach
1414
1415enable_nss = false
1416foreach term : ['ENABLE_NSS_MYHOSTNAME',
1417 'ENABLE_NSS_MYMACHINES',
1418 'ENABLE_NSS_RESOLVE',
1419 'ENABLE_NSS_SYSTEMD']
1420 if conf.get(term) == 1
1421 enable_nss = true
1422 endif
1423endforeach
1424conf.set10('ENABLE_NSS', enable_nss)
1425
Yu Watanabe348b4432018-05-07 18:17:35 +09001426conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001427
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001428tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001429fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001430
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001431conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433#####################################################################
1434
1435if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001436 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001437
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001438 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001439 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001440 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001441 elif efi_arch == 'x86_64'
1442 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001443 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 elif efi_arch == 'arm'
1445 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001446 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 elif efi_arch == 'aarch64'
1448 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001449 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 else
1451 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001452 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001453 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001455 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001457
Yu Watanabeac093402018-05-10 16:04:16 +09001458 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001459else
1460 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001462conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
1464#####################################################################
1465
1466config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 output : 'config.h',
1468 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469
Yu Watanabe348b4432018-05-07 18:17:35 +09001470meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1471
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001473 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474 'src/shared',
1475 'src/systemd',
1476 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001477 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001478 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479 'src/resolve',
1480 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001481 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482 'src/login',
1483 'src/udev',
1484 'src/libudev',
1485 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001486 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487 'src/libsystemd/sd-bus',
1488 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001489 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490 'src/libsystemd/sd-hwdb',
1491 'src/libsystemd/sd-id128',
1492 'src/libsystemd/sd-netlink',
1493 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001494 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001496 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
1498add_project_arguments('-include', 'config.h', language : 'c')
1499
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001500generate_gperfs = find_program('tools/generate-gperfs.py')
1501
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502subdir('po')
1503subdir('catalog')
1504subdir('src/systemd')
1505subdir('src/basic')
1506subdir('src/libsystemd')
1507subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510
1511libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 'journal-core',
1513 libjournal_core_sources,
1514 journald_gperf_c,
1515 include_directories : includes,
1516 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517
Davide Cavalca1485aac2019-02-27 11:19:07 -05001518libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001521 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001522 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 include_directories : includes,
1524 link_args : ['-shared',
1525 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001526 link_with : [libbasic,
1527 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001528 link_whole : [libsystemd_static,
1529 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 dependencies : [threads,
1531 librt,
1532 libxz,
1533 liblz4],
1534 link_depends : libsystemd_sym,
1535 install : true,
1536 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537
Davide Cavalca70848ec2018-04-09 02:43:35 -07001538static_libsystemd = get_option('static-libsystemd')
1539static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1540
1541install_libsystemd_static = static_library(
1542 'systemd',
1543 libsystemd_sources,
1544 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001545 basic_sources,
1546 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001547 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001548 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001549 build_by_default : static_libsystemd != 'false',
1550 install : static_libsystemd != 'false',
1551 install_dir : rootlibdir,
1552 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1553 dependencies : [threads,
1554 librt,
1555 libxz,
1556 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001557 libcap,
1558 libblkid,
1559 libmount,
1560 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001561 libgcrypt],
1562 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1563
Mario Limonciellob61d7772019-09-09 22:49:35 +01001564#Generate autosuspend rules
1565make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1566
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001567############################################################
1568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001569# binaries that have --help and are intended for use by humans,
1570# usually, but not always, installed in /bin.
1571public_programs = []
1572
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573subdir('src/libudev')
1574subdir('src/shared')
1575subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001576subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577subdir('src/udev')
1578subdir('src/network')
1579
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001580subdir('src/analyze')
1581subdir('src/journal-remote')
1582subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001583subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001584subdir('src/hostname')
1585subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001586subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001587subdir('src/kernel-install')
1588subdir('src/locale')
1589subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001590subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001591subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001592subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001593subdir('src/nspawn')
1594subdir('src/resolve')
1595subdir('src/timedate')
1596subdir('src/timesync')
1597subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001598subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001599
1600subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001601subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001602subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001603subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001604
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001605############################################################
1606
1607# only static linking apart from libdl, to make sure that the
1608# module is linked to all libraries that it uses.
1609test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 'test-dlopen',
1611 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001612 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 include_directories : includes,
1614 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001615 dependencies : [libdl],
1616 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001617
Yu Watanabe08540a92018-07-18 09:25:57 +09001618foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001619 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001620 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1621 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001623 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 if condition
1625 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001626
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001628 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001629
Lennart Poettering1684c562019-07-04 18:31:11 +02001630 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1631 if tuple.length() > 2
1632 sources += tuple[2].split()
1633 endif
1634
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 nss = shared_library(
1636 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001637 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001638 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 version : '2',
1640 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001641 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1642 link_args : ['-Wl,-z,nodelete',
1643 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001644 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001645 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001646 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 libbasic],
1648 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001649 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 link_depends : sym,
1651 install : true,
1652 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001653
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 # We cannot use shared_module because it does not support version suffix.
1655 # Unfortunately shared_library insists on creating the symlink…
1656 meson.add_install_script('sh', '-c',
1657 'rm $DESTDIR@0@/libnss_@1@.so'
1658 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001659
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001660 if want_tests != 'false'
1661 test('dlopen-nss_' + module,
1662 test_dlopen,
1663 # path to dlopen must include a slash
1664 args : nss.full_path())
1665 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001667endforeach
1668
1669############################################################
1670
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001671executable('systemd',
1672 systemd_sources,
1673 include_directories : includes,
1674 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001675 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001676 dependencies : [versiondep,
1677 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001678 librt,
1679 libseccomp,
1680 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001681 libmount,
1682 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001683 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684 install : true,
1685 install_dir : rootlibexecdir)
1686
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001687meson.add_install_script(meson_make_symlink,
1688 join_paths(rootlibexecdir, 'systemd'),
1689 join_paths(rootsbindir, 'init'))
1690
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001691exe = executable('systemd-analyze',
1692 systemd_analyze_sources,
1693 include_directories : includes,
1694 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001695 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001696 dependencies : [versiondep,
1697 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001698 librt,
1699 libseccomp,
1700 libselinux,
1701 libmount,
1702 libblkid],
1703 install_rpath : rootlibexecdir,
1704 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001705public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706
1707executable('systemd-journald',
1708 systemd_journald_sources,
1709 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001710 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001711 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712 dependencies : [threads,
1713 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001714 liblz4,
1715 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001716 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717 install : true,
1718 install_dir : rootlibexecdir)
1719
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001720exe = executable('systemd-cat',
1721 systemd_cat_sources,
1722 include_directories : includes,
1723 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001724 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 dependencies : [threads],
1726 install_rpath : rootlibexecdir,
1727 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001728public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730exe = executable('journalctl',
1731 journalctl_sources,
1732 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001733 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734 dependencies : [threads,
1735 libqrencode,
1736 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001737 liblz4,
1738 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001739 install_rpath : rootlibexecdir,
1740 install : true,
1741 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001742public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743
1744executable('systemd-getty-generator',
1745 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001746 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001747 link_with : [libshared],
1748 install_rpath : rootlibexecdir,
1749 install : true,
1750 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001751
1752executable('systemd-debug-generator',
1753 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001755 link_with : [libshared],
1756 install_rpath : rootlibexecdir,
1757 install : true,
1758 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001760executable('systemd-run-generator',
1761 'src/run-generator/run-generator.c',
1762 include_directories : includes,
1763 link_with : [libshared],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : systemgeneratordir)
1767
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768executable('systemd-fstab-generator',
1769 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001771 link_with : [libcore_shared,
1772 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001777if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 executable('30-systemd-environment-d-generator',
1779 'src/environment-d-generator/environment-d-generator.c',
1780 include_directories : includes,
1781 link_with : [libshared],
1782 install_rpath : rootlibexecdir,
1783 install : true,
1784 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001785
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 meson.add_install_script(meson_make_symlink,
1787 join_paths(sysconfdir, 'environment'),
1788 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789endif
1790
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001791if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 executable('systemd-hibernate-resume-generator',
1793 'src/hibernate-resume/hibernate-resume-generator.c',
1794 include_directories : includes,
1795 link_with : [libshared],
1796 install_rpath : rootlibexecdir,
1797 install : true,
1798 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001799
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 executable('systemd-hibernate-resume',
1801 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 include_directories : includes,
1803 link_with : [libshared],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-gpt-auto-generator',
1811 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001812 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001814 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 dependencies : libblkid,
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : systemgeneratordir)
1819
1820 exe = executable('systemd-dissect',
1821 'src/dissect/dissect.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001827 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828endif
1829
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001830if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 executable('systemd-resolved',
1832 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001833 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001834 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001835 libbasic_gcrypt,
1836 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001837 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001838 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 install : true,
1840 install_dir : rootlibexecdir)
1841
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001842 exe = executable('resolvectl',
1843 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001845 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001846 libbasic_gcrypt,
1847 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001849 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 libm,
1851 libidn],
1852 install_rpath : rootlibexecdir,
1853 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001854 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001855
1856 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001857 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001858 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001859
1860 meson.add_install_script(meson_make_symlink,
1861 join_paths(bindir, 'resolvectl'),
1862 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863endif
1864
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001865if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 executable('systemd-logind',
1867 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001868 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001870 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001871 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001873 install_rpath : rootlibexecdir,
1874 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 exe = executable('loginctl',
1878 loginctl_sources,
1879 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001880 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 dependencies : [threads,
1882 liblz4,
1883 libxz],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001887 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001888
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 exe = executable('systemd-inhibit',
1890 'src/login/inhibit.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001896 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001898 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001899 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 pam_systemd = shared_library(
1901 'pam_systemd',
1902 pam_systemd_c,
1903 name_prefix : '',
1904 include_directories : includes,
1905 link_args : ['-shared',
1906 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001907 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 libshared_static],
1909 dependencies : [threads,
1910 libpam,
1911 libpam_misc],
1912 link_depends : pam_systemd_sym,
1913 install : true,
1914 install_dir : pamlibdir)
1915
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001916 if want_tests != 'false'
1917 test('dlopen-pam_systemd',
1918 test_dlopen,
1919 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001920 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001921 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001923
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001924 executable('systemd-user-runtime-dir',
1925 user_runtime_dir_sources,
1926 include_directories : includes,
1927 link_with : [libshared],
1928 install_rpath : rootlibexecdir,
1929 install : true,
1930 install_dir : rootlibexecdir)
1931endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001932
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001933if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001934 executable('systemd-user-sessions',
1935 'src/user-sessions/user-sessions.c',
1936 include_directories : includes,
1937 link_with : [libshared],
1938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941endif
1942
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001943if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 exe = executable('bootctl',
1945 'src/boot/bootctl.c',
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [libblkid],
1949 install_rpath : rootlibexecdir,
1950 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001951 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001952
1953 executable('systemd-bless-boot',
1954 'src/boot/bless-boot.c',
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [libblkid],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001961
1962 executable('systemd-bless-boot-generator',
1963 'src/boot/bless-boot-generator.c',
1964 include_directories : includes,
1965 link_with : [libshared],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969endif
1970
Lennart Poetteringf876f532018-06-25 16:07:33 +02001971executable('systemd-boot-check-no-failures',
1972 'src/boot/boot-check-no-failures.c',
1973 include_directories : includes,
1974 link_with : [libshared],
1975 dependencies : [libblkid],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootlibexecdir)
1979
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001980exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1981 include_directories : includes,
1982 link_with : [libshared],
1983 dependencies : [threads],
1984 install_rpath : rootlibexecdir,
1985 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001986public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987
Felipe Satelerf3794362018-05-22 15:08:57 -04001988
1989if get_option('link-systemctl-shared')
1990 systemctl_link_with = [libshared]
1991else
1992 systemctl_link_with = [libsystemd_static,
1993 libshared_static,
1994 libjournal_client,
1995 libbasic_gcrypt]
1996endif
1997
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001998exe = executable('systemctl',
1999 'src/systemctl/systemctl.c',
2000 'src/systemctl/sysv-compat.h',
2001 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002002 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002003 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 dependencies : [threads,
2005 libcap,
2006 libselinux,
2007 libxz,
2008 liblz4],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002012public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013
Lennart Poettering61d05782018-04-16 21:41:40 +02002014if conf.get('ENABLE_PORTABLED') == 1
2015 executable('systemd-portabled',
2016 systemd_portabled_sources,
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [threads],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
2023
2024 exe = executable('portablectl', 'src/portable/portablectl.c',
2025 include_directories : includes,
2026 link_with : [libshared],
2027 dependencies : [threads],
2028 install_rpath : rootlibexecdir,
2029 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002030 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002031 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002032endif
2033
Lennart Poetteringd093b622019-07-04 18:33:30 +02002034if conf.get('ENABLE_USERDB') == 1
2035 executable('systemd-userwork',
2036 systemd_userwork_sources,
2037 include_directories : includes,
2038 link_with : [libshared],
2039 dependencies : [threads],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootlibexecdir)
2043
2044 executable('systemd-userdbd',
2045 systemd_userdbd_sources,
2046 include_directories : includes,
2047 link_with : [libshared],
2048 dependencies : [threads],
2049 install_rpath : rootlibexecdir,
2050 install : true,
2051 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002052
2053 executable('userdbctl',
2054 userdbctl_sources,
2055 include_directories : includes,
2056 link_with : [libshared],
2057 dependencies : [threads],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002061endif
2062
Lennart Poettering70a5db52019-07-04 18:35:39 +02002063if conf.get('ENABLE_HOMED') == 1
2064 executable('systemd-homework',
2065 systemd_homework_sources,
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [threads,
2069 libcryptsetup,
2070 libblkid,
2071 libcrypt,
2072 libopenssl,
2073 libfdisk,
2074 libp11kit],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootlibexecdir)
2078
2079 executable('systemd-homed',
2080 systemd_homed_sources,
2081 include_directories : includes,
2082 link_with : [libshared],
2083 dependencies : [threads,
2084 libcrypt,
2085 libopenssl,
2086 libpwquality],
2087 install_rpath : rootlibexecdir,
2088 install : true,
2089 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002090
2091 executable('homectl',
2092 homectl_sources,
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [threads,
2096 libcrypt,
2097 libopenssl,
2098 libp11kit,
2099 libpwquality],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002103
2104 if conf.get('HAVE_PAM') == 1
2105 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2106 pam_systemd = shared_library(
2107 'pam_systemd_home',
2108 pam_systemd_home_c,
2109 name_prefix : '',
2110 include_directories : includes,
2111 link_args : ['-shared',
2112 '-Wl,--version-script=' + version_script_arg],
2113 link_with : [libsystemd_static,
2114 libshared_static],
2115 dependencies : [threads,
2116 libpam,
2117 libpam_misc,
2118 libcrypt],
2119 link_depends : pam_systemd_home_sym,
2120 install : true,
2121 install_dir : pamlibdir)
2122 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002123endif
2124
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002125foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2126 meson.add_install_script(meson_make_symlink,
2127 join_paths(rootbindir, 'systemctl'),
2128 join_paths(rootsbindir, alias))
2129endforeach
2130
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002131if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002132 executable('systemd-backlight',
2133 'src/backlight/backlight.c',
2134 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002135 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 install_rpath : rootlibexecdir,
2137 install : true,
2138 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139endif
2140
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002141if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 executable('systemd-rfkill',
2143 'src/rfkill/rfkill.c',
2144 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002145 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149endif
2150
2151executable('systemd-system-update-generator',
2152 'src/system-update-generator/system-update-generator.c',
2153 include_directories : includes,
2154 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002155 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156 install : true,
2157 install_dir : systemgeneratordir)
2158
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002159if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002160 systemd_cryptsetup_sources = files('''
2161 src/cryptsetup/cryptsetup.c
2162 src/cryptsetup/cryptsetup-pkcs11.h
2163'''.split())
2164
2165 if conf.get('HAVE_P11KIT') == 1
2166 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2167 endif
2168
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002170 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002171 include_directories : includes,
2172 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002173 dependencies : [libcryptsetup,
2174 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 executable('systemd-cryptsetup-generator',
2180 'src/cryptsetup/cryptsetup-generator.c',
2181 include_directories : includes,
2182 link_with : [libshared],
2183 dependencies : [libcryptsetup],
2184 install_rpath : rootlibexecdir,
2185 install : true,
2186 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002188 executable('systemd-veritysetup',
2189 'src/veritysetup/veritysetup.c',
2190 include_directories : includes,
2191 link_with : [libshared],
2192 dependencies : [libcryptsetup],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002197 executable('systemd-veritysetup-generator',
2198 'src/veritysetup/veritysetup-generator.c',
2199 include_directories : includes,
2200 link_with : [libshared],
2201 dependencies : [libcryptsetup],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205endif
2206
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002207if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002208 executable('systemd-sysv-generator',
2209 'src/sysv-generator/sysv-generator.c',
2210 include_directories : includes,
2211 link_with : [libshared],
2212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002216 executable('systemd-rc-local-generator',
2217 'src/rc-local-generator/rc-local-generator.c',
2218 include_directories : includes,
2219 link_with : [libshared],
2220 install_rpath : rootlibexecdir,
2221 install : true,
2222 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223endif
2224
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002225if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 executable('systemd-hostnamed',
2227 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002229 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 install : true,
2232 install_dir : rootlibexecdir)
2233
2234 exe = executable('hostnamectl',
2235 'src/hostname/hostnamectl.c',
2236 include_directories : includes,
2237 link_with : [libshared],
2238 install_rpath : rootlibexecdir,
2239 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002240 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241endif
2242
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002243if conf.get('ENABLE_LOCALED') == 1
2244 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 # logind will load libxkbcommon.so dynamically on its own
2246 deps = [libdl]
2247 else
2248 deps = []
2249 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002250
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002251 executable('systemd-localed',
2252 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002253 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 install : true,
2258 install_dir : rootlibexecdir)
2259
2260 exe = executable('localectl',
2261 localectl_sources,
2262 include_directories : includes,
2263 link_with : [libshared],
2264 install_rpath : rootlibexecdir,
2265 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002266 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267endif
2268
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002269if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002270 executable('systemd-timedated',
2271 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002273 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002274 install_rpath : rootlibexecdir,
2275 install : true,
2276 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002277endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278
Yu Watanabe6129ec82018-05-03 18:07:43 +09002279if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002280 exe = executable('timedatectl',
2281 'src/timedate/timedatectl.c',
2282 include_directories : includes,
2283 install_rpath : rootlibexecdir,
2284 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002285 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002286 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002287 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288endif
2289
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002290if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002291 if get_option('link-timesyncd-shared')
2292 timesyncd_link_with = [libshared]
2293 else
2294 timesyncd_link_with = [libsystemd_static,
2295 libshared_static,
2296 libjournal_client,
2297 libbasic_gcrypt]
2298 endif
2299
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 executable('systemd-timesyncd',
2301 systemd_timesyncd_sources,
2302 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002303 link_with : [timesyncd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304 dependencies : [threads,
2305 libm],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002309
2310 executable('systemd-time-wait-sync',
2311 'src/time-wait-sync/time-wait-sync.c',
2312 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002313 link_with : [timesyncd_link_with],
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002314 install_rpath : rootlibexecdir,
2315 install : true,
2316 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317endif
2318
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002319if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002320 executable('systemd-machined',
2321 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002322 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 link_with : [libmachine_core,
2324 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 install_rpath : rootlibexecdir,
2326 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 install_dir : rootlibexecdir)
2328
2329 exe = executable('machinectl',
2330 'src/machine/machinectl.c',
2331 include_directories : includes,
2332 link_with : [libshared],
2333 dependencies : [threads,
2334 libxz,
2335 liblz4],
2336 install_rpath : rootlibexecdir,
2337 install : true,
2338 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002339 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340endif
2341
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002342if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002343 executable('systemd-importd',
2344 systemd_importd_sources,
2345 include_directories : includes,
2346 link_with : [libshared],
2347 dependencies : [threads],
2348 install_rpath : rootlibexecdir,
2349 install : true,
2350 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002352 systemd_pull = executable('systemd-pull',
2353 systemd_pull_sources,
2354 include_directories : includes,
2355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002356 dependencies : [versiondep,
2357 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 libz,
2359 libbzip2,
2360 libxz,
2361 libgcrypt],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002366 systemd_import = executable('systemd-import',
2367 systemd_import_sources,
2368 include_directories : includes,
2369 link_with : [libshared],
2370 dependencies : [libcurl,
2371 libz,
2372 libbzip2,
2373 libxz],
2374 install_rpath : rootlibexecdir,
2375 install : true,
2376 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002378 systemd_import_fs = executable('systemd-import-fs',
2379 systemd_import_fs_sources,
2380 include_directories : includes,
2381 link_with : [libshared],
2382 install_rpath : rootlibexecdir,
2383 install : true,
2384 install_dir : rootlibexecdir)
2385
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002386 systemd_export = executable('systemd-export',
2387 systemd_export_sources,
2388 include_directories : includes,
2389 link_with : [libshared],
2390 dependencies : [libcurl,
2391 libz,
2392 libbzip2,
2393 libxz],
2394 install_rpath : rootlibexecdir,
2395 install : true,
2396 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002397
2398 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399endif
2400
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002401if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002402 exe = executable('systemd-journal-upload',
2403 systemd_journal_upload_sources,
2404 include_directories : includes,
2405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002406 dependencies : [versiondep,
2407 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 libcurl,
2409 libgnutls,
2410 libxz,
2411 liblz4],
2412 install_rpath : rootlibexecdir,
2413 install : true,
2414 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002415 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416endif
2417
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002418if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 s_j_remote = executable('systemd-journal-remote',
2420 systemd_journal_remote_sources,
2421 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002422 link_with : [libshared,
2423 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002424 dependencies : [threads,
2425 libmicrohttpd,
2426 libgnutls,
2427 libxz,
2428 liblz4],
2429 install_rpath : rootlibexecdir,
2430 install : true,
2431 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002433 s_j_gatewayd = executable('systemd-journal-gatewayd',
2434 systemd_journal_gatewayd_sources,
2435 include_directories : includes,
2436 link_with : [libshared],
2437 dependencies : [threads,
2438 libmicrohttpd,
2439 libgnutls,
2440 libxz,
2441 liblz4],
2442 install_rpath : rootlibexecdir,
2443 install : true,
2444 install_dir : rootlibexecdir)
2445 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446endif
2447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002448if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002449 executable('systemd-coredump',
2450 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002451 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002452 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002453 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 libacl,
2455 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456 libxz,
2457 liblz4],
2458 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002459 install : true,
2460 install_dir : rootlibexecdir)
2461
2462 exe = executable('coredumpctl',
2463 coredumpctl_sources,
2464 include_directories : includes,
2465 link_with : [libshared],
2466 dependencies : [threads,
2467 libxz,
2468 liblz4],
2469 install_rpath : rootlibexecdir,
2470 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002471 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472endif
2473
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002474if conf.get('ENABLE_PSTORE') == 1
2475 executable('systemd-pstore',
2476 systemd_pstore_sources,
2477 include_directories : includes,
2478 link_with : [libshared],
2479 dependencies : [threads,
2480 libacl,
2481 libdw,
2482 libxz,
2483 liblz4],
2484 install_rpath : rootlibexecdir,
2485 install : true,
2486 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002487endif
2488
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002489if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002490 exe = executable('systemd-binfmt',
2491 'src/binfmt/binfmt.c',
2492 include_directories : includes,
2493 link_with : [libshared],
2494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002497 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002498
2499 meson.add_install_script('sh', '-c',
2500 mkdir_p.format(binfmtdir))
2501 meson.add_install_script('sh', '-c',
2502 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2503endif
2504
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002505if conf.get('ENABLE_REPART') == 1
2506 executable('systemd-repart',
2507 systemd_repart_sources,
2508 include_directories : includes,
2509 link_with : [libshared],
2510 dependencies : [threads,
2511 libcryptsetup,
2512 libblkid,
2513 libfdisk,
2514 libopenssl],
2515 install_rpath : rootlibexecdir,
2516 install : true,
2517 install_dir : rootbindir)
2518endif
2519
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002520if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521 executable('systemd-vconsole-setup',
2522 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523 include_directories : includes,
2524 link_with : [libshared],
2525 install_rpath : rootlibexecdir,
2526 install : true,
2527 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002528endif
2529
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002530if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 executable('systemd-random-seed',
2532 'src/random-seed/random-seed.c',
2533 include_directories : includes,
2534 link_with : [libshared],
2535 install_rpath : rootlibexecdir,
2536 install : true,
2537 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002538endif
2539
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002540if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002541 executable('systemd-firstboot',
2542 'src/firstboot/firstboot.c',
2543 include_directories : includes,
2544 link_with : [libshared],
2545 dependencies : [libcrypt],
2546 install_rpath : rootlibexecdir,
2547 install : true,
2548 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549endif
2550
2551executable('systemd-remount-fs',
2552 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002554 link_with : [libcore_shared,
2555 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002556 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557 install : true,
2558 install_dir : rootlibexecdir)
2559
2560executable('systemd-machine-id-setup',
2561 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002563 link_with : [libcore_shared,
2564 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002565 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566 install : true,
2567 install_dir : rootbindir)
2568
2569executable('systemd-fsck',
2570 'src/fsck/fsck.c',
2571 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002572 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002573 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574 install : true,
2575 install_dir : rootlibexecdir)
2576
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002577executable('systemd-growfs',
2578 'src/partition/growfs.c',
2579 include_directories : includes,
2580 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002581 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002582 install_rpath : rootlibexecdir,
2583 install : true,
2584 install_dir : rootlibexecdir)
2585
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002586executable('systemd-makefs',
2587 'src/partition/makefs.c',
2588 include_directories : includes,
2589 link_with : [libshared],
2590 install_rpath : rootlibexecdir,
2591 install : true,
2592 install_dir : rootlibexecdir)
2593
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002594executable('systemd-sleep',
2595 'src/sleep/sleep.c',
2596 include_directories : includes,
2597 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002598 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599 install : true,
2600 install_dir : rootlibexecdir)
2601
Yu Watanabed25e1272019-01-03 02:32:57 +09002602install_data('src/sleep/sleep.conf',
2603 install_dir : pkgsysconfdir)
2604
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605exe = executable('systemd-sysctl',
2606 'src/sysctl/sysctl.c',
2607 include_directories : includes,
2608 link_with : [libshared],
2609 install_rpath : rootlibexecdir,
2610 install : true,
2611 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002612public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002613
2614executable('systemd-ac-power',
2615 'src/ac-power/ac-power.c',
2616 include_directories : includes,
2617 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002618 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002619 install : true,
2620 install_dir : rootlibexecdir)
2621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622exe = executable('systemd-detect-virt',
2623 'src/detect-virt/detect-virt.c',
2624 include_directories : includes,
2625 link_with : [libshared],
2626 install_rpath : rootlibexecdir,
2627 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002628public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002629
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002630exe = executable('systemd-delta',
2631 'src/delta/delta.c',
2632 include_directories : includes,
2633 link_with : [libshared],
2634 install_rpath : rootlibexecdir,
2635 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002636public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638exe = executable('systemd-escape',
2639 'src/escape/escape.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 +02002645public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647exe = executable('systemd-notify',
2648 'src/notify/notify.c',
2649 include_directories : includes,
2650 link_with : [libshared],
2651 install_rpath : rootlibexecdir,
2652 install : true,
2653 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002654public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655
2656executable('systemd-volatile-root',
2657 'src/volatile-root/volatile-root.c',
2658 include_directories : includes,
2659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002660 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661 install : true,
2662 install_dir : rootlibexecdir)
2663
2664executable('systemd-cgroups-agent',
2665 'src/cgroups-agent/cgroups-agent.c',
2666 include_directories : includes,
2667 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002668 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669 install : true,
2670 install_dir : rootlibexecdir)
2671
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002672exe = executable('systemd-id128',
2673 'src/id128/id128.c',
2674 include_directories : includes,
2675 link_with : [libshared],
2676 install_rpath : rootlibexecdir,
2677 install : true)
2678public_programs += exe
2679
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002680exe = executable('systemd-path',
2681 'src/path/path.c',
2682 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-Szmek5a8b1642018-07-31 09:44:11 +02002686public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002688exe = executable('systemd-ask-password',
2689 'src/ask-password/ask-password.c',
2690 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002691 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002692 install_rpath : rootlibexecdir,
2693 install : true,
2694 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002695public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002696
2697executable('systemd-reply-password',
2698 'src/reply-password/reply-password.c',
2699 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002700 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002701 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702 install : true,
2703 install_dir : rootlibexecdir)
2704
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002705exe = executable('systemd-tty-ask-password-agent',
2706 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2707 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002708 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002709 install_rpath : rootlibexecdir,
2710 install : true,
2711 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002712public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002713
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002714exe = executable('systemd-cgls',
2715 'src/cgls/cgls.c',
2716 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002717 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002718 install_rpath : rootlibexecdir,
2719 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002720public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002721
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002722exe = executable('systemd-cgtop',
2723 'src/cgtop/cgtop.c',
2724 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002725 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002726 install_rpath : rootlibexecdir,
2727 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002728public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002729
2730executable('systemd-initctl',
2731 'src/initctl/initctl.c',
2732 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002733 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002734 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002735 install : true,
2736 install_dir : rootlibexecdir)
2737
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002738exe = executable('systemd-mount',
2739 'src/mount/mount-tool.c',
2740 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002741 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002742 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002743 install_rpath : rootlibexecdir,
2744 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002745public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002746
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002747meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002748 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002749
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002750exe = executable('systemd-run',
2751 'src/run/run.c',
2752 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002753 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002754 install_rpath : rootlibexecdir,
2755 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002756public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002757
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002758exe = executable('systemd-stdio-bridge',
2759 'src/stdio-bridge/stdio-bridge.c',
2760 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002761 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002762 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002763 install_rpath : rootlibexecdir,
2764 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002765public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002767exe = executable('busctl',
2768 'src/busctl/busctl.c',
2769 'src/busctl/busctl-introspect.c',
2770 'src/busctl/busctl-introspect.h',
2771 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002772 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002773 install_rpath : rootlibexecdir,
2774 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002775public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002776
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002777if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002778 exe = executable('systemd-sysusers',
2779 'src/sysusers/sysusers.c',
2780 include_directories : includes,
2781 link_with : [libshared],
2782 install_rpath : rootlibexecdir,
2783 install : true,
2784 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002785 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002786endif
2787
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002788if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002789 exe = executable('systemd-tmpfiles',
2790 'src/tmpfiles/tmpfiles.c',
2791 include_directories : includes,
2792 link_with : [libshared],
2793 dependencies : [libacl],
2794 install_rpath : rootlibexecdir,
2795 install : true,
2796 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002797 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002798
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002799 if want_tests != 'false'
2800 test('test-systemd-tmpfiles',
2801 test_systemd_tmpfiles_py,
2802 # https://github.com/mesonbuild/meson/issues/2681
2803 args : exe.full_path())
2804 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002805endif
2806
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002807if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 exe = executable('systemd-hwdb',
2809 'src/hwdb/hwdb.c',
2810 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2811 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002812 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002813 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 install : true,
2815 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002816 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817endif
2818
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002819if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 executable('systemd-quotacheck',
2821 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002822 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002823 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002824 install_rpath : rootlibexecdir,
2825 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002826 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002827endif
2828
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002829exe = executable('systemd-socket-proxyd',
2830 'src/socket-proxy/socket-proxyd.c',
2831 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002832 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002833 dependencies : [threads],
2834 install_rpath : rootlibexecdir,
2835 install : true,
2836 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002837public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002838
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002839exe = executable('systemd-udevd',
2840 systemd_udevd_sources,
2841 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002842 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002843 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002844 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002845 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002846 dependencies : [versiondep,
2847 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002848 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002849 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002850 libacl,
2851 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002852 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002853 install : true,
2854 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002855public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002856
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002857exe = executable('udevadm',
2858 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002859 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002860 include_directories : includes,
2861 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002862 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002863 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002864 dependencies : [versiondep,
2865 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002866 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002867 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002868 libacl,
2869 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002870 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002871 install : true,
2872 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002873public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002874
2875executable('systemd-shutdown',
2876 systemd_shutdown_sources,
2877 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002878 link_with : [libcore_shared,
2879 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002880 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002881 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002882 install : true,
2883 install_dir : rootlibexecdir)
2884
2885executable('systemd-update-done',
2886 'src/update-done/update-done.c',
2887 include_directories : includes,
2888 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002889 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002890 install : true,
2891 install_dir : rootlibexecdir)
2892
2893executable('systemd-update-utmp',
2894 'src/update-utmp/update-utmp.c',
2895 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002896 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002897 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002898 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002899 install : true,
2900 install_dir : rootlibexecdir)
2901
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002902if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002903 executable('systemd-modules-load',
2904 'src/modules-load/modules-load.c',
2905 include_directories : includes,
2906 link_with : [libshared],
2907 dependencies : [libkmod],
2908 install_rpath : rootlibexecdir,
2909 install : true,
2910 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002911
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002912 meson.add_install_script('sh', '-c',
2913 mkdir_p.format(modulesloaddir))
2914 meson.add_install_script('sh', '-c',
2915 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002916endif
2917
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002918exe = executable('systemd-nspawn',
2919 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002920 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002921 link_with : [libcore_shared,
2922 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002923 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002924 dependencies : [libblkid,
2925 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002926 install_rpath : rootlibexecdir,
2927 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002928public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002929
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002930if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002931 executable('systemd-networkd',
2932 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002933 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002934 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002935 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002936 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002937 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002938 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002939 install_rpath : rootlibexecdir,
2940 install : true,
2941 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002943 executable('systemd-networkd-wait-online',
2944 systemd_networkd_wait_online_sources,
2945 include_directories : includes,
2946 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002947 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002948 install_rpath : rootlibexecdir,
2949 install : true,
2950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002952 exe = executable('networkctl',
2953 networkctl_sources,
2954 include_directories : includes,
2955 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002956 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002957 install_rpath : rootlibexecdir,
2958 install : true,
2959 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002960 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002961
2962 executable('systemd-network-generator',
2963 network_generator_sources,
2964 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002965 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002966 install_rpath : rootlibexecdir,
2967 install : true,
2968 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002969endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002970
2971executable('systemd-sulogin-shell',
2972 ['src/sulogin-shell/sulogin-shell.c'],
2973 include_directories : includes,
2974 link_with : [libshared],
2975 install_rpath : rootlibexecdir,
2976 install : true,
2977 install_dir : rootlibexecdir)
2978
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002979############################################################
2980
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002981custom_target(
2982 'systemd-runtest.env',
2983 output : 'systemd-runtest.env',
2984 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002985 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002986 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002987 '} >@OUTPUT@'],
2988 build_by_default : true)
2989
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002990foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002991 sources = tuple[0]
2992 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2993 dependencies = tuple[2]
2994 condition = tuple.length() >= 4 ? tuple[3] : ''
2995 type = tuple.length() >= 5 ? tuple[4] : ''
2996 defs = tuple.length() >= 6 ? tuple[5] : []
2997 incs = tuple.length() >= 7 ? tuple[6] : includes
2998 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002999
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003000 name = sources[0].split('/')[-1].split('.')[0]
3001 if type.startswith('timeout=')
3002 timeout = type.split('=')[1].to_int()
3003 type = ''
3004 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003005
3006 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003007 exe = executable(
3008 name,
3009 sources,
3010 include_directories : incs,
3011 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003012 dependencies : [versiondep,
3013 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003014 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003015 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003017 install : install_tests,
3018 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003019
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003020 if type == 'manual'
3021 message('@0@ is a manual test'.format(name))
3022 elif type == 'unsafe' and want_tests != 'unsafe'
3023 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003024 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003025 test(name, exe,
3026 env : test_env,
3027 timeout : timeout)
3028 endif
3029 else
3030 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3031 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003032endforeach
3033
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003034exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003035 'test-libsystemd-sym',
3036 test_libsystemd_sym_c,
3037 include_directories : includes,
3038 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003039 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003040 install : install_tests,
3041 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003042if want_tests != 'false'
3043 test('test-libsystemd-sym', exe)
3044endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003045
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003046exe = executable(
3047 'test-libsystemd-static-sym',
3048 test_libsystemd_sym_c,
3049 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003050 link_with : [install_libsystemd_static],
3051 dependencies : [threads], # threads is already included in dependencies on the library,
3052 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003053 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003054 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003055 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003056if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003057 test('test-libsystemd-static-sym', exe)
3058endif
3059
3060exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003061 'test-libudev-sym',
3062 test_libudev_sym_c,
3063 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003064 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003065 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003066 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003067 install : install_tests,
3068 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003069if want_tests != 'false'
3070 test('test-libudev-sym', exe)
3071endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003072
3073exe = executable(
3074 'test-libudev-static-sym',
3075 test_libudev_sym_c,
3076 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003077 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003078 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003079 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003080 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003081 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003082if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003083 test('test-libudev-static-sym', exe)
3084endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003085
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003086############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003087
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003088fuzzer_exes = []
3089
Michael Olbrich59967402018-11-11 11:27:35 +01003090if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003091foreach tuple : fuzzers
3092 sources = tuple[0]
3093 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3094 dependencies = tuple[2]
3095 defs = tuple.length() >= 4 ? tuple[3] : []
3096 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003097 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003098
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +00003099 if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003100 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003101 elif want_libfuzzer
3102 if fuzzing_engine.found()
3103 dependencies += fuzzing_engine
3104 else
3105 link_args += ['-fsanitize=fuzzer']
3106 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003107 else
3108 sources += 'src/fuzz/fuzz-main.c'
3109 endif
3110
3111 name = sources[0].split('/')[-1].split('.')[0]
3112
3113 fuzzer_exes += executable(
3114 name,
3115 sources,
3116 include_directories : [incs, include_directories('src/fuzz')],
3117 link_with : link_with,
3118 dependencies : dependencies,
3119 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003120 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003121 install : false)
3122endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003123endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003124
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003125run_target('fuzzers',
3126 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003127 command : ['true'])
3128
3129############################################################
3130
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003131make_directive_index_py = find_program('tools/make-directive-index.py')
3132make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003133xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003134hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003135autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003136
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003137subdir('sysctl.d')
3138subdir('sysusers.d')
3139subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003140subdir('hwdb.d')
3141subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003142subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003143subdir('network')
3144subdir('man')
3145subdir('shell-completion/bash')
3146subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003147subdir('docs/sysvinit')
3148subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003150install_subdir('factory/etc',
3151 install_dir : factorydir)
3152
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003153install_data('xorg/50-systemd-user.sh',
3154 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003155install_data('modprobe.d/systemd.conf',
3156 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003157install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003158 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003159 'NEWS',
3160 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303161 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003162 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003163 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003164 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003165 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003166 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003167 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003168 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3169 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003170
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003171meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3172meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3173
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003174############################################################
3175
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003176meson_check_help = find_program('tools/meson-check-help.sh')
3177
3178foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003179 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003180 if want_tests != 'false'
3181 test('check-help-' + name,
3182 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003183 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003184 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003185endforeach
3186
3187############################################################
3188
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003189check_directives_sh = find_program('tools/check-directives.sh')
3190
3191if want_tests != 'false'
3192 test('check-directives',
3193 check_directives_sh,
3194 args : project_source_root)
3195endif
3196
3197############################################################
3198
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003199# Enable tests for all supported sanitizers
3200foreach tuple : sanitizers
3201 sanitizer = tuple[0]
3202 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003203
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003204 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003205 prev = ''
3206 foreach p : fuzz_regression_tests
3207 b = p.split('/')[-2]
3208 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003209
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003210 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003211
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003212 if name != prev
3213 if want_tests == 'false'
3214 message('Not compiling @0@ because tests is set to false'.format(name))
3215 elif slow_tests
3216 exe = custom_target(
3217 name,
3218 output : name,
3219 depends : build,
3220 command : [env, 'ln', '-fs',
3221 join_paths(build.full_path(), b),
3222 '@OUTPUT@'],
3223 build_by_default : true)
3224 else
3225 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3226 endif
3227 endif
3228 prev = name
3229
3230 if want_tests != 'false' and slow_tests
3231 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3232 env,
3233 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003234 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003235 endif
3236 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003237 endif
3238endforeach
3239
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003240
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003241############################################################
3242
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003243if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003244 all_files = run_command(
3245 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003246 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003247 'ls-files',
3248 ':/*.[ch]'])
3249 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003250
userwithuide85a6902017-08-09 13:41:44 +00003251 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003252 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003253 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003254 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003255 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003256 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003257 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003258endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003259
3260if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003261 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003262 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003263 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003264 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003265endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003266
3267if git.found()
3268 git_head = run_command(
3269 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003270 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003271 'rev-parse', 'HEAD']).stdout().strip()
3272 git_head_short = run_command(
3273 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003274 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003275 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3276
3277 run_target(
3278 'git-snapshot',
3279 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003280 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003281 git_head_short),
3282 '--prefix', 'systemd-@0@/'.format(git_head),
3283 'HEAD'])
3284endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003285
3286############################################################
3287
Lennart Poettering51b13862017-12-20 12:51:14 +01003288meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3289run_target(
3290 'check-api-docs',
3291 depends : [man, libsystemd, libudev],
3292 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3293
3294############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003295watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003296
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003297status = [
3298 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3299
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003300 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003301 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003302 'prefix directory: @0@'.format(prefixdir),
3303 'rootprefix directory: @0@'.format(rootprefixdir),
3304 'sysconf directory: @0@'.format(sysconfdir),
3305 'include directory: @0@'.format(includedir),
3306 'lib directory: @0@'.format(libdir),
3307 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003308 'SysV init scripts: @0@'.format(sysvinit_path),
3309 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003310 'PAM modules directory: @0@'.format(pamlibdir),
3311 'PAM configuration directory: @0@'.format(pamconfdir),
3312 'RPM macros directory: @0@'.format(rpmmacrosdir),
3313 'modprobe.d directory: @0@'.format(modprobedir),
3314 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3315 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3316 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3317 'bash completions directory: @0@'.format(bashcompletiondir),
3318 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003319 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003320 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3321 get_option('debug-tty')),
3322 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003323 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003324 'maximum system UID: @0@'.format(system_uid_max),
3325 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003326 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3327 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3328 'minimum container UID base: @0@'.format(container_uid_base_min),
3329 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003330 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003331 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003332 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003333 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003334 'nobody user name: @0@'.format(nobody_user),
3335 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003336 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003337 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003338
3339 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003340 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003341 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003342 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003343 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003344 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003345 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003346 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003347
3348alt_dns_servers = '\n '.join(dns_servers.split(' '))
3349alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3350status += [
3351 'default DNS servers: @0@'.format(alt_dns_servers),
3352 'default NTP servers: @0@'.format(alt_ntp_servers)]
3353
3354alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3355 '@@0@'.format(time_epoch)).stdout().strip()
3356status += [
3357 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3358
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003359status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003360 'static libsystemd: @0@'.format(static_libsystemd),
3361 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003362
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003363# TODO:
3364# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3365# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3366# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003368if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003369 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003370
3371 if have_gnu_efi
3372 status += [
3373 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003374 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003375 'EFI lds: @0@'.format(efi_lds),
3376 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003377 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003378 endif
3379endif
3380
3381found = []
3382missing = []
3383
3384foreach tuple : [
3385 ['libcryptsetup'],
3386 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003387 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003388 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003389 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003390 ['AUDIT'],
3391 ['IMA'],
3392 ['AppArmor'],
3393 ['SELinux'],
3394 ['SECCOMP'],
3395 ['SMACK'],
3396 ['zlib'],
3397 ['xz'],
3398 ['lz4'],
3399 ['bzip2'],
3400 ['ACL'],
3401 ['gcrypt'],
3402 ['qrencode'],
3403 ['microhttpd'],
3404 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003405 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003406 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003407 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003408 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003409 ['libidn'],
3410 ['libiptc'],
3411 ['elfutils'],
3412 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003413 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003414 ['vconsole'],
3415 ['quotacheck'],
3416 ['tmpfiles'],
3417 ['environment.d'],
3418 ['sysusers'],
3419 ['firstboot'],
3420 ['randomseed'],
3421 ['backlight'],
3422 ['rfkill'],
3423 ['logind'],
3424 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003425 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003426 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003427 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003428 ['importd'],
3429 ['hostnamed'],
3430 ['timedated'],
3431 ['timesyncd'],
3432 ['localed'],
3433 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003434 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003435 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3436 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003438 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003439 ['polkit'],
3440 ['legacy pkla', install_polkit_pkla],
3441 ['efi'],
3442 ['gnu-efi', have_gnu_efi],
3443 ['kmod'],
3444 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003445 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003446 ['blkid'],
3447 ['dbus'],
3448 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003449 ['nss-myhostname'],
3450 ['nss-mymachines'],
3451 ['nss-resolve'],
3452 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003453 ['hwdb'],
3454 ['tpm'],
3455 ['man pages', want_man],
3456 ['html pages', want_html],
3457 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003458 ['SysV compat'],
3459 ['utmp'],
3460 ['ldconfig'],
3461 ['hibernate'],
3462 ['adm group', get_option('adm-group')],
3463 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003464 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003465 ['debug hashmap'],
3466 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003467 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003468 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003469 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003470 ['link-udev-shared', get_option('link-udev-shared')],
3471 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003472 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003473 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003474]
3475
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003476 if tuple.length() >= 2
3477 cond = tuple[1]
3478 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003479 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3480 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003481 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003482 endif
3483 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003484 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003485 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003486 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003487 endif
3488endforeach
3489
3490status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003491 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003492 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003493 '',
3494 'disabled features: @0@'.format(', '.join(missing)),
3495 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003496message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003497
3498if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003499 warning('\n' +
3500 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3501 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3502 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003503endif