blob: fc216d22da24a9d88f6cb92e2305c6c3de6c3899 [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 Vereshchagin87ac55a2019-05-05 19:28:42 +000042want_fuzzbuzz = get_option('fuzzbuzz')
43if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
44 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020045endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000046
47skip_deps = want_ossfuzz or want_libfuzzer
48fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020049
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040050#####################################################################
51
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050053git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040054if git_hook.returncode() == 0
55 message(git_hook.stdout().strip())
56endif
57
58#####################################################################
59
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010060if get_option('split-usr') == 'auto'
61 split_usr = run_command('test', '-L', '/bin').returncode() != 0
62else
63 split_usr = get_option('split-usr') == 'true'
64endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010065conf.set10('HAVE_SPLIT_USR', split_usr,
66 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010068if get_option('split-bin') == 'auto'
69 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
70else
71 split_bin = get_option('split-bin') == 'true'
72endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010073conf.set10('HAVE_SPLIT_BIN', split_bin,
74 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010075
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010076rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010077# Unusual rootprefixdir values are used by some distros
78# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010079rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010080if rootprefixdir == ''
81 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010082endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010083rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040084
85sysvinit_path = get_option('sysvinit-path')
86sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090087conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020088 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040089
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020090conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
91conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010092conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020093
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010094# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095# encountered, so this should canonicalize various paths when they are
96# absolute or relative.
97prefixdir = get_option('prefix')
98if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040099 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100endif
101bindir = join_paths(prefixdir, get_option('bindir'))
102libdir = join_paths(prefixdir, get_option('libdir'))
103sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
104includedir = join_paths(prefixdir, get_option('includedir'))
105datadir = join_paths(prefixdir, get_option('datadir'))
106localstatedir = join_paths('/', get_option('localstatedir'))
107
108rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100109rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
111
112rootlibdir = get_option('rootlibdir')
113if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400114 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400115endif
116
117# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200118pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
119pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400120polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
121polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
122polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400123xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900124rpmmacrosdir = get_option('rpmmacrosdir')
125if rpmmacrosdir != 'no'
126 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
127endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200128modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400129
130# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400131pkgdatadir = join_paths(datadir, 'systemd')
132environmentdir = join_paths(prefixdir, 'lib/environment.d')
133pkgsysconfdir = join_paths(sysconfdir, 'systemd')
134userunitdir = join_paths(prefixdir, 'lib/systemd/user')
135userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
136tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
137sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
138sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
139binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
140modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
141networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
142pkgincludedir = join_paths(includedir, 'systemd')
143systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
144usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
145systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
146userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
147systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
148systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
149systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
150systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
151udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400152udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
153udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
154catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
155kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
156factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400157bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
158testsdir = join_paths(prefixdir, 'lib/systemd/tests')
159systemdstatedir = join_paths(localstatedir, 'lib/systemd')
160catalogstatedir = join_paths(systemdstatedir, 'catalog')
161randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200162profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200163ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164
tblume75aaade2018-02-01 22:46:15 +0100165docdir = get_option('docdir')
166if docdir == ''
167 docdir = join_paths(datadir, 'doc/systemd')
168endif
169
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170dbuspolicydir = get_option('dbuspolicydir')
171if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175dbussessionservicedir = get_option('dbussessionservicedir')
176if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400177 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178endif
179
180dbussystemservicedir = get_option('dbussystemservicedir')
181if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400182 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183endif
184
185pamlibdir = get_option('pamlibdir')
186if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400187 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400188endif
189
190pamconfdir = get_option('pamconfdir')
191if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400192 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193endif
194
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100195memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200196status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100197
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
201conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
202conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400203conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100204
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100205conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100206
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400208conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
209conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
211conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
212conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
213conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100214conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100215conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
217conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
218conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
219conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
220conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100221conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400222conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
224conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
226conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
227conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
228conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
229conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
230conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
232conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700233conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700234conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400236conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237conf.set_quoted('LIBDIR', libdir)
238conf.set_quoted('ROOTLIBDIR', rootlibdir)
239conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
240conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400241conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
242conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200243conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400244conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
245conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
246conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
247conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200248conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200249conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200250conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100251conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200252conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100255substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100256substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400257substs.set('exec_prefix', prefixdir)
258substs.set('libdir', libdir)
259substs.set('rootlibdir', rootlibdir)
260substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100261substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400262substs.set('bindir', bindir)
263substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400264substs.set('rootlibexecdir', rootlibexecdir)
265substs.set('systemunitdir', systemunitdir)
266substs.set('userunitdir', userunitdir)
267substs.set('systempresetdir', systempresetdir)
268substs.set('userpresetdir', userpresetdir)
269substs.set('udevhwdbdir', udevhwdbdir)
270substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400271substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200272substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400273substs.set('catalogdir', catalogdir)
274substs.set('tmpfilesdir', tmpfilesdir)
275substs.set('sysusersdir', sysusersdir)
276substs.set('sysctldir', sysctldir)
277substs.set('binfmtdir', binfmtdir)
278substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200279substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400280substs.set('systemgeneratordir', systemgeneratordir)
281substs.set('usergeneratordir', usergeneratordir)
282substs.set('systemenvgeneratordir', systemenvgeneratordir)
283substs.set('userenvgeneratordir', userenvgeneratordir)
284substs.set('systemshutdowndir', systemshutdowndir)
285substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400286substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400287substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400288substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
289substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
290substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100291substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200292substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200293substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200294substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400295
296#####################################################################
297
298cc = meson.get_compiler('c')
299pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400300check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100301meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400302
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200303want_tests = get_option('tests')
304slow_tests = want_tests != 'false' and get_option('slow-tests')
305install_tests = get_option('install-tests')
306
James Hilliard46e63a22018-12-27 09:16:20 +0800307if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200308 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100309 cxx = meson.get_compiler('cpp')
310 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200311else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200312 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400313endif
314
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500315if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200316 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
317 if fuzzing_engine.found()
318 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
319 elif cc.has_argument('-fsanitize=fuzzer-no-link')
320 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
321 else
322 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
323 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200324elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500325 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000326elif want_fuzzbuzz
327 fuzzing_engine = meson.get_compiler('cpp').find_library(get_option('fuzzbuzz-engine'), dirs: get_option('fuzzbuzz-engine-dir'))
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500328endif
329
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100330# Those generate many false positives, and we do not want to change the code to
331# avoid them.
332basic_disabled_warnings = [
333 '-Wno-unused-parameter',
334 '-Wno-missing-field-initializers',
335 '-Wno-unused-result',
336 '-Wno-format-signedness',
337]
338if get_option('b_ndebug') == 'true'
339 # With asserts disabled with get a bunch of warnings about variables which
340 # are used only in the asserts. This is not useful at all, so let's just silence
341 # those warnings.
342 basic_disabled_warnings += [
343 '-Wno-unused-variable',
344 '-Wno-unused-but-set-variable',
345 ]
346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900349 '-Werror=undef',
350 '-Wlogical-op',
351 '-Wmissing-include-dirs',
352 '-Wold-style-definition',
353 '-Wpointer-arith',
354 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900355 '-Wfloat-equal',
356 '-Wsuggest-attribute=noreturn',
357 '-Werror=missing-prototypes',
358 '-Werror=implicit-function-declaration',
359 '-Werror=missing-declarations',
360 '-Werror=return-type',
361 '-Werror=incompatible-pointer-types',
362 '-Werror=format=2',
363 '-Wstrict-prototypes',
364 '-Wredundant-decls',
365 '-Wmissing-noreturn',
366 '-Wimplicit-fallthrough=5',
367 '-Wshadow',
368 '-Wendif-labels',
369 '-Wstrict-aliasing=2',
370 '-Wwrite-strings',
371 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200372 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200373 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900374 '-Wdate-time',
375 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700376
377 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100378 '-Wno-error=#warnings', # clang
379 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700380
381 # work-around for gcc 7.1 turning this on on its own.
382 '-Wno-error=nonnull',
383
384 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
385 # optimizations enabled, producing essentially false positives.
386 '-Wno-maybe-uninitialized',
387
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900388 '-ffast-math',
389 '-fno-common',
390 '-fdiagnostics-show-option',
391 '-fno-strict-aliasing',
392 '-fvisibility=hidden',
393 '-fstack-protector',
394 '-fstack-protector-strong',
395 '--param=ssp-buffer-size=4',
396]
397
398# --as-needed and --no-undefined are provided by meson by default,
399# run mesonconf to see what is enabled
400possible_link_flags = [
401 '-Wl,-z,relro',
402 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200403 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900404]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900406if cc.get_id() == 'clang'
407 possible_cc_flags += [
408 '-Wno-typedef-redefinition',
409 '-Wno-gnu-variable-sized-type-not-at-end',
410 ]
411endif
412
413if get_option('buildtype') != 'debug'
414 possible_cc_flags += [
415 '-ffunction-sections',
416 '-fdata-sections',
417 ]
418
419 possible_link_flags += '-Wl,--gc-sections'
420endif
421
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100422add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900423add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900424add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900425
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800426if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400427 #include <time.h>
428 #include <inttypes.h>
429 typedef uint64_t usec_t;
430 usec_t now(clockid_t clock);
431 int main(void) {
432 struct timespec now;
433 return 0;
434 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100435''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400436 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400437endif
438
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100439if cxx_cmd != ''
440 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
441endif
442
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200443cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400444
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200445has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
446
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447#####################################################################
448# compilation result tests
449
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400450conf.set('_GNU_SOURCE', true)
451conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200452conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
456conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
457conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
458
459decl_headers = '''
460#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100461#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463
464foreach decl : ['char16_t',
465 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100466 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400468
469 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200470 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
471
472 if decl == 'struct statx'
473 if have
474 want_linux_stat_h = false
475 else
476 have = cc.sizeof(decl,
477 prefix : decl_headers + '#include <linux/stat.h>',
478 args : '-D_GNU_SOURCE') > 0
479 want_linux_stat_h = have
480 endif
481 endif
482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200483 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484endforeach
485
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200486conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700487
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200489 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490endforeach
491
492foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100494 ['gettid', '''#include <sys/types.h>
495 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100496 ['pivot_root', '''#include <stdlib.h>
497 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 #include <sys/stat.h>
500 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100502 ['renameat2', '''#include <stdio.h>
503 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 ['kcmp', '''#include <linux/kcmp.h>'''],
505 ['keyctl', '''#include <sys/types.h>
506 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200509 ['bpf', '''#include <sys/syscall.h>
510 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100511 ['statx', '''#include <sys/types.h>
512 #include <sys/stat.h>
513 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100514 ['explicit_bzero' , '''#include <string.h>'''],
515 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100516 ['set_mempolicy', '''#include <stdlib.h>
517 #include <unistd.h>'''],
518 ['get_mempolicy', '''#include <stdlib.h>
519 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200520 ['pidfd_send_signal', '''#include <stdlib.h>
521 #include <unistd.h>
522 #include <signal.h>
523 #include <sys/wait.h>'''],
524 ['pidfd_open', '''#include <stdlib.h>
525 #include <unistd.h>
526 #include <signal.h>
527 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100528 ['rt_sigqueueinfo', '''#include <stdlib.h>
529 #include <unistd.h>
530 #include <signal.h>
531 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400532]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200535 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536endforeach
537
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541else
542 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200543 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200544 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400545endif
546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547#####################################################################
548
Davide Cavalca1485aac2019-02-27 11:19:07 -0500549vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
550 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100551 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100552 meson.project_version()]
553
Louis Taylord1084aa2019-01-21 21:45:36 +0000554version_h = vcs_tag(
555 input : 'src/version/version.h.in',
556 output : 'version.h',
557 command: vcs_tagger)
558
559versiondep = declare_dependency(sources: version_h)
560
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400563m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400565git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100566env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100567perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568
Davide Cavalca1485aac2019-02-27 11:19:07 -0500569meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400570mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400571test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
572splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400573
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
575# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500576progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578 ['kmod', '/usr/bin/kmod' ],
579 ['kexec', '/usr/sbin/kexec' ],
580 ['sulogin', '/usr/sbin/sulogin' ],
581 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
582 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
583 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
584 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200585 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586 ]
587foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588 path = get_option(prog[0] + '-path')
589 if path != ''
590 message('Using @1@ for @0@'.format(prog[0], path))
591 else
592 exe = find_program(prog[0],
593 '/usr/sbin/' + prog[0],
594 '/sbin/' + prog[0],
595 required: false)
596 path = exe.found() ? exe.path() : prog[1]
597 endif
598 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
599 conf.set_quoted(name, path)
600 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endforeach
602
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500603conf.set_quoted('TELINIT', get_option('telinit-path'))
604
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400605if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100606 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400607endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608
609############################################################
610
611gperf = find_program('gperf')
612
613gperf_test_format = '''
614#include <string.h>
615const char * in_word_set(const char *, @0@);
616@1@
617'''
618gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
619gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
620gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
621if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
625 if cc.compiles(gperf_test)
626 gperf_len_type = 'unsigned'
627 else
628 error('unable to determine gperf len type')
629 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632conf.set('GPERF_LEN_TYPE', gperf_len_type,
633 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635############################################################
636
637if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100640foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641 'linux/memfd.h',
642 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200643 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644 'valgrind/memcheck.h',
645 'valgrind/valgrind.h',
646 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200648 conf.set10('HAVE_' + header.underscorify().to_upper(),
649 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650endforeach
651
652############################################################
653
654conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400655conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
656gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657
658default_hierarchy = get_option('default-hierarchy')
659conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
660 description : 'default cgroup hierarchy as string')
661if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
668
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100669default_net_naming_scheme = get_option('default-net-naming-scheme')
670conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
671
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900673if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400674 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900675 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677conf.set('TIME_EPOCH', time_epoch)
678
679system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900680if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400681 system_uid_max = run_command(
682 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800683 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
684 '/etc/login.defs').stdout().strip()
685 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900686 system_uid_max = 999
687 else
688 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800689 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691conf.set('SYSTEM_UID_MAX', system_uid_max)
692substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900695if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 system_gid_max = run_command(
697 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800698 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
699 '/etc/login.defs').stdout().strip()
700 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900701 system_gid_max = 999
702 else
703 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800704 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706conf.set('SYSTEM_GID_MAX', system_gid_max)
707substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708
Yu Watanabeac093402018-05-10 16:04:16 +0900709dynamic_uid_min = get_option('dynamic-uid-min')
710dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100711conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
712conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
713substs.set('dynamicuidmin', dynamic_uid_min)
714substs.set('dynamicuidmax', dynamic_uid_max)
715
Yu Watanabeac093402018-05-10 16:04:16 +0900716container_uid_base_min = get_option('container-uid-base-min')
717container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100718conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
719conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
720substs.set('containeruidbasemin', container_uid_base_min)
721substs.set('containeruidbasemax', container_uid_base_max)
722
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723nobody_user = get_option('nobody-user')
724nobody_group = get_option('nobody-group')
725
Chen Qi2484bff2018-07-23 14:53:09 +0800726if not meson.is_cross_build()
727 getent_result = run_command('getent', 'passwd', '65534')
728 if getent_result.returncode() == 0
729 name = getent_result.stdout().split(':')[0]
730 if name != nobody_user
731 warning('\n' +
732 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
733 'Your build will result in an user table setup that is incompatible with the local system.')
734 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100735 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800736 id_result = run_command('id', '-u', nobody_user)
737 if id_result.returncode() == 0
738 id = id_result.stdout().to_int()
739 if id != 65534
740 warning('\n' +
741 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
742 'Your build will result in an user table setup that is incompatible with the local system.')
743 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100745
Chen Qi2484bff2018-07-23 14:53:09 +0800746 getent_result = run_command('getent', 'group', '65534')
747 if getent_result.returncode() == 0
748 name = getent_result.stdout().split(':')[0]
749 if name != nobody_group
750 warning('\n' +
751 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
752 'Your build will result in an group table setup that is incompatible with the local system.')
753 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100754 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800755 id_result = run_command('id', '-g', nobody_group)
756 if id_result.returncode() == 0
757 id = id_result.stdout().to_int()
758 if id != 65534
759 warning('\n' +
760 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
761 'Your build will result in an group table setup that is incompatible with the local system.')
762 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100763 endif
764endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900765if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900766 warning('\n' +
767 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
768 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900769endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770
771conf.set_quoted('NOBODY_USER_NAME', nobody_user)
772conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900773substs.set('NOBODY_USER_NAME', nobody_user)
774substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100775
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400776tty_gid = get_option('tty-gid')
777conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400778substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
Ikey Doherty84786b82017-12-03 12:28:23 +0000780# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900781users_gid = get_option('users-gid')
782substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000783
Yu Watanabe348b4432018-05-07 18:17:35 +0900784conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
785conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Michael Bieblace5e312018-07-13 23:36:13 +0200787dev_kvm_mode = get_option('dev-kvm-mode')
788substs.set('DEV_KVM_MODE', dev_kvm_mode)
789conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100790group_render_mode = get_option('group-render-mode')
791substs.set('GROUP_RENDER_MODE', group_render_mode)
792conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400794kill_user_processes = get_option('default-kill-user-processes')
795conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100796conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400797substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400799dns_servers = get_option('dns-servers')
800conf.set_quoted('DNS_SERVERS', dns_servers)
801substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400803ntp_servers = get_option('ntp-servers')
804conf.set_quoted('NTP_SERVERS', ntp_servers)
805substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806
Dave Reisner8ca9e922018-12-28 07:38:36 -0500807default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900808if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800809 if not meson.is_cross_build()
810 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
811 default_locale = run_command(choose_default_locale_sh).stdout().strip()
812 else
813 default_locale = 'C.UTF-8'
814 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900815endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500816conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
819
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200820service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700821watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
822substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200823
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400824substs.set('SUSHELL', get_option('debug-shell'))
825substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200826conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828enable_debug_hashmap = false
829enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900830enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200831foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900832 if name == 'hashmap'
833 enable_debug_hashmap = true
834 elif name == 'mmap-cache'
835 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900836 elif name == 'siphash'
837 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900838 else
839 message('unknown debug option "@0@", ignoring'.format(name))
840 endif
841endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
843conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900844conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400845
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200846conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200847conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200848
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100849default_user_path = get_option('user-path')
850if default_user_path != ''
851 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100852 default_user_path_display = default_user_path
853else
854 # meson 0.49 fails when ?: is used in .format()
855 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100856endif
857
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100858
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859#####################################################################
860
861threads = dependency('threads')
862librt = cc.find_library('rt')
863libm = cc.find_library('m')
864libdl = cc.find_library('dl')
865libcrypt = cc.find_library('crypt')
866
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400867libcap = dependency('libcap', required : false)
868if not libcap.found()
869 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
870 libcap = cc.find_library('cap')
871endif
872
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100874 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100876want_libfdisk = get_option('fdisk')
877if want_libfdisk != 'false' and not skip_deps
878 libfdisk = dependency('fdisk',
879 required : want_libfdisk == 'true')
880 have = libfdisk.found()
881else
882 have = false
883 libfdisk = []
884endif
885conf.set10('HAVE_LIBFDISK', have)
886
Lennart Poettering70a5db52019-07-04 18:35:39 +0200887want_pwquality = get_option('pwquality')
888if want_pwquality != 'false' and not skip_deps
889 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
890 have = libpwquality.found()
891else
892 have = false
893 libpwquality = []
894endif
895conf.set10('HAVE_PWQUALITY', have)
896
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000898if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400900 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000910if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libselinux = dependency('libselinux',
912 version : '>= 2.1.9',
913 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000922if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libapparmor = dependency('libapparmor',
924 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932smack_run_label = get_option('smack-run-label')
933if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935endif
936
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400937want_polkit = get_option('polkit')
938install_polkit = false
939install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000940if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400942
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libpolkit = dependency('polkit-gobject-1',
944 required : false)
945 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
946 message('Old polkit detected, will install pkla files')
947 install_polkit_pkla = true
948 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400951
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000953if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400958 libacl = []
959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400961
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000963if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000973if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981
982want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000983if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libkmod = dependency('libkmod',
985 version : '>= 15',
986 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400990 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993
994want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000995if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libpam = cc.find_library('pam', required : want_pam == 'true')
997 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libpam = []
1002 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005
1006want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001007if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libmicrohttpd = dependency('libmicrohttpd',
1009 version : '>= 0.9.33',
1010 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017
1018want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001019if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001021 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001024
1025 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1026 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001034if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libcurl = dependency('libcurl',
1036 version : '>= 7.32.0',
1037 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044
1045want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001046want_libidn2 = get_option('libidn2')
1047if want_libidn == 'true' and want_libidn2 == 'true'
1048 error('libidn and libidn2 cannot be requested simultaneously')
1049endif
1050
Yu Watanabe1b931392019-06-29 03:13:30 +09001051if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001052 libidn = dependency('libidn2',
1053 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libidn.found()
1055else
1056 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001057 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001060if not have and want_libidn != 'false' and not skip_deps
1061 # libidn is used for both libidn and libidn2 objects
1062 libidn = dependency('libidn',
1063 required : want_libidn == 'true')
1064 have = libidn.found()
1065else
1066 have = false
1067endif
1068conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
1070want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001071if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libiptc = dependency('libiptc',
1073 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001082if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libqrencode = dependency('libqrencode',
1084 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001093if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1095 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = false
1099endif
1100if not have
1101 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102 libgcrypt = []
1103 libgpg_error = []
1104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001108if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libgnutls = dependency('gnutls',
1110 version : '>= 3.1.4',
1111 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001119want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001120if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001121 libopenssl = dependency('openssl',
1122 version : '>= 1.1.0',
1123 required : want_openssl == 'true')
1124 have = libopenssl.found()
1125else
1126 have = false
1127 libopenssl = []
1128endif
1129conf.set10('HAVE_OPENSSL', have)
1130
Lennart Poettering839fddb2019-11-05 11:49:27 +01001131want_p11kit = get_option('p11kit')
1132if want_p11kit != 'false' and not skip_deps
1133 libp11kit = dependency('p11-kit-1',
1134 version : '>= 0.23.3',
1135 required : want_p11kit == 'true')
1136 have = libp11kit.found()
1137else
1138 have = false
1139 libp11kit = []
1140endif
1141conf.set10('HAVE_P11KIT', have)
1142
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001143want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001144if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libdw = dependency('libdw',
1146 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153
1154want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001155if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libz = dependency('zlib',
1157 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164
1165want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001166if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libbzip2 = cc.find_library('bz2',
1168 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175
1176want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001177if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 libxz = dependency('liblzma',
1179 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186
1187want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001188if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001190 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001193else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001198
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001199want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001200if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001201 libxkbcommon = dependency('xkbcommon',
1202 version : '>= 0.3.0',
1203 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001205else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001207 libxkbcommon = []
1208endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001210
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001211want_pcre2 = get_option('pcre2')
1212if want_pcre2 != 'false'
1213 libpcre2 = dependency('libpcre2-8',
1214 required : want_pcre2 == 'true')
1215 have = libpcre2.found()
1216else
1217 have = false
1218 libpcre2 = []
1219endif
1220conf.set10('HAVE_PCRE2', have)
1221
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001222want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001223if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 libglib = dependency('glib-2.0',
1225 version : '>= 2.22.0',
1226 required : want_glib == 'true')
1227 libgobject = dependency('gobject-2.0',
1228 version : '>= 2.22.0',
1229 required : want_glib == 'true')
1230 libgio = dependency('gio-2.0',
1231 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001232 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 libglib = []
1236 libgobject = []
1237 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240
1241want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001242if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 libdbus = dependency('dbus-1',
1244 version : '>= 1.3.2',
1245 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001247else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001248 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001250endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001252
Yu Watanabe42303dc2017-06-18 05:22:32 +09001253default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001254if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001255 default_dnssec = 'no'
1256endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001257if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001258 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1259 default_dnssec = 'no'
1260endif
1261conf.set('DEFAULT_DNSSEC_MODE',
1262 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1263substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1264
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001265dns_over_tls = get_option('dns-over-tls')
1266if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001267 if dns_over_tls == 'openssl'
1268 have_gnutls = false
1269 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001270 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001271 if dns_over_tls == 'gnutls' and not have_gnutls
1272 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1273 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001274 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001275 if dns_over_tls == 'gnutls' or have_gnutls
1276 have_openssl = false
1277 else
1278 have_openssl = conf.get('HAVE_OPENSSL') == 1
1279 if dns_over_tls != 'auto' and not have_openssl
1280 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001281 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001282 endif
1283 endif
1284 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001286 have = false
1287 have_gnutls = false
1288 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001289endif
1290conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001291conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1292conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001293
Iwan Timmerc9299be2018-06-13 20:26:24 +02001294default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001295if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001296 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001297endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001298if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001299 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 +02001300 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001301endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001302conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1303 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1304substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001305
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001306want_repart = get_option('repart')
1307if want_repart != 'false'
1308 have = (conf.get('HAVE_OPENSSL') == 1 and
1309 conf.get('HAVE_LIBFDISK') == 1)
1310 if want_repart == 'true' and not have
1311 error('repart support was requested, but dependencies are not available')
1312 endif
1313else
1314 have = false
1315endif
1316conf.set10('ENABLE_REPART', have)
1317
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001318want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001319if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001320 have = (conf.get('HAVE_LIBCURL') == 1 and
1321 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322 conf.get('HAVE_XZ') == 1 and
1323 conf.get('HAVE_GCRYPT') == 1)
1324 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001325 error('importd support was requested, but dependencies are not available')
1326 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001327else
1328 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001329endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001330conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331
Lennart Poettering70a5db52019-07-04 18:35:39 +02001332want_homed = get_option('homed')
1333if want_homed != 'false'
1334 have = (conf.get('HAVE_OPENSSL') == 1 and
1335 conf.get('HAVE_LIBFDISK') == 1 and
1336 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1337 if want_homed == 'true' and not have
1338 error('homed support was requested, but dependencies are not available')
1339 endif
1340else
1341 have = false
1342endif
1343conf.set10('ENABLE_HOMED', have)
1344
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001345have = have and conf.get('HAVE_PAM') == 1
1346conf.set10('ENABLE_PAM_HOME', have)
1347
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001349if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001350 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1351 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001352 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1353 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001354 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 # config should be installed when any of the programs are built.
1356 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1357 error('remote support was requested, but dependencies are not available')
1358 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001359 have = have_deps[0] or have_deps[1]
1360else
1361 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001363conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001365foreach term : ['utmp',
1366 'hibernate',
1367 'environment-d',
1368 'binfmt',
1369 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001370 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001371 'resolve',
1372 'logind',
1373 'hostnamed',
1374 'localed',
1375 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001376 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001377 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001378 'networkd',
1379 'timedated',
1380 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001381 'firstboot',
1382 'randomseed',
1383 'backlight',
1384 'vconsole',
1385 'quotacheck',
1386 'sysusers',
1387 'tmpfiles',
1388 'hwdb',
1389 'rfkill',
1390 'ldconfig',
1391 'efi',
1392 'tpm',
1393 'ima',
1394 'smack',
1395 'gshadow',
1396 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001397 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001398 'nss-systemd']
1399 have = get_option(term)
1400 name = 'ENABLE_' + term.underscorify().to_upper()
1401 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402endforeach
1403
Yu Watanabe08540a92018-07-18 09:25:57 +09001404foreach tuple : [['nss-mymachines', 'machined'],
1405 ['nss-resolve', 'resolve']]
1406 want = get_option(tuple[0])
1407 if want != 'false'
1408 have = get_option(tuple[1])
1409 if want == 'true' and not have
1410 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1411 endif
1412 else
1413 have = false
1414 endif
1415 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1416 conf.set10(name, have)
1417endforeach
1418
1419enable_nss = false
1420foreach term : ['ENABLE_NSS_MYHOSTNAME',
1421 'ENABLE_NSS_MYMACHINES',
1422 'ENABLE_NSS_RESOLVE',
1423 'ENABLE_NSS_SYSTEMD']
1424 if conf.get(term) == 1
1425 enable_nss = true
1426 endif
1427endforeach
1428conf.set10('ENABLE_NSS', enable_nss)
1429
Yu Watanabe348b4432018-05-07 18:17:35 +09001430conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001431
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001432tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001433fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001434
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001435conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001436
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437#####################################################################
1438
1439if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001440 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001441
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001442 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001443 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001444 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 elif efi_arch == 'x86_64'
1446 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001447 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001448 elif efi_arch == 'arm'
1449 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001450 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001451 elif efi_arch == 'aarch64'
1452 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001453 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001454 else
1455 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001456 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001459 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001460 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001461
Yu Watanabeac093402018-05-10 16:04:16 +09001462 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001463else
1464 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001466conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467
1468#####################################################################
1469
1470config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001471 output : 'config.h',
1472 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001473
Yu Watanabe348b4432018-05-07 18:17:35 +09001474meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001477 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478 'src/shared',
1479 'src/systemd',
1480 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001481 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001482 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483 'src/resolve',
1484 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001485 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486 'src/login',
1487 'src/udev',
1488 'src/libudev',
1489 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001490 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491 'src/libsystemd/sd-bus',
1492 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001493 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494 'src/libsystemd/sd-hwdb',
1495 'src/libsystemd/sd-id128',
1496 'src/libsystemd/sd-netlink',
1497 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001498 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001500 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501
1502add_project_arguments('-include', 'config.h', language : 'c')
1503
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001504generate_gperfs = find_program('tools/generate-gperfs.py')
1505
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506subdir('po')
1507subdir('catalog')
1508subdir('src/systemd')
1509subdir('src/basic')
1510subdir('src/libsystemd')
1511subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001513subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514
1515libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001516 'journal-core',
1517 libjournal_core_sources,
1518 journald_gperf_c,
1519 include_directories : includes,
1520 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521
Davide Cavalca1485aac2019-02-27 11:19:07 -05001522libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001525 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001526 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 include_directories : includes,
1528 link_args : ['-shared',
1529 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001530 link_with : [libbasic,
1531 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001532 link_whole : [libsystemd_static,
1533 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 dependencies : [threads,
1535 librt,
1536 libxz,
1537 liblz4],
1538 link_depends : libsystemd_sym,
1539 install : true,
1540 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541
Davide Cavalca70848ec2018-04-09 02:43:35 -07001542static_libsystemd = get_option('static-libsystemd')
1543static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1544
1545install_libsystemd_static = static_library(
1546 'systemd',
1547 libsystemd_sources,
1548 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001549 basic_sources,
1550 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001551 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001552 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001553 build_by_default : static_libsystemd != 'false',
1554 install : static_libsystemd != 'false',
1555 install_dir : rootlibdir,
1556 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1557 dependencies : [threads,
1558 librt,
1559 libxz,
1560 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001561 libcap,
1562 libblkid,
1563 libmount,
1564 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001565 libgcrypt],
1566 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1567
Mario Limonciellob61d7772019-09-09 22:49:35 +01001568#Generate autosuspend rules
1569make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1570
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571############################################################
1572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573# binaries that have --help and are intended for use by humans,
1574# usually, but not always, installed in /bin.
1575public_programs = []
1576
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577subdir('src/libudev')
1578subdir('src/shared')
1579subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001580subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001581subdir('src/udev')
1582subdir('src/network')
1583
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001584subdir('src/analyze')
1585subdir('src/journal-remote')
1586subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001587subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001588subdir('src/hostname')
1589subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001590subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001591subdir('src/kernel-install')
1592subdir('src/locale')
1593subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001594subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001595subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001596subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001597subdir('src/nspawn')
1598subdir('src/resolve')
1599subdir('src/timedate')
1600subdir('src/timesync')
1601subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001602subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001603
1604subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001605subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001606subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001607subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001608
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001609############################################################
1610
1611# only static linking apart from libdl, to make sure that the
1612# module is linked to all libraries that it uses.
1613test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 'test-dlopen',
1615 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001616 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001617 include_directories : includes,
1618 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001619 dependencies : [libdl],
1620 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001621
Yu Watanabe08540a92018-07-18 09:25:57 +09001622foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001623 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001624 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1625 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001626
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001627 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 if condition
1629 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001630
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001631 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001632 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001633
Lennart Poettering1684c562019-07-04 18:31:11 +02001634 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1635 if tuple.length() > 2
1636 sources += tuple[2].split()
1637 endif
1638
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 nss = shared_library(
1640 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001641 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001642 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 version : '2',
1644 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001645 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1646 link_args : ['-Wl,-z,nodelete',
1647 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001648 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001649 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001650 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 libbasic],
1652 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001653 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 link_depends : sym,
1655 install : true,
1656 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001657
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 # We cannot use shared_module because it does not support version suffix.
1659 # Unfortunately shared_library insists on creating the symlink…
1660 meson.add_install_script('sh', '-c',
1661 'rm $DESTDIR@0@/libnss_@1@.so'
1662 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001663
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001664 if want_tests != 'false'
1665 test('dlopen-nss_' + module,
1666 test_dlopen,
1667 # path to dlopen must include a slash
1668 args : nss.full_path())
1669 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001671endforeach
1672
1673############################################################
1674
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675executable('systemd',
1676 systemd_sources,
1677 include_directories : includes,
1678 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001679 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001680 dependencies : [versiondep,
1681 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001682 librt,
1683 libseccomp,
1684 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001685 libmount,
1686 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001687 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688 install : true,
1689 install_dir : rootlibexecdir)
1690
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001691meson.add_install_script(meson_make_symlink,
1692 join_paths(rootlibexecdir, 'systemd'),
1693 join_paths(rootsbindir, 'init'))
1694
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001695exe = executable('systemd-analyze',
1696 systemd_analyze_sources,
1697 include_directories : includes,
1698 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001699 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001700 dependencies : [versiondep,
1701 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001702 librt,
1703 libseccomp,
1704 libselinux,
1705 libmount,
1706 libblkid],
1707 install_rpath : rootlibexecdir,
1708 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001709public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
1711executable('systemd-journald',
1712 systemd_journald_sources,
1713 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001714 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001715 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716 dependencies : [threads,
1717 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001718 liblz4,
1719 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001720 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721 install : true,
1722 install_dir : rootlibexecdir)
1723
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724exe = executable('systemd-cat',
1725 systemd_cat_sources,
1726 include_directories : includes,
1727 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001728 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 dependencies : [threads],
1730 install_rpath : rootlibexecdir,
1731 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001732public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734exe = executable('journalctl',
1735 journalctl_sources,
1736 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001738 dependencies : [threads,
1739 libqrencode,
1740 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001741 liblz4,
1742 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001743 install_rpath : rootlibexecdir,
1744 install : true,
1745 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001746public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001747
1748executable('systemd-getty-generator',
1749 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001751 link_with : [libshared],
1752 install_rpath : rootlibexecdir,
1753 install : true,
1754 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755
1756executable('systemd-debug-generator',
1757 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001759 link_with : [libshared],
1760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001764executable('systemd-run-generator',
1765 'src/run-generator/run-generator.c',
1766 include_directories : includes,
1767 link_with : [libshared],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : systemgeneratordir)
1771
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772executable('systemd-fstab-generator',
1773 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001775 link_with : [libcore_shared,
1776 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001781if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 executable('30-systemd-environment-d-generator',
1783 'src/environment-d-generator/environment-d-generator.c',
1784 include_directories : includes,
1785 link_with : [libshared],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001789
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 meson.add_install_script(meson_make_symlink,
1791 join_paths(sysconfdir, 'environment'),
1792 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-hibernate-resume-generator',
1797 'src/hibernate-resume/hibernate-resume-generator.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 install_rpath : rootlibexecdir,
1801 install : true,
1802 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 executable('systemd-hibernate-resume',
1805 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001806 include_directories : includes,
1807 link_with : [libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811endif
1812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-gpt-auto-generator',
1815 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001816 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001818 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 dependencies : libblkid,
1820 install_rpath : rootlibexecdir,
1821 install : true,
1822 install_dir : systemgeneratordir)
1823
1824 exe = executable('systemd-dissect',
1825 'src/dissect/dissect.c',
1826 include_directories : includes,
1827 link_with : [libshared],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001831 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832endif
1833
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001834if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 executable('systemd-resolved',
1836 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001837 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001838 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001839 libbasic_gcrypt,
1840 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001841 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001842 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 install : true,
1844 install_dir : rootlibexecdir)
1845
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001846 exe = executable('resolvectl',
1847 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001849 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001850 libbasic_gcrypt,
1851 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001853 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 libm,
1855 libidn],
1856 install_rpath : rootlibexecdir,
1857 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001858 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001859
1860 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001861 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001862 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001863
1864 meson.add_install_script(meson_make_symlink,
1865 join_paths(bindir, 'resolvectl'),
1866 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867endif
1868
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001869if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 executable('systemd-logind',
1871 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001872 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001873 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001874 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001875 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001877 install_rpath : rootlibexecdir,
1878 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001880
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 exe = executable('loginctl',
1882 loginctl_sources,
1883 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001884 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 dependencies : [threads,
1886 liblz4,
1887 libxz],
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001891 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001892
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 exe = executable('systemd-inhibit',
1894 'src/login/inhibit.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001900 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001901
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001902 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001903 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001904 pam_systemd = shared_library(
1905 'pam_systemd',
1906 pam_systemd_c,
1907 name_prefix : '',
1908 include_directories : includes,
1909 link_args : ['-shared',
1910 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001911 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 libshared_static],
1913 dependencies : [threads,
1914 libpam,
1915 libpam_misc],
1916 link_depends : pam_systemd_sym,
1917 install : true,
1918 install_dir : pamlibdir)
1919
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001920 if want_tests != 'false'
1921 test('dlopen-pam_systemd',
1922 test_dlopen,
1923 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001924 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001925 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001926 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001928 executable('systemd-user-runtime-dir',
1929 user_runtime_dir_sources,
1930 include_directories : includes,
1931 link_with : [libshared],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
1935endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001936
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001937if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 executable('systemd-user-sessions',
1939 'src/user-sessions/user-sessions.c',
1940 include_directories : includes,
1941 link_with : [libshared],
1942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945endif
1946
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001947if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 exe = executable('bootctl',
1949 'src/boot/bootctl.c',
1950 include_directories : includes,
1951 link_with : [libshared],
1952 dependencies : [libblkid],
1953 install_rpath : rootlibexecdir,
1954 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001955 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001956
1957 executable('systemd-bless-boot',
1958 'src/boot/bless-boot.c',
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [libblkid],
1962 install_rpath : rootlibexecdir,
1963 install : true,
1964 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001965
1966 executable('systemd-bless-boot-generator',
1967 'src/boot/bless-boot-generator.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973endif
1974
Lennart Poetteringf876f532018-06-25 16:07:33 +02001975executable('systemd-boot-check-no-failures',
1976 'src/boot/boot-check-no-failures.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 dependencies : [libblkid],
1980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootlibexecdir)
1983
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001984exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 dependencies : [threads],
1988 install_rpath : rootlibexecdir,
1989 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001990public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991
Felipe Satelerf3794362018-05-22 15:08:57 -04001992
1993if get_option('link-systemctl-shared')
1994 systemctl_link_with = [libshared]
1995else
1996 systemctl_link_with = [libsystemd_static,
1997 libshared_static,
1998 libjournal_client,
1999 libbasic_gcrypt]
2000endif
2001
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01002002exe = executable('systemctl',
2003 'src/systemctl/systemctl.c',
2004 'src/systemctl/sysv-compat.h',
2005 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002006 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002007 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002008 dependencies : [threads,
2009 libcap,
2010 libselinux,
2011 libxz,
2012 liblz4],
2013 install_rpath : rootlibexecdir,
2014 install : true,
2015 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002016public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002017
Lennart Poettering61d05782018-04-16 21:41:40 +02002018if conf.get('ENABLE_PORTABLED') == 1
2019 executable('systemd-portabled',
2020 systemd_portabled_sources,
2021 include_directories : includes,
2022 link_with : [libshared],
2023 dependencies : [threads],
2024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : rootlibexecdir)
2027
2028 exe = executable('portablectl', 'src/portable/portablectl.c',
2029 include_directories : includes,
2030 link_with : [libshared],
2031 dependencies : [threads],
2032 install_rpath : rootlibexecdir,
2033 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002034 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002035 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002036endif
2037
Lennart Poetteringd093b622019-07-04 18:33:30 +02002038if conf.get('ENABLE_USERDB') == 1
2039 executable('systemd-userwork',
2040 systemd_userwork_sources,
2041 include_directories : includes,
2042 link_with : [libshared],
2043 dependencies : [threads],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
2047
2048 executable('systemd-userdbd',
2049 systemd_userdbd_sources,
2050 include_directories : includes,
2051 link_with : [libshared],
2052 dependencies : [threads],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002056
2057 executable('userdbctl',
2058 userdbctl_sources,
2059 include_directories : includes,
2060 link_with : [libshared],
2061 dependencies : [threads],
2062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002065endif
2066
Lennart Poettering70a5db52019-07-04 18:35:39 +02002067if conf.get('ENABLE_HOMED') == 1
2068 executable('systemd-homework',
2069 systemd_homework_sources,
2070 include_directories : includes,
2071 link_with : [libshared],
2072 dependencies : [threads,
2073 libcryptsetup,
2074 libblkid,
2075 libcrypt,
2076 libopenssl,
2077 libfdisk,
2078 libp11kit],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootlibexecdir)
2082
2083 executable('systemd-homed',
2084 systemd_homed_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 dependencies : [threads,
2088 libcrypt,
2089 libopenssl,
2090 libpwquality],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002094
2095 executable('homectl',
2096 homectl_sources,
2097 include_directories : includes,
2098 link_with : [libshared],
2099 dependencies : [threads,
2100 libcrypt,
2101 libopenssl,
2102 libp11kit,
2103 libpwquality],
2104 install_rpath : rootlibexecdir,
2105 install : true,
2106 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002107
2108 if conf.get('HAVE_PAM') == 1
2109 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2110 pam_systemd = shared_library(
2111 'pam_systemd_home',
2112 pam_systemd_home_c,
2113 name_prefix : '',
2114 include_directories : includes,
2115 link_args : ['-shared',
2116 '-Wl,--version-script=' + version_script_arg],
2117 link_with : [libsystemd_static,
2118 libshared_static],
2119 dependencies : [threads,
2120 libpam,
2121 libpam_misc,
2122 libcrypt],
2123 link_depends : pam_systemd_home_sym,
2124 install : true,
2125 install_dir : pamlibdir)
2126 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002127endif
2128
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002129foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2130 meson.add_install_script(meson_make_symlink,
2131 join_paths(rootbindir, 'systemctl'),
2132 join_paths(rootsbindir, alias))
2133endforeach
2134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002135if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 executable('systemd-backlight',
2137 'src/backlight/backlight.c',
2138 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002139 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143endif
2144
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002145if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 executable('systemd-rfkill',
2147 'src/rfkill/rfkill.c',
2148 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002150 install_rpath : rootlibexecdir,
2151 install : true,
2152 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153endif
2154
2155executable('systemd-system-update-generator',
2156 'src/system-update-generator/system-update-generator.c',
2157 include_directories : includes,
2158 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002159 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160 install : true,
2161 install_dir : systemgeneratordir)
2162
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002163if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002164 systemd_cryptsetup_sources = files('''
2165 src/cryptsetup/cryptsetup.c
2166 src/cryptsetup/cryptsetup-pkcs11.h
2167'''.split())
2168
2169 if conf.get('HAVE_P11KIT') == 1
2170 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2171 endif
2172
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002173 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002174 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 include_directories : includes,
2176 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002177 dependencies : [libcryptsetup,
2178 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 executable('systemd-cryptsetup-generator',
2184 'src/cryptsetup/cryptsetup-generator.c',
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [libcryptsetup],
2188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 executable('systemd-veritysetup',
2193 'src/veritysetup/veritysetup.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 dependencies : [libcryptsetup],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 executable('systemd-veritysetup-generator',
2202 'src/veritysetup/veritysetup-generator.c',
2203 include_directories : includes,
2204 link_with : [libshared],
2205 dependencies : [libcryptsetup],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209endif
2210
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002211if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002212 executable('systemd-sysv-generator',
2213 'src/sysv-generator/sysv-generator.c',
2214 include_directories : includes,
2215 link_with : [libshared],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220 executable('systemd-rc-local-generator',
2221 'src/rc-local-generator/rc-local-generator.c',
2222 include_directories : includes,
2223 link_with : [libshared],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227endif
2228
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002229if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 executable('systemd-hostnamed',
2231 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002233 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 install : true,
2236 install_dir : rootlibexecdir)
2237
2238 exe = executable('hostnamectl',
2239 'src/hostname/hostnamectl.c',
2240 include_directories : includes,
2241 link_with : [libshared],
2242 install_rpath : rootlibexecdir,
2243 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002244 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245endif
2246
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002247if conf.get('ENABLE_LOCALED') == 1
2248 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 # logind will load libxkbcommon.so dynamically on its own
2250 deps = [libdl]
2251 else
2252 deps = []
2253 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002254
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 executable('systemd-localed',
2256 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002257 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002258 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 install : true,
2262 install_dir : rootlibexecdir)
2263
2264 exe = executable('localectl',
2265 localectl_sources,
2266 include_directories : includes,
2267 link_with : [libshared],
2268 install_rpath : rootlibexecdir,
2269 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002270 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271endif
2272
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002273if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002274 executable('systemd-timedated',
2275 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002281endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002282
Yu Watanabe6129ec82018-05-03 18:07:43 +09002283if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 exe = executable('timedatectl',
2285 'src/timedate/timedatectl.c',
2286 include_directories : includes,
2287 install_rpath : rootlibexecdir,
2288 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002289 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002291 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292endif
2293
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002294if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002295 if get_option('link-timesyncd-shared')
2296 timesyncd_link_with = [libshared]
2297 else
2298 timesyncd_link_with = [libsystemd_static,
2299 libshared_static,
2300 libjournal_client,
2301 libbasic_gcrypt]
2302 endif
2303
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304 executable('systemd-timesyncd',
2305 systemd_timesyncd_sources,
2306 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002307 link_with : [timesyncd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 dependencies : [threads,
2309 libm],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002313
2314 executable('systemd-time-wait-sync',
2315 'src/time-wait-sync/time-wait-sync.c',
2316 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002317 link_with : [timesyncd_link_with],
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002318 install_rpath : rootlibexecdir,
2319 install : true,
2320 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 executable('systemd-machined',
2325 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002326 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 link_with : [libmachine_core,
2328 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 install_rpath : rootlibexecdir,
2330 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 install_dir : rootlibexecdir)
2332
2333 exe = executable('machinectl',
2334 'src/machine/machinectl.c',
2335 include_directories : includes,
2336 link_with : [libshared],
2337 dependencies : [threads,
2338 libxz,
2339 liblz4],
2340 install_rpath : rootlibexecdir,
2341 install : true,
2342 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002343 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344endif
2345
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002346if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002347 executable('systemd-importd',
2348 systemd_importd_sources,
2349 include_directories : includes,
2350 link_with : [libshared],
2351 dependencies : [threads],
2352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356 systemd_pull = executable('systemd-pull',
2357 systemd_pull_sources,
2358 include_directories : includes,
2359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002360 dependencies : [versiondep,
2361 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002362 libz,
2363 libbzip2,
2364 libxz,
2365 libgcrypt],
2366 install_rpath : rootlibexecdir,
2367 install : true,
2368 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002370 systemd_import = executable('systemd-import',
2371 systemd_import_sources,
2372 include_directories : includes,
2373 link_with : [libshared],
2374 dependencies : [libcurl,
2375 libz,
2376 libbzip2,
2377 libxz],
2378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002382 systemd_import_fs = executable('systemd-import-fs',
2383 systemd_import_fs_sources,
2384 include_directories : includes,
2385 link_with : [libshared],
2386 install_rpath : rootlibexecdir,
2387 install : true,
2388 install_dir : rootlibexecdir)
2389
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002390 systemd_export = executable('systemd-export',
2391 systemd_export_sources,
2392 include_directories : includes,
2393 link_with : [libshared],
2394 dependencies : [libcurl,
2395 libz,
2396 libbzip2,
2397 libxz],
2398 install_rpath : rootlibexecdir,
2399 install : true,
2400 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002401
2402 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403endif
2404
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002405if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002406 exe = executable('systemd-journal-upload',
2407 systemd_journal_upload_sources,
2408 include_directories : includes,
2409 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002410 dependencies : [versiondep,
2411 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412 libcurl,
2413 libgnutls,
2414 libxz,
2415 liblz4],
2416 install_rpath : rootlibexecdir,
2417 install : true,
2418 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002419 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420endif
2421
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002422if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002423 s_j_remote = executable('systemd-journal-remote',
2424 systemd_journal_remote_sources,
2425 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002426 link_with : [libshared,
2427 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002428 dependencies : [threads,
2429 libmicrohttpd,
2430 libgnutls,
2431 libxz,
2432 liblz4],
2433 install_rpath : rootlibexecdir,
2434 install : true,
2435 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002437 s_j_gatewayd = executable('systemd-journal-gatewayd',
2438 systemd_journal_gatewayd_sources,
2439 include_directories : includes,
2440 link_with : [libshared],
2441 dependencies : [threads,
2442 libmicrohttpd,
2443 libgnutls,
2444 libxz,
2445 liblz4],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootlibexecdir)
2449 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450endif
2451
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002452if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002453 executable('systemd-coredump',
2454 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002456 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458 libacl,
2459 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002460 libxz,
2461 liblz4],
2462 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 install : true,
2464 install_dir : rootlibexecdir)
2465
2466 exe = executable('coredumpctl',
2467 coredumpctl_sources,
2468 include_directories : includes,
2469 link_with : [libshared],
2470 dependencies : [threads,
2471 libxz,
2472 liblz4],
2473 install_rpath : rootlibexecdir,
2474 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476endif
2477
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002478if conf.get('ENABLE_PSTORE') == 1
2479 executable('systemd-pstore',
2480 systemd_pstore_sources,
2481 include_directories : includes,
2482 link_with : [libshared],
2483 dependencies : [threads,
2484 libacl,
2485 libdw,
2486 libxz,
2487 liblz4],
2488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002491endif
2492
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002493if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 exe = executable('systemd-binfmt',
2495 'src/binfmt/binfmt.c',
2496 include_directories : includes,
2497 link_with : [libshared],
2498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002502
2503 meson.add_install_script('sh', '-c',
2504 mkdir_p.format(binfmtdir))
2505 meson.add_install_script('sh', '-c',
2506 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2507endif
2508
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002509if conf.get('ENABLE_REPART') == 1
2510 executable('systemd-repart',
2511 systemd_repart_sources,
2512 include_directories : includes,
2513 link_with : [libshared],
2514 dependencies : [threads,
2515 libcryptsetup,
2516 libblkid,
2517 libfdisk,
2518 libopenssl],
2519 install_rpath : rootlibexecdir,
2520 install : true,
2521 install_dir : rootbindir)
2522endif
2523
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002524if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 executable('systemd-vconsole-setup',
2526 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527 include_directories : includes,
2528 link_with : [libshared],
2529 install_rpath : rootlibexecdir,
2530 install : true,
2531 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532endif
2533
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002534if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535 executable('systemd-random-seed',
2536 'src/random-seed/random-seed.c',
2537 include_directories : includes,
2538 link_with : [libshared],
2539 install_rpath : rootlibexecdir,
2540 install : true,
2541 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542endif
2543
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002544if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002545 executable('systemd-firstboot',
2546 'src/firstboot/firstboot.c',
2547 include_directories : includes,
2548 link_with : [libshared],
2549 dependencies : [libcrypt],
2550 install_rpath : rootlibexecdir,
2551 install : true,
2552 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553endif
2554
2555executable('systemd-remount-fs',
2556 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002558 link_with : [libcore_shared,
2559 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002560 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002561 install : true,
2562 install_dir : rootlibexecdir)
2563
2564executable('systemd-machine-id-setup',
2565 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002567 link_with : [libcore_shared,
2568 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002569 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570 install : true,
2571 install_dir : rootbindir)
2572
2573executable('systemd-fsck',
2574 'src/fsck/fsck.c',
2575 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002577 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578 install : true,
2579 install_dir : rootlibexecdir)
2580
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002581executable('systemd-growfs',
2582 'src/partition/growfs.c',
2583 include_directories : includes,
2584 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002585 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002586 install_rpath : rootlibexecdir,
2587 install : true,
2588 install_dir : rootlibexecdir)
2589
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002590executable('systemd-makefs',
2591 'src/partition/makefs.c',
2592 include_directories : includes,
2593 link_with : [libshared],
2594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootlibexecdir)
2597
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598executable('systemd-sleep',
2599 'src/sleep/sleep.c',
2600 include_directories : includes,
2601 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002602 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002603 install : true,
2604 install_dir : rootlibexecdir)
2605
Yu Watanabed25e1272019-01-03 02:32:57 +09002606install_data('src/sleep/sleep.conf',
2607 install_dir : pkgsysconfdir)
2608
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002609exe = executable('systemd-sysctl',
2610 'src/sysctl/sysctl.c',
2611 include_directories : includes,
2612 link_with : [libshared],
2613 install_rpath : rootlibexecdir,
2614 install : true,
2615 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617
2618executable('systemd-ac-power',
2619 'src/ac-power/ac-power.c',
2620 include_directories : includes,
2621 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002622 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002623 install : true,
2624 install_dir : rootlibexecdir)
2625
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626exe = executable('systemd-detect-virt',
2627 'src/detect-virt/detect-virt.c',
2628 include_directories : includes,
2629 link_with : [libshared],
2630 install_rpath : rootlibexecdir,
2631 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002632public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634exe = executable('systemd-delta',
2635 'src/delta/delta.c',
2636 include_directories : includes,
2637 link_with : [libshared],
2638 install_rpath : rootlibexecdir,
2639 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002640public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642exe = executable('systemd-escape',
2643 'src/escape/escape.c',
2644 include_directories : includes,
2645 link_with : [libshared],
2646 install_rpath : rootlibexecdir,
2647 install : true,
2648 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002649public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651exe = executable('systemd-notify',
2652 'src/notify/notify.c',
2653 include_directories : includes,
2654 link_with : [libshared],
2655 install_rpath : rootlibexecdir,
2656 install : true,
2657 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002658public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002659
2660executable('systemd-volatile-root',
2661 'src/volatile-root/volatile-root.c',
2662 include_directories : includes,
2663 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002664 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665 install : true,
2666 install_dir : rootlibexecdir)
2667
2668executable('systemd-cgroups-agent',
2669 'src/cgroups-agent/cgroups-agent.c',
2670 include_directories : includes,
2671 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002672 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002673 install : true,
2674 install_dir : rootlibexecdir)
2675
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002676exe = executable('systemd-id128',
2677 'src/id128/id128.c',
2678 include_directories : includes,
2679 link_with : [libshared],
2680 install_rpath : rootlibexecdir,
2681 install : true)
2682public_programs += exe
2683
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002684exe = executable('systemd-path',
2685 'src/path/path.c',
2686 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002687 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002688 install_rpath : rootlibexecdir,
2689 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002690public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002692exe = executable('systemd-ask-password',
2693 'src/ask-password/ask-password.c',
2694 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002695 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002696 install_rpath : rootlibexecdir,
2697 install : true,
2698 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002699public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002700
2701executable('systemd-reply-password',
2702 'src/reply-password/reply-password.c',
2703 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002704 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002705 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706 install : true,
2707 install_dir : rootlibexecdir)
2708
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002709exe = executable('systemd-tty-ask-password-agent',
2710 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002712 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002713 install_rpath : rootlibexecdir,
2714 install : true,
2715 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002716public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002717
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002718exe = executable('systemd-cgls',
2719 'src/cgls/cgls.c',
2720 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002721 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002722 install_rpath : rootlibexecdir,
2723 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002724public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002726exe = executable('systemd-cgtop',
2727 'src/cgtop/cgtop.c',
2728 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002729 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002730 install_rpath : rootlibexecdir,
2731 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002732public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002733
2734executable('systemd-initctl',
2735 'src/initctl/initctl.c',
2736 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002738 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739 install : true,
2740 install_dir : rootlibexecdir)
2741
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002742exe = executable('systemd-mount',
2743 'src/mount/mount-tool.c',
2744 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002745 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002746 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002747 install_rpath : rootlibexecdir,
2748 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002749public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002750
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002751meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002752 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002753
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002754exe = executable('systemd-run',
2755 'src/run/run.c',
2756 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002757 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002758 install_rpath : rootlibexecdir,
2759 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002760public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002761
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002762exe = executable('systemd-stdio-bridge',
2763 'src/stdio-bridge/stdio-bridge.c',
2764 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002765 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002766 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002767 install_rpath : rootlibexecdir,
2768 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002769public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002770
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002771exe = executable('busctl',
2772 'src/busctl/busctl.c',
2773 'src/busctl/busctl-introspect.c',
2774 'src/busctl/busctl-introspect.h',
2775 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002776 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002777 install_rpath : rootlibexecdir,
2778 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002779public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002781if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002782 exe = executable('systemd-sysusers',
2783 'src/sysusers/sysusers.c',
2784 include_directories : includes,
2785 link_with : [libshared],
2786 install_rpath : rootlibexecdir,
2787 install : true,
2788 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002789 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002790endif
2791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002792if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 exe = executable('systemd-tmpfiles',
2794 'src/tmpfiles/tmpfiles.c',
2795 include_directories : includes,
2796 link_with : [libshared],
2797 dependencies : [libacl],
2798 install_rpath : rootlibexecdir,
2799 install : true,
2800 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002801 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002802
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002803 if want_tests != 'false'
2804 test('test-systemd-tmpfiles',
2805 test_systemd_tmpfiles_py,
2806 # https://github.com/mesonbuild/meson/issues/2681
2807 args : exe.full_path())
2808 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002809endif
2810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002811if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 exe = executable('systemd-hwdb',
2813 'src/hwdb/hwdb.c',
2814 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2815 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002816 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002817 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002818 install : true,
2819 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002820 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002821endif
2822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002823if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002824 executable('systemd-quotacheck',
2825 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002826 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002827 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002828 install_rpath : rootlibexecdir,
2829 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002830 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831endif
2832
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002833exe = executable('systemd-socket-proxyd',
2834 'src/socket-proxy/socket-proxyd.c',
2835 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002836 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002837 dependencies : [threads],
2838 install_rpath : rootlibexecdir,
2839 install : true,
2840 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002841public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002842
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002843exe = executable('systemd-udevd',
2844 systemd_udevd_sources,
2845 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002846 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002847 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002848 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002849 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002850 dependencies : [versiondep,
2851 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002852 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002853 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002854 libacl,
2855 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002856 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002857 install : true,
2858 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002859public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002860
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002861exe = executable('udevadm',
2862 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002863 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002864 include_directories : includes,
2865 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002866 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002867 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002868 dependencies : [versiondep,
2869 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002870 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002871 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002872 libacl,
2873 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002874 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002875 install : true,
2876 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002877public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002878
2879executable('systemd-shutdown',
2880 systemd_shutdown_sources,
2881 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002882 link_with : [libcore_shared,
2883 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002884 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002885 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002886 install : true,
2887 install_dir : rootlibexecdir)
2888
2889executable('systemd-update-done',
2890 'src/update-done/update-done.c',
2891 include_directories : includes,
2892 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002893 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002894 install : true,
2895 install_dir : rootlibexecdir)
2896
2897executable('systemd-update-utmp',
2898 'src/update-utmp/update-utmp.c',
2899 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002900 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002901 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002902 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002903 install : true,
2904 install_dir : rootlibexecdir)
2905
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002906if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002907 executable('systemd-modules-load',
2908 'src/modules-load/modules-load.c',
2909 include_directories : includes,
2910 link_with : [libshared],
2911 dependencies : [libkmod],
2912 install_rpath : rootlibexecdir,
2913 install : true,
2914 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002915
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002916 meson.add_install_script('sh', '-c',
2917 mkdir_p.format(modulesloaddir))
2918 meson.add_install_script('sh', '-c',
2919 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002920endif
2921
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002922exe = executable('systemd-nspawn',
2923 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002924 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002925 link_with : [libcore_shared,
2926 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002927 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002928 dependencies : [libblkid,
2929 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002930 install_rpath : rootlibexecdir,
2931 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002932public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002933
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002934if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002935 executable('systemd-networkd',
2936 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002937 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002938 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002939 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002940 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002941 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002942 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002943 install_rpath : rootlibexecdir,
2944 install : true,
2945 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002946
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002947 executable('systemd-networkd-wait-online',
2948 systemd_networkd_wait_online_sources,
2949 include_directories : includes,
2950 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002951 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002952 install_rpath : rootlibexecdir,
2953 install : true,
2954 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002955
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002956 exe = executable('networkctl',
2957 networkctl_sources,
2958 include_directories : includes,
2959 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002960 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002961 install_rpath : rootlibexecdir,
2962 install : true,
2963 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002964 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002965
2966 executable('systemd-network-generator',
2967 network_generator_sources,
2968 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002969 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002970 install_rpath : rootlibexecdir,
2971 install : true,
2972 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002973endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002974
2975executable('systemd-sulogin-shell',
2976 ['src/sulogin-shell/sulogin-shell.c'],
2977 include_directories : includes,
2978 link_with : [libshared],
2979 install_rpath : rootlibexecdir,
2980 install : true,
2981 install_dir : rootlibexecdir)
2982
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002983############################################################
2984
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002985custom_target(
2986 'systemd-runtest.env',
2987 output : 'systemd-runtest.env',
2988 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002989 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002990 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002991 '} >@OUTPUT@'],
2992 build_by_default : true)
2993
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002994foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002995 sources = tuple[0]
2996 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2997 dependencies = tuple[2]
2998 condition = tuple.length() >= 4 ? tuple[3] : ''
2999 type = tuple.length() >= 5 ? tuple[4] : ''
3000 defs = tuple.length() >= 6 ? tuple[5] : []
3001 incs = tuple.length() >= 7 ? tuple[6] : includes
3002 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003003
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003004 name = sources[0].split('/')[-1].split('.')[0]
3005 if type.startswith('timeout=')
3006 timeout = type.split('=')[1].to_int()
3007 type = ''
3008 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003009
3010 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003011 exe = executable(
3012 name,
3013 sources,
3014 include_directories : incs,
3015 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003016 dependencies : [versiondep,
3017 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003019 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003020 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003021 install : install_tests,
3022 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003024 if type == 'manual'
3025 message('@0@ is a manual test'.format(name))
3026 elif type == 'unsafe' and want_tests != 'unsafe'
3027 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003028 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003029 test(name, exe,
3030 env : test_env,
3031 timeout : timeout)
3032 endif
3033 else
3034 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3035 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003036endforeach
3037
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003038exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003039 'test-libsystemd-sym',
3040 test_libsystemd_sym_c,
3041 include_directories : includes,
3042 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003043 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003044 install : install_tests,
3045 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003046if want_tests != 'false'
3047 test('test-libsystemd-sym', exe)
3048endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003049
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003050exe = executable(
3051 'test-libsystemd-static-sym',
3052 test_libsystemd_sym_c,
3053 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003054 link_with : [install_libsystemd_static],
3055 dependencies : [threads], # threads is already included in dependencies on the library,
3056 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003057 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003058 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003059 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003060if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003061 test('test-libsystemd-static-sym', exe)
3062endif
3063
3064exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003065 'test-libudev-sym',
3066 test_libudev_sym_c,
3067 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003068 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003069 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003070 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003071 install : install_tests,
3072 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003073if want_tests != 'false'
3074 test('test-libudev-sym', exe)
3075endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003076
3077exe = executable(
3078 'test-libudev-static-sym',
3079 test_libudev_sym_c,
3080 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003081 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003082 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003083 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003084 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003085 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003086if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003087 test('test-libudev-static-sym', exe)
3088endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003089
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003090############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003091
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003092fuzzer_exes = []
3093
Michael Olbrich59967402018-11-11 11:27:35 +01003094if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003095foreach tuple : fuzzers
3096 sources = tuple[0]
3097 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3098 dependencies = tuple[2]
3099 defs = tuple.length() >= 4 ? tuple[3] : []
3100 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003101 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003102
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003103 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003104 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003105 elif want_libfuzzer
3106 if fuzzing_engine.found()
3107 dependencies += fuzzing_engine
3108 else
3109 link_args += ['-fsanitize=fuzzer']
3110 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003111 else
3112 sources += 'src/fuzz/fuzz-main.c'
3113 endif
3114
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003115 if want_fuzzbuzz
3116 sources += 'src/fuzz/fuzzer-entry-point.c'
3117 endif
3118
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003119 name = sources[0].split('/')[-1].split('.')[0]
3120
3121 fuzzer_exes += executable(
3122 name,
3123 sources,
3124 include_directories : [incs, include_directories('src/fuzz')],
3125 link_with : link_with,
3126 dependencies : dependencies,
3127 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003128 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003129 install : false)
3130endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003131endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003132
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003133run_target('fuzzers',
3134 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003135 command : ['true'])
3136
3137############################################################
3138
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003139make_directive_index_py = find_program('tools/make-directive-index.py')
3140make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003141xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003142hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003143autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003144
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003145subdir('sysctl.d')
3146subdir('sysusers.d')
3147subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003148subdir('hwdb.d')
3149subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003150subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003151subdir('network')
3152subdir('man')
3153subdir('shell-completion/bash')
3154subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003155subdir('docs/sysvinit')
3156subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003157
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003158install_subdir('factory/etc',
3159 install_dir : factorydir)
3160
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003161install_data('xorg/50-systemd-user.sh',
3162 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003163install_data('modprobe.d/systemd.conf',
3164 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003165install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003166 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003167 'NEWS',
3168 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303169 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003170 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003171 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003172 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003173 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003174 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003175 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003176 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3177 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003178
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003179meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3180meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3181
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003182############################################################
3183
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003184meson_check_help = find_program('tools/meson-check-help.sh')
3185
3186foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003187 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003188 if want_tests != 'false'
3189 test('check-help-' + name,
3190 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003191 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003192 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003193endforeach
3194
3195############################################################
3196
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003197check_directives_sh = find_program('tools/check-directives.sh')
3198
3199if want_tests != 'false'
3200 test('check-directives',
3201 check_directives_sh,
3202 args : project_source_root)
3203endif
3204
3205############################################################
3206
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003207# Enable tests for all supported sanitizers
3208foreach tuple : sanitizers
3209 sanitizer = tuple[0]
3210 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003211
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003212 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003213 prev = ''
3214 foreach p : fuzz_regression_tests
3215 b = p.split('/')[-2]
3216 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003217
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003218 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003219
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003220 if name != prev
3221 if want_tests == 'false'
3222 message('Not compiling @0@ because tests is set to false'.format(name))
3223 elif slow_tests
3224 exe = custom_target(
3225 name,
3226 output : name,
3227 depends : build,
3228 command : [env, 'ln', '-fs',
3229 join_paths(build.full_path(), b),
3230 '@OUTPUT@'],
3231 build_by_default : true)
3232 else
3233 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3234 endif
3235 endif
3236 prev = name
3237
3238 if want_tests != 'false' and slow_tests
3239 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3240 env,
3241 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003242 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003243 endif
3244 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003245 endif
3246endforeach
3247
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003248
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003249############################################################
3250
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003251if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003252 all_files = run_command(
3253 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003254 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003255 'ls-files',
3256 ':/*.[ch]'])
3257 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003258
userwithuide85a6902017-08-09 13:41:44 +00003259 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003260 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003261 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003262 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003263 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003264 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003265 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003266endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003267
3268if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003269 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003270 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003271 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003272 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003273endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003274
3275if git.found()
3276 git_head = run_command(
3277 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003278 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003279 'rev-parse', 'HEAD']).stdout().strip()
3280 git_head_short = run_command(
3281 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003282 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003283 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3284
3285 run_target(
3286 'git-snapshot',
3287 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003288 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003289 git_head_short),
3290 '--prefix', 'systemd-@0@/'.format(git_head),
3291 'HEAD'])
3292endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003293
3294############################################################
3295
Lennart Poettering51b13862017-12-20 12:51:14 +01003296meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3297run_target(
3298 'check-api-docs',
3299 depends : [man, libsystemd, libudev],
3300 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3301
3302############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003303watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003304
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003305status = [
3306 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3307
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003308 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003309 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003310 'prefix directory: @0@'.format(prefixdir),
3311 'rootprefix directory: @0@'.format(rootprefixdir),
3312 'sysconf directory: @0@'.format(sysconfdir),
3313 'include directory: @0@'.format(includedir),
3314 'lib directory: @0@'.format(libdir),
3315 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003316 'SysV init scripts: @0@'.format(sysvinit_path),
3317 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003318 'PAM modules directory: @0@'.format(pamlibdir),
3319 'PAM configuration directory: @0@'.format(pamconfdir),
3320 'RPM macros directory: @0@'.format(rpmmacrosdir),
3321 'modprobe.d directory: @0@'.format(modprobedir),
3322 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3323 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3324 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3325 'bash completions directory: @0@'.format(bashcompletiondir),
3326 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003327 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003328 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3329 get_option('debug-tty')),
3330 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003331 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003332 'maximum system UID: @0@'.format(system_uid_max),
3333 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003334 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3335 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3336 'minimum container UID base: @0@'.format(container_uid_base_min),
3337 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003338 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003339 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003340 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003341 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003342 'nobody user name: @0@'.format(nobody_user),
3343 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003344 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003345 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003346
3347 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003348 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003349 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003350 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003351 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003352 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003353 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003354 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003355
3356alt_dns_servers = '\n '.join(dns_servers.split(' '))
3357alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3358status += [
3359 'default DNS servers: @0@'.format(alt_dns_servers),
3360 'default NTP servers: @0@'.format(alt_ntp_servers)]
3361
3362alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3363 '@@0@'.format(time_epoch)).stdout().strip()
3364status += [
3365 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3366
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003367status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003368 'static libsystemd: @0@'.format(static_libsystemd),
3369 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003370
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003371# TODO:
3372# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3373# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3374# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3375
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003376if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003377 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003378
3379 if have_gnu_efi
3380 status += [
3381 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003382 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003383 'EFI lds: @0@'.format(efi_lds),
3384 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003385 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003386 endif
3387endif
3388
3389found = []
3390missing = []
3391
3392foreach tuple : [
3393 ['libcryptsetup'],
3394 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003395 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003396 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003397 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003398 ['AUDIT'],
3399 ['IMA'],
3400 ['AppArmor'],
3401 ['SELinux'],
3402 ['SECCOMP'],
3403 ['SMACK'],
3404 ['zlib'],
3405 ['xz'],
3406 ['lz4'],
3407 ['bzip2'],
3408 ['ACL'],
3409 ['gcrypt'],
3410 ['qrencode'],
3411 ['microhttpd'],
3412 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003413 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003414 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003415 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003416 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003417 ['libidn'],
3418 ['libiptc'],
3419 ['elfutils'],
3420 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003421 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003422 ['vconsole'],
3423 ['quotacheck'],
3424 ['tmpfiles'],
3425 ['environment.d'],
3426 ['sysusers'],
3427 ['firstboot'],
3428 ['randomseed'],
3429 ['backlight'],
3430 ['rfkill'],
3431 ['logind'],
3432 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003433 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003434 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003435 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003436 ['importd'],
3437 ['hostnamed'],
3438 ['timedated'],
3439 ['timesyncd'],
3440 ['localed'],
3441 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003442 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003443 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3444 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003445 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003446 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003447 ['polkit'],
3448 ['legacy pkla', install_polkit_pkla],
3449 ['efi'],
3450 ['gnu-efi', have_gnu_efi],
3451 ['kmod'],
3452 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003453 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003454 ['blkid'],
3455 ['dbus'],
3456 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003457 ['nss-myhostname'],
3458 ['nss-mymachines'],
3459 ['nss-resolve'],
3460 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003461 ['hwdb'],
3462 ['tpm'],
3463 ['man pages', want_man],
3464 ['html pages', want_html],
3465 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003466 ['SysV compat'],
3467 ['utmp'],
3468 ['ldconfig'],
3469 ['hibernate'],
3470 ['adm group', get_option('adm-group')],
3471 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003472 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003473 ['debug hashmap'],
3474 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003475 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003476 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003477 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003478 ['link-udev-shared', get_option('link-udev-shared')],
3479 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003480 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003481 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003482]
3483
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003484 if tuple.length() >= 2
3485 cond = tuple[1]
3486 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003487 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3488 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003489 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003490 endif
3491 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003492 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003493 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003494 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003495 endif
3496endforeach
3497
3498status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003499 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003500 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003501 '',
3502 'disabled features: @0@'.format(', '.join(missing)),
3503 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003504message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003505
3506if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003507 warning('\n' +
3508 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3509 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3510 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003511endif