blob: fef3c27cf4d907fb6d9e2c7ab21ac323d3e74d97 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek384db812020-02-05 09:51:59 +01004 version : '245',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek827ca902019-11-10 11:39:15 +010011 'warning_level=2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040012 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090013 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040014 )
15
Zbigniew Jędrzejewski-Szmek384db812020-02-05 09:51:59 +010016libsystemd_version = '0.28.0'
17libudev_version = '1.6.17'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020018
Yu Watanabe348b4432018-05-07 18:17:35 +090019# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# Also, for hysterical reasons, we use different variable
21# names, sometimes. Not all variables are included in every
22# set. Ugh, ugh, ugh!
23conf = configuration_data()
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010024conf.set('PROJECT_VERSION', meson.project_version(),
25 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026
27substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010028substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010029substs.set('PROJECT_VERSION', meson.project_version(),
30 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040031
Davide Cavalca1485aac2019-02-27 11:19:07 -050032# This is to be used instead of meson.source_root(), as the latter will return
33# the wrong result when systemd is being built as a meson subproject
34project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020035relative_source_path = run_command('realpath',
36 '--relative-to=@0@'.format(meson.current_build_dir()),
37 project_source_root).stdout().strip()
38conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050039
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020040want_ossfuzz = get_option('oss-fuzz')
41want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000042if want_ossfuzz + want_libfuzzer > 1
43 error('only one of oss-fuzz or llvm-fuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020044endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000045
46skip_deps = want_ossfuzz or want_libfuzzer
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000047fuzzer_build = want_ossfuzz or want_libfuzzer
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020048
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040049#####################################################################
50
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040051# Try to install the git pre-commit hook
Zbigniew Jędrzejewski-Szmeke2d612a2020-03-28 09:30:51 +010052add_git_hook_sh = find_program('tools/add-git-hook.sh', required : false)
53if add_git_hook_sh.found()
54 git_hook = run_command(add_git_hook_sh)
55 if git_hook.returncode() == 0
56 message(git_hook.stdout().strip())
57 endif
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040058endif
59
60#####################################################################
61
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010062if get_option('split-usr') == 'auto'
63 split_usr = run_command('test', '-L', '/bin').returncode() != 0
64else
65 split_usr = get_option('split-usr') == 'true'
66endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010067conf.set10('HAVE_SPLIT_USR', split_usr,
68 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010069
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010070if get_option('split-bin') == 'auto'
71 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
72else
73 split_bin = get_option('split-bin') == 'true'
74endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010075conf.set10('HAVE_SPLIT_BIN', split_bin,
76 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010077
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010078rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079# Unusual rootprefixdir values are used by some distros
80# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010081rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010082if rootprefixdir == ''
83 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010084endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010085rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086
87sysvinit_path = get_option('sysvinit-path')
88sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090089conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020090 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020092conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
93conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010094conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020095
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010096# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040097# encountered, so this should canonicalize various paths when they are
98# absolute or relative.
99prefixdir = get_option('prefix')
100if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400101 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400102endif
103bindir = join_paths(prefixdir, get_option('bindir'))
104libdir = join_paths(prefixdir, get_option('libdir'))
105sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
106includedir = join_paths(prefixdir, get_option('includedir'))
107datadir = join_paths(prefixdir, get_option('datadir'))
108localstatedir = join_paths('/', get_option('localstatedir'))
109
110rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100111rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400112rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
113
114rootlibdir = get_option('rootlibdir')
115if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400116 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400117endif
118
119# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200120pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
121pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400122polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
123polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
124polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400125xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900126rpmmacrosdir = get_option('rpmmacrosdir')
127if rpmmacrosdir != 'no'
128 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
129endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200130modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400131
132# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400133pkgdatadir = join_paths(datadir, 'systemd')
134environmentdir = join_paths(prefixdir, 'lib/environment.d')
135pkgsysconfdir = join_paths(sysconfdir, 'systemd')
136userunitdir = join_paths(prefixdir, 'lib/systemd/user')
137userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
138tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
139sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
140sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
141binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
142modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
143networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
144pkgincludedir = join_paths(includedir, 'systemd')
145systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
146usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
147systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
148userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
149systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
150systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
151systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
152systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
153udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400154udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
155udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
156catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
157kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
158factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400159bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
160testsdir = join_paths(prefixdir, 'lib/systemd/tests')
161systemdstatedir = join_paths(localstatedir, 'lib/systemd')
162catalogstatedir = join_paths(systemdstatedir, 'catalog')
163randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200164profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200165ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166
tblume75aaade2018-02-01 22:46:15 +0100167docdir = get_option('docdir')
168if docdir == ''
169 docdir = join_paths(datadir, 'doc/systemd')
170endif
171
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400172dbuspolicydir = get_option('dbuspolicydir')
173if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177dbussessionservicedir = get_option('dbussessionservicedir')
178if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182dbussystemservicedir = get_option('dbussystemservicedir')
183if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
187pamlibdir = get_option('pamlibdir')
188if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400189 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190endif
191
192pamconfdir = get_option('pamconfdir')
193if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400194 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195endif
196
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100197memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200198status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100199
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100201conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
203conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
204conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400205conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100206
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100207conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100208
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100209conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
210conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
213conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
214conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
215conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100216conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100217conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
220conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
221conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100222conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400223conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400224conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
225conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100226conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
227conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
228conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
229conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400230conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
231conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400232conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
233conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700234conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700235conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400237conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238conf.set_quoted('LIBDIR', libdir)
239conf.set_quoted('ROOTLIBDIR', rootlibdir)
240conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
241conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400242conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
243conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200244conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400245conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
246conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
247conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
248conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200249conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200250conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200251conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100252conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200253conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100256substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100257substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400258substs.set('exec_prefix', prefixdir)
259substs.set('libdir', libdir)
260substs.set('rootlibdir', rootlibdir)
261substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100262substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400263substs.set('bindir', bindir)
264substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265substs.set('rootlibexecdir', rootlibexecdir)
266substs.set('systemunitdir', systemunitdir)
267substs.set('userunitdir', userunitdir)
268substs.set('systempresetdir', systempresetdir)
269substs.set('userpresetdir', userpresetdir)
270substs.set('udevhwdbdir', udevhwdbdir)
271substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400272substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200273substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400274substs.set('catalogdir', catalogdir)
275substs.set('tmpfilesdir', tmpfilesdir)
276substs.set('sysusersdir', sysusersdir)
277substs.set('sysctldir', sysctldir)
278substs.set('binfmtdir', binfmtdir)
279substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200280substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400281substs.set('systemgeneratordir', systemgeneratordir)
282substs.set('usergeneratordir', usergeneratordir)
283substs.set('systemenvgeneratordir', systemenvgeneratordir)
284substs.set('userenvgeneratordir', userenvgeneratordir)
285substs.set('systemshutdowndir', systemshutdowndir)
286substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400287substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400288substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400289substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
290substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
291substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100292substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200293substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200294substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200295substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400296
297#####################################################################
298
299cc = meson.get_compiler('c')
300pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400301check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100302meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400303
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200304want_tests = get_option('tests')
305slow_tests = want_tests != 'false' and get_option('slow-tests')
306install_tests = get_option('install-tests')
307
James Hilliard46e63a22018-12-27 09:16:20 +0800308if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200309 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100310 cxx = meson.get_compiler('cpp')
311 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200312else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200313 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400314endif
315
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500316if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200317 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
318 if fuzzing_engine.found()
319 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
320 elif cc.has_argument('-fsanitize=fuzzer-no-link')
321 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
322 else
323 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
324 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200325elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500326 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
327endif
328
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100329# Those generate many false positives, and we do not want to change the code to
330# avoid them.
331basic_disabled_warnings = [
332 '-Wno-unused-parameter',
333 '-Wno-missing-field-initializers',
334 '-Wno-unused-result',
335 '-Wno-format-signedness',
336]
337if get_option('b_ndebug') == 'true'
338 # With asserts disabled with get a bunch of warnings about variables which
339 # are used only in the asserts. This is not useful at all, so let's just silence
340 # those warnings.
341 basic_disabled_warnings += [
342 '-Wno-unused-variable',
343 '-Wno-unused-but-set-variable',
344 ]
345endif
346
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-Werror=undef',
349 '-Wlogical-op',
350 '-Wmissing-include-dirs',
351 '-Wold-style-definition',
352 '-Wpointer-arith',
353 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900354 '-Wfloat-equal',
355 '-Wsuggest-attribute=noreturn',
356 '-Werror=missing-prototypes',
357 '-Werror=implicit-function-declaration',
358 '-Werror=missing-declarations',
359 '-Werror=return-type',
360 '-Werror=incompatible-pointer-types',
361 '-Werror=format=2',
362 '-Wstrict-prototypes',
363 '-Wredundant-decls',
364 '-Wmissing-noreturn',
365 '-Wimplicit-fallthrough=5',
366 '-Wshadow',
367 '-Wendif-labels',
368 '-Wstrict-aliasing=2',
369 '-Wwrite-strings',
370 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200371 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200372 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900373 '-Wdate-time',
374 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700375
376 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100377 '-Wno-error=#warnings', # clang
378 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700379
380 # work-around for gcc 7.1 turning this on on its own.
381 '-Wno-error=nonnull',
382
383 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
384 # optimizations enabled, producing essentially false positives.
385 '-Wno-maybe-uninitialized',
386
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387 '-ffast-math',
388 '-fno-common',
389 '-fdiagnostics-show-option',
390 '-fno-strict-aliasing',
391 '-fvisibility=hidden',
392 '-fstack-protector',
393 '-fstack-protector-strong',
394 '--param=ssp-buffer-size=4',
395]
396
397# --as-needed and --no-undefined are provided by meson by default,
398# run mesonconf to see what is enabled
399possible_link_flags = [
400 '-Wl,-z,relro',
401 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200402 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900405if cc.get_id() == 'clang'
406 possible_cc_flags += [
407 '-Wno-typedef-redefinition',
408 '-Wno-gnu-variable-sized-type-not-at-end',
409 ]
410endif
411
412if get_option('buildtype') != 'debug'
413 possible_cc_flags += [
414 '-ffunction-sections',
415 '-fdata-sections',
416 ]
417
418 possible_link_flags += '-Wl,--gc-sections'
419endif
420
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100421add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900422add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900423add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900424
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800425if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 #include <time.h>
427 #include <inttypes.h>
428 typedef uint64_t usec_t;
429 usec_t now(clockid_t clock);
430 int main(void) {
431 struct timespec now;
432 return 0;
433 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100434''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400435 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436endif
437
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100438if cxx_cmd != ''
439 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
440endif
441
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200442cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400443
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200444has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446#####################################################################
447# compilation result tests
448
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400449conf.set('_GNU_SOURCE', true)
450conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200451conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
456conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
457
458decl_headers = '''
459#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100460#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400461'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462
463foreach decl : ['char16_t',
464 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100465 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400467
468 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200469 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
470
471 if decl == 'struct statx'
472 if have
473 want_linux_stat_h = false
474 else
475 have = cc.sizeof(decl,
476 prefix : decl_headers + '#include <linux/stat.h>',
477 args : '-D_GNU_SOURCE') > 0
478 want_linux_stat_h = have
479 endif
480 endif
481
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483endforeach
484
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200485conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700486
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200488 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489endforeach
490
491foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100493 ['gettid', '''#include <sys/types.h>
494 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100495 ['pivot_root', '''#include <stdlib.h>
496 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498 #include <sys/stat.h>
499 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100501 ['renameat2', '''#include <stdio.h>
502 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 ['kcmp', '''#include <linux/kcmp.h>'''],
504 ['keyctl', '''#include <sys/types.h>
505 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200508 ['bpf', '''#include <sys/syscall.h>
509 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100510 ['statx', '''#include <sys/types.h>
511 #include <sys/stat.h>
512 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100513 ['explicit_bzero' , '''#include <string.h>'''],
514 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100515 ['set_mempolicy', '''#include <stdlib.h>
516 #include <unistd.h>'''],
517 ['get_mempolicy', '''#include <stdlib.h>
518 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200519 ['pidfd_send_signal', '''#include <stdlib.h>
520 #include <unistd.h>
521 #include <signal.h>
522 #include <sys/wait.h>'''],
523 ['pidfd_open', '''#include <stdlib.h>
524 #include <unistd.h>
525 #include <signal.h>
526 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100527 ['rt_sigqueueinfo', '''#include <stdlib.h>
528 #include <unistd.h>
529 #include <signal.h>
530 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400531]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532
Lennart Poettering85db59b2017-12-25 12:01:14 +0100533 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200534 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535endforeach
536
Lennart Poettering85db59b2017-12-25 12:01:14 +0100537if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200538 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200539 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400540else
541 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200542 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200543 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400544endif
545
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546#####################################################################
547
Davide Cavalca1485aac2019-02-27 11:19:07 -0500548vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
549 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100550 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100551 meson.project_version()]
552
Louis Taylord1084aa2019-01-21 21:45:36 +0000553version_h = vcs_tag(
554 input : 'src/version/version.h.in',
555 output : 'version.h',
556 command: vcs_tagger)
557
558versiondep = declare_dependency(sources: version_h)
559
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400562m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400564git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100565env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100566perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567
Davide Cavalca1485aac2019-02-27 11:19:07 -0500568meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400569mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400570test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
571splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400572
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
574# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500575progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ['kmod', '/usr/bin/kmod' ],
578 ['kexec', '/usr/sbin/kexec' ],
579 ['sulogin', '/usr/sbin/sulogin' ],
580 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
581 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
582 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
583 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200584 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585 ]
586foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 path = get_option(prog[0] + '-path')
588 if path != ''
589 message('Using @1@ for @0@'.format(prog[0], path))
590 else
591 exe = find_program(prog[0],
592 '/usr/sbin/' + prog[0],
593 '/sbin/' + prog[0],
594 required: false)
595 path = exe.found() ? exe.path() : prog[1]
596 endif
597 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
598 conf.set_quoted(name, path)
599 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endforeach
601
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500602conf.set_quoted('TELINIT', get_option('telinit-path'))
603
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400604if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100605 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607
608############################################################
609
610gperf = find_program('gperf')
611
612gperf_test_format = '''
613#include <string.h>
614const char * in_word_set(const char *, @0@);
615@1@
616'''
617gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
618gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
619gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
620if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
624 if cc.compiles(gperf_test)
625 gperf_len_type = 'unsigned'
626 else
627 error('unable to determine gperf len type')
628 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endif
630message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631conf.set('GPERF_LEN_TYPE', gperf_len_type,
632 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634############################################################
635
636if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100639foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'linux/memfd.h',
641 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200642 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'valgrind/memcheck.h',
644 'valgrind/valgrind.h',
645 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200647 conf.set10('HAVE_' + header.underscorify().to_upper(),
648 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649endforeach
650
651############################################################
652
653conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400654conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
655gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656
657default_hierarchy = get_option('default-hierarchy')
658conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
659 description : 'default cgroup hierarchy as string')
660if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
667
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100668default_net_naming_scheme = get_option('default-net-naming-scheme')
669conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
670
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900672if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900674 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676conf.set('TIME_EPOCH', time_epoch)
677
678system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900679if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400680 system_uid_max = run_command(
681 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800682 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
683 '/etc/login.defs').stdout().strip()
684 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900685 system_uid_max = 999
686 else
687 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800688 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690conf.set('SYSTEM_UID_MAX', system_uid_max)
691substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900694if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400695 system_gid_max = run_command(
696 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800697 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
698 '/etc/login.defs').stdout().strip()
699 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900700 system_gid_max = 999
701 else
702 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800703 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705conf.set('SYSTEM_GID_MAX', system_gid_max)
706substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707
Yu Watanabeac093402018-05-10 16:04:16 +0900708dynamic_uid_min = get_option('dynamic-uid-min')
709dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100710conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
711conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
712substs.set('dynamicuidmin', dynamic_uid_min)
713substs.set('dynamicuidmax', dynamic_uid_max)
714
Yu Watanabeac093402018-05-10 16:04:16 +0900715container_uid_base_min = get_option('container-uid-base-min')
716container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100717conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
718conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
719substs.set('containeruidbasemin', container_uid_base_min)
720substs.set('containeruidbasemax', container_uid_base_max)
721
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722nobody_user = get_option('nobody-user')
723nobody_group = get_option('nobody-group')
724
Chen Qi2484bff2018-07-23 14:53:09 +0800725if not meson.is_cross_build()
726 getent_result = run_command('getent', 'passwd', '65534')
727 if getent_result.returncode() == 0
728 name = getent_result.stdout().split(':')[0]
729 if name != nobody_user
730 warning('\n' +
731 '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) +
732 'Your build will result in an user table setup that is incompatible with the local system.')
733 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100734 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800735 id_result = run_command('id', '-u', nobody_user)
736 if id_result.returncode() == 0
737 id = id_result.stdout().to_int()
738 if id != 65534
739 warning('\n' +
740 '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) +
741 'Your build will result in an user table setup that is incompatible with the local system.')
742 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744
Chen Qi2484bff2018-07-23 14:53:09 +0800745 getent_result = run_command('getent', 'group', '65534')
746 if getent_result.returncode() == 0
747 name = getent_result.stdout().split(':')[0]
748 if name != nobody_group
749 warning('\n' +
750 '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) +
751 'Your build will result in an group table setup that is incompatible with the local system.')
752 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100753 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800754 id_result = run_command('id', '-g', nobody_group)
755 if id_result.returncode() == 0
756 id = id_result.stdout().to_int()
757 if id != 65534
758 warning('\n' +
759 '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) +
760 'Your build will result in an group table setup that is incompatible with the local system.')
761 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100762 endif
763endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900764if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900765 warning('\n' +
766 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
767 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900768endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100769
770conf.set_quoted('NOBODY_USER_NAME', nobody_user)
771conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900772substs.set('NOBODY_USER_NAME', nobody_user)
773substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100774
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775tty_gid = get_option('tty-gid')
776conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400777substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Ikey Doherty84786b82017-12-03 12:28:23 +0000779# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900780users_gid = get_option('users-gid')
781substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000782
Yu Watanabe348b4432018-05-07 18:17:35 +0900783conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
784conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785
Michael Bieblace5e312018-07-13 23:36:13 +0200786dev_kvm_mode = get_option('dev-kvm-mode')
787substs.set('DEV_KVM_MODE', dev_kvm_mode)
788conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100789group_render_mode = get_option('group-render-mode')
790substs.set('GROUP_RENDER_MODE', group_render_mode)
791conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400793kill_user_processes = get_option('default-kill-user-processes')
794conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100795conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400796substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400798dns_servers = get_option('dns-servers')
799conf.set_quoted('DNS_SERVERS', dns_servers)
800substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400802ntp_servers = get_option('ntp-servers')
803conf.set_quoted('NTP_SERVERS', ntp_servers)
804substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Dave Reisner8ca9e922018-12-28 07:38:36 -0500806default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900807if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800808 if not meson.is_cross_build()
809 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
810 default_locale = run_command(choose_default_locale_sh).stdout().strip()
811 else
812 default_locale = 'C.UTF-8'
813 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900814endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500815conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
816
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
818
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200819service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700820watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
821substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200822
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400823substs.set('SUSHELL', get_option('debug-shell'))
824substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200825conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827enable_debug_hashmap = false
828enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900829enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200830foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900831 if name == 'hashmap'
832 enable_debug_hashmap = true
833 elif name == 'mmap-cache'
834 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900835 elif name == 'siphash'
836 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900837 else
838 message('unknown debug option "@0@", ignoring'.format(name))
839 endif
840endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
842conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900843conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400844
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200845conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200846conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200847
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100848default_user_path = get_option('user-path')
849if default_user_path != ''
850 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100851 default_user_path_display = default_user_path
852else
853 # meson 0.49 fails when ?: is used in .format()
854 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100855endif
856
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100857
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858#####################################################################
859
860threads = dependency('threads')
861librt = cc.find_library('rt')
862libm = cc.find_library('m')
863libdl = cc.find_library('dl')
864libcrypt = cc.find_library('crypt')
865
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400866libcap = dependency('libcap', required : false)
867if not libcap.found()
868 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
869 libcap = cc.find_library('cap')
870endif
871
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100873 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100875want_libfdisk = get_option('fdisk')
876if want_libfdisk != 'false' and not skip_deps
877 libfdisk = dependency('fdisk',
878 required : want_libfdisk == 'true')
879 have = libfdisk.found()
880else
881 have = false
882 libfdisk = []
883endif
884conf.set10('HAVE_LIBFDISK', have)
885
Lennart Poettering70a5db52019-07-04 18:35:39 +0200886want_pwquality = get_option('pwquality')
887if want_pwquality != 'false' and not skip_deps
888 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
889 have = libpwquality.found()
890else
891 have = false
892 libpwquality = []
893endif
894conf.set10('HAVE_PWQUALITY', have)
895
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000897if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400899 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000909if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libselinux = dependency('libselinux',
911 version : '>= 2.1.9',
912 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000921if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libapparmor = dependency('libapparmor',
923 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931smack_run_label = get_option('smack-run-label')
932if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
935
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400936want_polkit = get_option('polkit')
937install_polkit = false
938install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000939if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libpolkit = dependency('polkit-gobject-1',
943 required : false)
944 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
945 message('Old polkit detected, will install pkla files')
946 install_polkit_pkla = true
947 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000952if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957 libacl = []
958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400960
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000972if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000982if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libkmod = dependency('libkmod',
984 version : '>= 15',
985 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000994if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libpam = cc.find_library('pam', required : want_pam == 'true')
996 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libpam = []
1001 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004
1005want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001006if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libmicrohttpd = dependency('libmicrohttpd',
1008 version : '>= 0.9.33',
1009 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001018if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001020 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001023
1024 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1025 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001033if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcurl = dependency('libcurl',
1035 version : '>= 7.32.0',
1036 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001045want_libidn2 = get_option('libidn2')
1046if want_libidn == 'true' and want_libidn2 == 'true'
1047 error('libidn and libidn2 cannot be requested simultaneously')
1048endif
1049
Yu Watanabe1b931392019-06-29 03:13:30 +09001050if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001051 libidn = dependency('libidn2',
1052 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libidn.found()
1054else
1055 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001056 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001059if not have and want_libidn != 'false' and not skip_deps
1060 # libidn is used for both libidn and libidn2 objects
1061 libidn = dependency('libidn',
1062 required : want_libidn == 'true')
1063 have = libidn.found()
1064else
1065 have = false
1066endif
1067conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001070if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libiptc = dependency('libiptc',
1072 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001081if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libqrencode = dependency('libqrencode',
1083 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001092if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1094 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
1098endif
1099if not have
1100 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libgcrypt = []
1102 libgpg_error = []
1103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001107if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libgnutls = dependency('gnutls',
1109 version : '>= 3.1.4',
1110 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001118want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001119if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001120 libopenssl = dependency('openssl',
1121 version : '>= 1.1.0',
1122 required : want_openssl == 'true')
1123 have = libopenssl.found()
1124else
1125 have = false
1126 libopenssl = []
1127endif
1128conf.set10('HAVE_OPENSSL', have)
1129
Lennart Poettering839fddb2019-11-05 11:49:27 +01001130want_p11kit = get_option('p11kit')
1131if want_p11kit != 'false' and not skip_deps
1132 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001133 version : '>= 0.23.3',
1134 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001135 have = libp11kit.found()
1136else
1137 have = false
1138 libp11kit = []
1139endif
1140conf.set10('HAVE_P11KIT', have)
1141
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001143if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libdw = dependency('libdw',
1145 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001154if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libz = dependency('zlib',
1156 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001165if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libbzip2 = cc.find_library('bz2',
1167 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
1175want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001176if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 libxz = dependency('liblzma',
1178 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
1186want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001187if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001189 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197
Norbert Langeef5924a2020-04-12 01:09:05 +02001198want_zstd = get_option('zstd')
1199if want_zstd != 'false' and not skip_deps
1200 libzstd = dependency('libzstd',
1201 required : want_zstd == 'true',
1202 version : '>= 1.4.0')
1203 have = libzstd.found()
1204else
1205 have = false
1206 libzstd = []
1207endif
1208conf.set10('HAVE_ZSTD', have)
1209
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001210want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001211if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001212 libxkbcommon = dependency('xkbcommon',
1213 version : '>= 0.3.0',
1214 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001216else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001218 libxkbcommon = []
1219endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001220conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001221
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001222want_pcre2 = get_option('pcre2')
1223if want_pcre2 != 'false'
1224 libpcre2 = dependency('libpcre2-8',
1225 required : want_pcre2 == 'true')
1226 have = libpcre2.found()
1227else
1228 have = false
1229 libpcre2 = []
1230endif
1231conf.set10('HAVE_PCRE2', have)
1232
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001234if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 libglib = dependency('glib-2.0',
1236 version : '>= 2.22.0',
1237 required : want_glib == 'true')
1238 libgobject = dependency('gobject-2.0',
1239 version : '>= 2.22.0',
1240 required : want_glib == 'true')
1241 libgio = dependency('gio-2.0',
1242 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001243 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 libglib = []
1247 libgobject = []
1248 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001249endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251
1252want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001253if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001254 libdbus = dependency('dbus-1',
1255 version : '>= 1.3.2',
1256 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001257 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001258else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001259 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001260 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001261endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001262conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001263
Yu Watanabe42303dc2017-06-18 05:22:32 +09001264default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001265if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001266 default_dnssec = 'no'
1267endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001269 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1270 default_dnssec = 'no'
1271endif
1272conf.set('DEFAULT_DNSSEC_MODE',
1273 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1274substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1275
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276dns_over_tls = get_option('dns-over-tls')
1277if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001278 if dns_over_tls == 'openssl'
1279 have_gnutls = false
1280 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001281 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001282 if dns_over_tls == 'gnutls' and not have_gnutls
1283 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1284 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001286 if dns_over_tls == 'gnutls' or have_gnutls
1287 have_openssl = false
1288 else
1289 have_openssl = conf.get('HAVE_OPENSSL') == 1
1290 if dns_over_tls != 'auto' and not have_openssl
1291 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001292 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001293 endif
1294 endif
1295 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001296else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001297 have = false
1298 have_gnutls = false
1299 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001300endif
1301conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001302conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1303conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001304
Iwan Timmerc9299be2018-06-13 20:26:24 +02001305default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001306if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001307 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001308endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001309if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001310 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 +02001311 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001312endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001313conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1314 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1315substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001316
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001317default_mdns = get_option('default-mdns')
1318conf.set('DEFAULT_MDNS_MODE',
1319 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1320substs.set('DEFAULT_MDNS_MODE', default_mdns)
1321
1322default_llmnr = get_option('default-llmnr')
1323conf.set('DEFAULT_LLMNR_MODE',
1324 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1325substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1326
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001327want_repart = get_option('repart')
1328if want_repart != 'false'
1329 have = (conf.get('HAVE_OPENSSL') == 1 and
1330 conf.get('HAVE_LIBFDISK') == 1)
1331 if want_repart == 'true' and not have
1332 error('repart support was requested, but dependencies are not available')
1333 endif
1334else
1335 have = false
1336endif
1337conf.set10('ENABLE_REPART', have)
1338
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001340if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001341 have = (conf.get('HAVE_LIBCURL') == 1 and
1342 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001343 conf.get('HAVE_XZ') == 1 and
1344 conf.get('HAVE_GCRYPT') == 1)
1345 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 error('importd support was requested, but dependencies are not available')
1347 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001348else
1349 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001351conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352
Lennart Poettering70a5db52019-07-04 18:35:39 +02001353want_homed = get_option('homed')
1354if want_homed != 'false'
1355 have = (conf.get('HAVE_OPENSSL') == 1 and
1356 conf.get('HAVE_LIBFDISK') == 1 and
1357 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1358 if want_homed == 'true' and not have
1359 error('homed support was requested, but dependencies are not available')
1360 endif
1361else
1362 have = false
1363endif
1364conf.set10('ENABLE_HOMED', have)
1365
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001366have = have and conf.get('HAVE_PAM') == 1
1367conf.set10('ENABLE_PAM_HOME', have)
1368
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001369want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001370if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001371 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1372 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001373 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1374 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001375 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001376 # config should be installed when any of the programs are built.
1377 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1378 error('remote support was requested, but dependencies are not available')
1379 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001380 have = have_deps[0] or have_deps[1]
1381else
1382 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001384conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001386foreach term : ['utmp',
1387 'hibernate',
1388 'environment-d',
1389 'binfmt',
1390 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001391 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001392 'resolve',
1393 'logind',
1394 'hostnamed',
1395 'localed',
1396 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001397 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001398 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001399 'networkd',
1400 'timedated',
1401 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001402 'firstboot',
1403 'randomseed',
1404 'backlight',
1405 'vconsole',
1406 'quotacheck',
1407 'sysusers',
1408 'tmpfiles',
1409 'hwdb',
1410 'rfkill',
1411 'ldconfig',
1412 'efi',
1413 'tpm',
1414 'ima',
1415 'smack',
1416 'gshadow',
1417 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001418 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001419 'nss-systemd']
1420 have = get_option(term)
1421 name = 'ENABLE_' + term.underscorify().to_upper()
1422 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423endforeach
1424
Yu Watanabe08540a92018-07-18 09:25:57 +09001425foreach tuple : [['nss-mymachines', 'machined'],
1426 ['nss-resolve', 'resolve']]
1427 want = get_option(tuple[0])
1428 if want != 'false'
1429 have = get_option(tuple[1])
1430 if want == 'true' and not have
1431 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1432 endif
1433 else
1434 have = false
1435 endif
1436 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1437 conf.set10(name, have)
1438endforeach
1439
1440enable_nss = false
1441foreach term : ['ENABLE_NSS_MYHOSTNAME',
1442 'ENABLE_NSS_MYMACHINES',
1443 'ENABLE_NSS_RESOLVE',
1444 'ENABLE_NSS_SYSTEMD']
1445 if conf.get(term) == 1
1446 enable_nss = true
1447 endif
1448endforeach
1449conf.set10('ENABLE_NSS', enable_nss)
1450
Yu Watanabe348b4432018-05-07 18:17:35 +09001451conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001452
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001453tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001454fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001455
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001456conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001457
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458#####################################################################
1459
1460if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001461 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001462
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001463 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001465 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 elif efi_arch == 'x86_64'
1467 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001468 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 elif efi_arch == 'arm'
1470 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001471 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 elif efi_arch == 'aarch64'
1473 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001474 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 else
1476 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001477 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001480 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001482
Yu Watanabeac093402018-05-10 16:04:16 +09001483 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001484else
1485 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001487conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488
1489#####################################################################
1490
1491config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001492 output : 'config.h',
1493 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494
Yu Watanabe348b4432018-05-07 18:17:35 +09001495meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1496
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001498 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499 'src/shared',
1500 'src/systemd',
1501 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001502 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001503 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 'src/resolve',
1505 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001506 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507 'src/login',
1508 'src/udev',
1509 'src/libudev',
1510 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001511 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512 'src/libsystemd/sd-bus',
1513 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001514 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515 'src/libsystemd/sd-hwdb',
1516 'src/libsystemd/sd-id128',
1517 'src/libsystemd/sd-netlink',
1518 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001519 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001521 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522
1523add_project_arguments('-include', 'config.h', language : 'c')
1524
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001525generate_gperfs = find_program('tools/generate-gperfs.py')
1526
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527subdir('po')
1528subdir('catalog')
1529subdir('src/systemd')
1530subdir('src/basic')
1531subdir('src/libsystemd')
1532subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535
1536libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 'journal-core',
1538 libjournal_core_sources,
1539 journald_gperf_c,
1540 include_directories : includes,
1541 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542
Davide Cavalca1485aac2019-02-27 11:19:07 -05001543libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001546 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001547 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 include_directories : includes,
1549 link_args : ['-shared',
1550 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001551 link_with : [libbasic,
1552 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001553 link_whole : [libsystemd_static,
1554 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 dependencies : [threads,
1556 librt,
1557 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001558 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 liblz4],
1560 link_depends : libsystemd_sym,
1561 install : true,
1562 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563
Davide Cavalca70848ec2018-04-09 02:43:35 -07001564static_libsystemd = get_option('static-libsystemd')
1565static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1566
1567install_libsystemd_static = static_library(
1568 'systemd',
1569 libsystemd_sources,
1570 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001571 basic_sources,
1572 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001573 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001574 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001575 build_by_default : static_libsystemd != 'false',
1576 install : static_libsystemd != 'false',
1577 install_dir : rootlibdir,
1578 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1579 dependencies : [threads,
1580 librt,
1581 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001582 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001583 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001584 libcap,
1585 libblkid,
1586 libmount,
1587 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001588 libgcrypt],
1589 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1590
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001591# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001592make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1593
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594############################################################
1595
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001596# binaries that have --help and are intended for use by humans,
1597# usually, but not always, installed in /bin.
1598public_programs = []
1599
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600subdir('src/libudev')
1601subdir('src/shared')
1602subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001603subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604subdir('src/udev')
1605subdir('src/network')
1606
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001607subdir('src/analyze')
1608subdir('src/journal-remote')
1609subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001610subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001611subdir('src/hostname')
1612subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001613subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001614subdir('src/kernel-install')
1615subdir('src/locale')
1616subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001617subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001618subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001619subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001620subdir('src/nspawn')
1621subdir('src/resolve')
1622subdir('src/timedate')
1623subdir('src/timesync')
1624subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001625subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001626
1627subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001628subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001629subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001630subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001631
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001632############################################################
1633
1634# only static linking apart from libdl, to make sure that the
1635# module is linked to all libraries that it uses.
1636test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 'test-dlopen',
1638 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001639 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 include_directories : includes,
1641 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001642 dependencies : [libdl],
1643 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001644
Yu Watanabe08540a92018-07-18 09:25:57 +09001645foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001646 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001647 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1648 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001650 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 if condition
1652 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001653
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001655 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001656
Lennart Poettering1684c562019-07-04 18:31:11 +02001657 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1658 if tuple.length() > 2
1659 sources += tuple[2].split()
1660 endif
1661
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 nss = shared_library(
1663 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001664 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001665 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 version : '2',
1667 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001668 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1669 link_args : ['-Wl,-z,nodelete',
1670 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001671 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001672 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001673 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 libbasic],
1675 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001676 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 link_depends : sym,
1678 install : true,
1679 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001680
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 # We cannot use shared_module because it does not support version suffix.
1682 # Unfortunately shared_library insists on creating the symlink…
1683 meson.add_install_script('sh', '-c',
1684 'rm $DESTDIR@0@/libnss_@1@.so'
1685 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001686
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001687 if want_tests != 'false'
1688 test('dlopen-nss_' + module,
1689 test_dlopen,
1690 # path to dlopen must include a slash
1691 args : nss.full_path())
1692 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001694endforeach
1695
1696############################################################
1697
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001698executable(
1699 'systemd',
1700 systemd_sources,
1701 include_directories : includes,
1702 link_with : [libcore,
1703 libshared],
1704 dependencies : [versiondep,
1705 threads,
1706 librt,
1707 libseccomp,
1708 libselinux,
1709 libmount,
1710 libblkid],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001715meson.add_install_script(meson_make_symlink,
1716 join_paths(rootlibexecdir, 'systemd'),
1717 join_paths(rootsbindir, 'init'))
1718
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001719public_programs += executable(
1720 'systemd-analyze',
1721 systemd_analyze_sources,
1722 include_directories : includes,
1723 link_with : [libcore,
1724 libshared],
1725 dependencies : [versiondep,
1726 threads,
1727 librt,
1728 libseccomp,
1729 libselinux,
1730 libmount,
1731 libblkid],
1732 install_rpath : rootlibexecdir,
1733 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001735executable(
1736 'systemd-journald',
1737 systemd_journald_sources,
1738 include_directories : includes,
1739 link_with : [libjournal_core,
1740 libshared],
1741 dependencies : [threads,
1742 libxz,
1743 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001744 libselinux,
1745 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001746 install_rpath : rootlibexecdir,
1747 install : true,
1748 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001750public_programs += executable(
1751 'systemd-cat',
1752 systemd_cat_sources,
1753 include_directories : includes,
1754 link_with : [libjournal_core,
1755 libshared],
1756 dependencies : [threads],
1757 install_rpath : rootlibexecdir,
1758 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001760public_programs += executable(
1761 'journalctl',
1762 journalctl_sources,
1763 include_directories : includes,
1764 link_with : [libshared],
1765 dependencies : [threads,
1766 libqrencode,
1767 libxz,
1768 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001769 libpcre2,
1770 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001775executable(
1776 'systemd-getty-generator',
1777 'src/getty-generator/getty-generator.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001784executable(
1785 'systemd-debug-generator',
1786 'src/debug-generator/debug-generator.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001793executable(
1794 'systemd-run-generator',
1795 'src/run-generator/run-generator.c',
1796 include_directories : includes,
1797 link_with : [libshared],
1798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001801
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001802executable(
1803 'systemd-fstab-generator',
1804 'src/fstab-generator/fstab-generator.c',
1805 include_directories : includes,
1806 link_with : [libcore_shared,
1807 libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001812if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001813 executable(
1814 '30-systemd-environment-d-generator',
1815 'src/environment-d-generator/environment-d-generator.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001821
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 meson.add_install_script(meson_make_symlink,
1823 join_paths(sysconfdir, 'environment'),
1824 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001828 executable(
1829 'systemd-hibernate-resume-generator',
1830 'src/hibernate-resume/hibernate-resume-generator.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001837 executable(
1838 'systemd-hibernate-resume',
1839 'src/hibernate-resume/hibernate-resume.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845endif
1846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001847if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001848 executable(
1849 'systemd-gpt-auto-generator',
1850 'src/gpt-auto-generator/gpt-auto-generator.c',
1851 'src/shared/blkid-util.h',
1852 include_directories : includes,
1853 link_with : [libshared],
1854 dependencies : libblkid,
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001859 public_programs += executable(
1860 'systemd-dissect',
1861 'src/dissect/dissect.c',
1862 include_directories : includes,
1863 link_with : [libshared],
1864 install_rpath : rootlibexecdir,
1865 install : true,
1866 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867endif
1868
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001869if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001870 executable(
1871 'systemd-resolved',
1872 systemd_resolved_sources,
1873 include_directories : includes,
1874 link_with : [libshared,
1875 libbasic_gcrypt,
1876 libsystemd_resolve_core],
1877 dependencies : systemd_resolved_dependencies,
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001882 public_programs += executable(
1883 'resolvectl',
1884 resolvectl_sources,
1885 include_directories : includes,
1886 link_with : [libshared,
1887 libbasic_gcrypt,
1888 libsystemd_resolve_core],
1889 dependencies : [threads,
1890 libgpg_error,
1891 libm,
1892 libidn],
1893 install_rpath : rootlibexecdir,
1894 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001895
1896 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001897 join_paths(bindir, 'resolvectl'),
1898 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001899
1900 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001901 join_paths(bindir, 'resolvectl'),
1902 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001903endif
1904
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001905if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001906 executable(
1907 'systemd-logind',
1908 systemd_logind_sources,
1909 include_directories : includes,
1910 link_with : [liblogind_core,
1911 libshared],
1912 dependencies : [threads,
1913 libacl],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001918 public_programs += executable(
1919 'loginctl',
1920 loginctl_sources,
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [threads,
1924 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001925 libxz,
1926 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001927 install_rpath : rootlibexecdir,
1928 install : true,
1929 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001931 public_programs += executable(
1932 'systemd-inhibit',
1933 'src/login/inhibit.c',
1934 include_directories : includes,
1935 link_with : [libshared],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001939
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001940 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001941 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 pam_systemd = shared_library(
1943 'pam_systemd',
1944 pam_systemd_c,
1945 name_prefix : '',
1946 include_directories : includes,
1947 link_args : ['-shared',
1948 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001949 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 libshared_static],
1951 dependencies : [threads,
1952 libpam,
1953 libpam_misc],
1954 link_depends : pam_systemd_sym,
1955 install : true,
1956 install_dir : pamlibdir)
1957
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001958 if want_tests != 'false'
1959 test('dlopen-pam_systemd',
1960 test_dlopen,
1961 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001962 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001963 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001965
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001966 executable(
1967 'systemd-user-runtime-dir',
1968 user_runtime_dir_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001974endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001975
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001976if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001977 executable(
1978 'systemd-user-sessions',
1979 'src/user-sessions/user-sessions.c',
1980 include_directories : includes,
1981 link_with : [libshared],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001988 public_programs += executable(
1989 'bootctl',
1990 'src/boot/bootctl.c',
1991 include_directories : includes,
1992 link_with : [libshared],
1993 dependencies : [libblkid],
1994 install_rpath : rootlibexecdir,
1995 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02001996
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001997 public_programs += executable(
1998 'systemd-bless-boot',
1999 'src/boot/bless-boot.c',
2000 include_directories : includes,
2001 link_with : [libshared],
2002 dependencies : [libblkid],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002006
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002007 executable(
2008 'systemd-bless-boot-generator',
2009 'src/boot/bless-boot-generator.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002017executable(
2018 'systemd-boot-check-no-failures',
2019 'src/boot/boot-check-no-failures.c',
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [libblkid],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002026
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002027public_programs += executable(
2028 'systemd-socket-activate',
2029 'src/activate/activate.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [threads],
2033 install_rpath : rootlibexecdir,
2034 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002035
2036if get_option('link-systemctl-shared')
2037 systemctl_link_with = [libshared]
2038else
2039 systemctl_link_with = [libsystemd_static,
2040 libshared_static,
2041 libjournal_client,
2042 libbasic_gcrypt]
2043endif
2044
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002045public_programs += executable(
2046 'systemctl',
2047 'src/systemctl/systemctl.c',
2048 'src/systemctl/sysv-compat.h',
2049 'src/systemctl/sysv-compat.c',
2050 include_directories : includes,
2051 link_with : systemctl_link_with,
2052 dependencies : [threads,
2053 libcap,
2054 libselinux,
2055 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002056 liblz4,
2057 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061
Lennart Poettering61d05782018-04-16 21:41:40 +02002062if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002063 executable(
2064 'systemd-portabled',
2065 systemd_portabled_sources,
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [threads],
2069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002072
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002073 public_programs += executable(
2074 'portablectl',
2075 'src/portable/portablectl.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [threads],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002082endif
2083
Lennart Poetteringd093b622019-07-04 18:33:30 +02002084if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002085 executable(
2086 'systemd-userwork',
2087 systemd_userwork_sources,
2088 include_directories : includes,
2089 link_with : [libshared],
2090 dependencies : [threads],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002094
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002095 executable(
2096 'systemd-userdbd',
2097 systemd_userdbd_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 dependencies : [threads],
2101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002104
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002105 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002106 'userdbctl',
2107 userdbctl_sources,
2108 include_directories : includes,
2109 link_with : [libshared],
2110 dependencies : [threads],
2111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002114endif
2115
Lennart Poettering70a5db52019-07-04 18:35:39 +02002116if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002117 executable(
2118 'systemd-homework',
2119 systemd_homework_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
2122 dependencies : [threads,
2123 libcryptsetup,
2124 libblkid,
2125 libcrypt,
2126 libopenssl,
2127 libfdisk,
2128 libp11kit],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002132
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002133 executable(
2134 'systemd-homed',
2135 systemd_homed_sources,
2136 include_directories : includes,
2137 link_with : [libshared],
2138 dependencies : [threads,
2139 libcrypt,
2140 libopenssl,
2141 libpwquality],
2142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002145
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002146 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002147 'homectl',
2148 homectl_sources,
2149 include_directories : includes,
2150 link_with : [libshared],
2151 dependencies : [threads,
2152 libcrypt,
2153 libopenssl,
2154 libp11kit,
2155 libpwquality],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002159
2160 if conf.get('HAVE_PAM') == 1
2161 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2162 pam_systemd = shared_library(
2163 'pam_systemd_home',
2164 pam_systemd_home_c,
2165 name_prefix : '',
2166 include_directories : includes,
2167 link_args : ['-shared',
2168 '-Wl,--version-script=' + version_script_arg],
2169 link_with : [libsystemd_static,
2170 libshared_static],
2171 dependencies : [threads,
2172 libpam,
2173 libpam_misc,
2174 libcrypt],
2175 link_depends : pam_systemd_home_sym,
2176 install : true,
2177 install_dir : pamlibdir)
2178 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002179endif
2180
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002181foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2182 meson.add_install_script(meson_make_symlink,
2183 join_paths(rootbindir, 'systemctl'),
2184 join_paths(rootsbindir, alias))
2185endforeach
2186
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002187if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002188 executable(
2189 'systemd-backlight',
2190 'src/backlight/backlight.c',
2191 include_directories : includes,
2192 link_with : [libshared],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196endif
2197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002199 executable(
2200 'systemd-rfkill',
2201 'src/rfkill/rfkill.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207endif
2208
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002209executable(
2210 'systemd-system-update-generator',
2211 'src/system-update-generator/system-update-generator.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002219 systemd_cryptsetup_sources = files('''
2220 src/cryptsetup/cryptsetup.c
2221 src/cryptsetup/cryptsetup-pkcs11.h
2222'''.split())
2223
2224 if conf.get('HAVE_P11KIT') == 1
2225 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2226 endif
2227
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002228 executable(
2229 'systemd-cryptsetup',
2230 systemd_cryptsetup_sources,
2231 include_directories : includes,
2232 link_with : [libshared],
2233 dependencies : [libcryptsetup,
2234 libp11kit],
2235 install_rpath : rootlibexecdir,
2236 install : true,
2237 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002239 executable(
2240 'systemd-cryptsetup-generator',
2241 'src/cryptsetup/cryptsetup-generator.c',
2242 include_directories : includes,
2243 link_with : [libshared],
2244 dependencies : [libcryptsetup],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002249 executable(
2250 'systemd-veritysetup',
2251 'src/veritysetup/veritysetup.c',
2252 include_directories : includes,
2253 link_with : [libshared],
2254 dependencies : [libcryptsetup],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002259 executable(
2260 'systemd-veritysetup-generator',
2261 'src/veritysetup/veritysetup-generator.c',
2262 include_directories : includes,
2263 link_with : [libshared],
2264 dependencies : [libcryptsetup],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268endif
2269
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002270if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002271 executable(
2272 'systemd-sysv-generator',
2273 'src/sysv-generator/sysv-generator.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 install_rpath : rootlibexecdir,
2277 install : true,
2278 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002280 executable(
2281 'systemd-rc-local-generator',
2282 'src/rc-local-generator/rc-local-generator.c',
2283 include_directories : includes,
2284 link_with : [libshared],
2285 install_rpath : rootlibexecdir,
2286 install : true,
2287 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288endif
2289
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002290if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002291 executable(
2292 'systemd-hostnamed',
2293 'src/hostname/hostnamed.c',
2294 include_directories : includes,
2295 link_with : [libshared],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002300 public_programs += executable(
2301 'hostnamectl',
2302 'src/hostname/hostnamectl.c',
2303 include_directories : includes,
2304 link_with : [libshared],
2305 install_rpath : rootlibexecdir,
2306 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307endif
2308
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002309if conf.get('ENABLE_LOCALED') == 1
2310 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 # logind will load libxkbcommon.so dynamically on its own
2312 deps = [libdl]
2313 else
2314 deps = []
2315 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002316
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002317 executable(
2318 'systemd-localed',
2319 systemd_localed_sources,
2320 include_directories : includes,
2321 link_with : [libshared],
2322 dependencies : deps,
2323 install_rpath : rootlibexecdir,
2324 install : true,
2325 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002327 public_programs += executable(
2328 'localectl',
2329 localectl_sources,
2330 include_directories : includes,
2331 link_with : [libshared],
2332 install_rpath : rootlibexecdir,
2333 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002336if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002337 executable(
2338 'systemd-timedated',
2339 'src/timedate/timedated.c',
2340 include_directories : includes,
2341 link_with : [libshared],
2342 install_rpath : rootlibexecdir,
2343 install : true,
2344 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002345endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346
Yu Watanabe6129ec82018-05-03 18:07:43 +09002347if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002348 public_programs += executable(
2349 'timedatectl',
2350 'src/timedate/timedatectl.c',
2351 include_directories : includes,
2352 install_rpath : rootlibexecdir,
2353 link_with : [libshared],
2354 dependencies : [libm],
2355 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356endif
2357
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002358if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002359 if get_option('link-timesyncd-shared')
2360 timesyncd_link_with = [libshared]
2361 else
2362 timesyncd_link_with = [libsystemd_static,
2363 libshared_static,
2364 libjournal_client,
2365 libbasic_gcrypt]
2366 endif
2367
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002368 executable(
2369 'systemd-timesyncd',
2370 systemd_timesyncd_sources,
2371 include_directories : includes,
2372 link_with : [timesyncd_link_with],
2373 dependencies : [threads,
2374 libm],
2375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002378
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002379 executable(
2380 'systemd-time-wait-sync',
2381 'src/time-wait-sync/time-wait-sync.c',
2382 include_directories : includes,
2383 link_with : [timesyncd_link_with],
2384 install_rpath : rootlibexecdir,
2385 install : true,
2386 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387endif
2388
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002389if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002390 executable(
2391 'systemd-machined',
2392 systemd_machined_sources,
2393 include_directories : includes,
2394 link_with : [libmachine_core,
2395 libshared],
2396 install_rpath : rootlibexecdir,
2397 install : true,
2398 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002400 public_programs += executable(
2401 'machinectl',
2402 'src/machine/machinectl.c',
2403 include_directories : includes,
2404 link_with : [libshared],
2405 dependencies : [threads,
2406 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002407 liblz4,
2408 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412endif
2413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002414if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002415 executable(
2416 'systemd-importd',
2417 systemd_importd_sources,
2418 include_directories : includes,
2419 link_with : [libshared],
2420 dependencies : [threads],
2421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002424
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002425 systemd_pull = executable(
2426 'systemd-pull',
2427 systemd_pull_sources,
2428 include_directories : includes,
2429 link_with : [libshared],
2430 dependencies : [versiondep,
2431 libcurl,
2432 libz,
2433 libbzip2,
2434 libxz,
2435 libgcrypt],
2436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002440 systemd_import = executable(
2441 'systemd-import',
2442 systemd_import_sources,
2443 include_directories : includes,
2444 link_with : [libshared],
2445 dependencies : [libcurl,
2446 libz,
2447 libbzip2,
2448 libxz],
2449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002453 systemd_import_fs = executable(
2454 'systemd-import-fs',
2455 systemd_import_fs_sources,
2456 include_directories : includes,
2457 link_with : [libshared],
2458 install_rpath : rootlibexecdir,
2459 install : true,
2460 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002461
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002462 systemd_export = executable(
2463 'systemd-export',
2464 systemd_export_sources,
2465 include_directories : includes,
2466 link_with : [libshared],
2467 dependencies : [libcurl,
2468 libz,
2469 libbzip2,
2470 libxz],
2471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002474
2475 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476endif
2477
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002478if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002479 public_programs += executable(
2480 'systemd-journal-upload',
2481 systemd_journal_upload_sources,
2482 include_directories : includes,
2483 link_with : [libshared],
2484 dependencies : [versiondep,
2485 threads,
2486 libcurl,
2487 libgnutls,
2488 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002489 liblz4,
2490 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002491 install_rpath : rootlibexecdir,
2492 install : true,
2493 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494endif
2495
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002496if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002497 public_programs += executable(
2498 'systemd-journal-remote',
2499 systemd_journal_remote_sources,
2500 include_directories : includes,
2501 link_with : [libshared,
2502 libsystemd_journal_remote],
2503 dependencies : [threads,
2504 libmicrohttpd,
2505 libgnutls,
2506 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002507 liblz4,
2508 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002509 install_rpath : rootlibexecdir,
2510 install : true,
2511 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002513 public_programs += executable(
2514 'systemd-journal-gatewayd',
2515 systemd_journal_gatewayd_sources,
2516 include_directories : includes,
2517 link_with : [libshared],
2518 dependencies : [threads,
2519 libmicrohttpd,
2520 libgnutls,
2521 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002522 liblz4,
2523 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002524 install_rpath : rootlibexecdir,
2525 install : true,
2526 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527endif
2528
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002529if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002530 executable(
2531 'systemd-coredump',
2532 systemd_coredump_sources,
2533 include_directories : includes,
2534 link_with : [libshared],
2535 dependencies : [threads,
2536 libacl,
2537 libdw,
2538 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002539 liblz4,
2540 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002541 install_rpath : rootlibexecdir,
2542 install : true,
2543 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002545 public_programs += executable(
2546 'coredumpctl',
2547 coredumpctl_sources,
2548 include_directories : includes,
2549 link_with : [libshared],
2550 dependencies : [threads,
2551 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002552 liblz4,
2553 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002554 install_rpath : rootlibexecdir,
2555 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556endif
2557
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002558if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002559 executable(
2560 'systemd-pstore',
2561 systemd_pstore_sources,
2562 include_directories : includes,
2563 link_with : [libshared],
2564 dependencies : [threads,
2565 libacl,
2566 libdw,
2567 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002568 liblz4,
2569 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002570 install_rpath : rootlibexecdir,
2571 install : true,
2572 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002573endif
2574
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002575if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002576 public_programs += executable(
2577 'systemd-binfmt',
2578 'src/binfmt/binfmt.c',
2579 include_directories : includes,
2580 link_with : [libshared],
2581 install_rpath : rootlibexecdir,
2582 install : true,
2583 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584
2585 meson.add_install_script('sh', '-c',
2586 mkdir_p.format(binfmtdir))
2587 meson.add_install_script('sh', '-c',
2588 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2589endif
2590
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002591if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002592 exe = executable(
2593 'systemd-repart',
2594 systemd_repart_sources,
2595 include_directories : includes,
2596 link_with : [libshared],
2597 dependencies : [threads,
2598 libcryptsetup,
2599 libblkid,
2600 libfdisk,
2601 libopenssl],
2602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002605
2606 if want_tests != 'false'
2607 test('test-repart',
2608 test_repart_sh,
2609 args : exe.full_path())
2610 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002611endif
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002614 executable(
2615 'systemd-vconsole-setup',
2616 'src/vconsole/vconsole-setup.c',
2617 include_directories : includes,
2618 link_with : [libshared],
2619 install_rpath : rootlibexecdir,
2620 install : true,
2621 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622endif
2623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002624if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002625 executable(
2626 'systemd-random-seed',
2627 'src/random-seed/random-seed.c',
2628 include_directories : includes,
2629 link_with : [libshared],
2630 install_rpath : rootlibexecdir,
2631 install : true,
2632 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633endif
2634
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002635if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002636 executable(
2637 'systemd-firstboot',
2638 'src/firstboot/firstboot.c',
2639 include_directories : includes,
2640 link_with : [libshared],
2641 dependencies : [libcrypt],
2642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645endif
2646
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002647executable(
2648 'systemd-remount-fs',
2649 'src/remount-fs/remount-fs.c',
2650 include_directories : includes,
2651 link_with : [libcore_shared,
2652 libshared],
2653 install_rpath : rootlibexecdir,
2654 install : true,
2655 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002657executable(
2658 'systemd-machine-id-setup',
2659 'src/machine-id-setup/machine-id-setup-main.c',
2660 include_directories : includes,
2661 link_with : [libcore_shared,
2662 libshared],
2663 install_rpath : rootlibexecdir,
2664 install : true,
2665 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002666
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002667executable(
2668 'systemd-fsck',
2669 'src/fsck/fsck.c',
2670 include_directories : includes,
2671 link_with : [libshared],
2672 install_rpath : rootlibexecdir,
2673 install : true,
2674 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002676executable('systemd-growfs',
2677 'src/partition/growfs.c',
2678 include_directories : includes,
2679 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002680 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002681 install_rpath : rootlibexecdir,
2682 install : true,
2683 install_dir : rootlibexecdir)
2684
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002685executable(
2686 'systemd-makefs',
2687 'src/partition/makefs.c',
2688 include_directories : includes,
2689 link_with : [libshared],
2690 install_rpath : rootlibexecdir,
2691 install : true,
2692 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002693
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002694executable(
2695 'systemd-sleep',
2696 'src/sleep/sleep.c',
2697 include_directories : includes,
2698 link_with : [libshared],
2699 install_rpath : rootlibexecdir,
2700 install : true,
2701 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702
Yu Watanabed25e1272019-01-03 02:32:57 +09002703install_data('src/sleep/sleep.conf',
2704 install_dir : pkgsysconfdir)
2705
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002706public_programs += executable(
2707 'systemd-sysctl',
2708 'src/sysctl/sysctl.c',
2709 include_directories : includes,
2710 link_with : [libshared],
2711 install_rpath : rootlibexecdir,
2712 install : true,
2713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002715executable(
2716 'systemd-ac-power',
2717 'src/ac-power/ac-power.c',
2718 include_directories : includes,
2719 link_with : [libshared],
2720 install_rpath : rootlibexecdir,
2721 install : true,
2722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002724public_programs += executable(
2725 'systemd-detect-virt',
2726 'src/detect-virt/detect-virt.c',
2727 include_directories : includes,
2728 link_with : [libshared],
2729 install_rpath : rootlibexecdir,
2730 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002731
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002732public_programs += executable(
2733 'systemd-delta',
2734 'src/delta/delta.c',
2735 include_directories : includes,
2736 link_with : [libshared],
2737 install_rpath : rootlibexecdir,
2738 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002740public_programs += executable(
2741 'systemd-escape',
2742 'src/escape/escape.c',
2743 include_directories : includes,
2744 link_with : [libshared],
2745 install_rpath : rootlibexecdir,
2746 install : true,
2747 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002748
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002749public_programs += executable(
2750 'systemd-notify',
2751 'src/notify/notify.c',
2752 include_directories : includes,
2753 link_with : [libshared],
2754 install_rpath : rootlibexecdir,
2755 install : true,
2756 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002757
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002758executable(
2759 'systemd-volatile-root',
2760 'src/volatile-root/volatile-root.c',
2761 include_directories : includes,
2762 link_with : [libshared],
2763 install_rpath : rootlibexecdir,
2764 install : true,
2765 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002767executable(
2768 'systemd-cgroups-agent',
2769 'src/cgroups-agent/cgroups-agent.c',
2770 include_directories : includes,
2771 link_with : [libshared],
2772 install_rpath : rootlibexecdir,
2773 install : true,
2774 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002775
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002776public_programs += executable(
2777 'systemd-id128',
2778 'src/id128/id128.c',
2779 include_directories : includes,
2780 link_with : [libshared],
2781 install_rpath : rootlibexecdir,
2782 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002783
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002784public_programs += executable(
2785 'systemd-path',
2786 'src/path/path.c',
2787 include_directories : includes,
2788 link_with : [libshared],
2789 install_rpath : rootlibexecdir,
2790 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002791
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002792public_programs += executable(
2793 'systemd-ask-password',
2794 'src/ask-password/ask-password.c',
2795 include_directories : includes,
2796 link_with : [libshared],
2797 install_rpath : rootlibexecdir,
2798 install : true,
2799 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002800
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002801executable(
2802 'systemd-reply-password',
2803 'src/reply-password/reply-password.c',
2804 include_directories : includes,
2805 link_with : [libshared],
2806 install_rpath : rootlibexecdir,
2807 install : true,
2808 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002809
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002810public_programs += executable(
2811 'systemd-tty-ask-password-agent',
2812 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2813 include_directories : includes,
2814 link_with : [libshared],
2815 install_rpath : rootlibexecdir,
2816 install : true,
2817 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002818
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002819public_programs += executable(
2820 'systemd-cgls',
2821 'src/cgls/cgls.c',
2822 include_directories : includes,
2823 link_with : [libshared],
2824 install_rpath : rootlibexecdir,
2825 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002826
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002827public_programs += executable(
2828 'systemd-cgtop',
2829 'src/cgtop/cgtop.c',
2830 include_directories : includes,
2831 link_with : [libshared],
2832 install_rpath : rootlibexecdir,
2833 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002835executable(
2836 'systemd-initctl',
2837 'src/initctl/initctl.c',
2838 include_directories : includes,
2839 link_with : [libshared],
2840 install_rpath : rootlibexecdir,
2841 install : true,
2842 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002843
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002844public_programs += executable(
2845 'systemd-mount',
2846 'src/mount/mount-tool.c',
2847 include_directories : includes,
2848 link_with : [libshared],
2849 dependencies: [libmount],
2850 install_rpath : rootlibexecdir,
2851 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002852
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002853meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002854 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002855
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002856public_programs += executable(
2857 'systemd-run',
2858 'src/run/run.c',
2859 include_directories : includes,
2860 link_with : [libshared],
2861 install_rpath : rootlibexecdir,
2862 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002863
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002864public_programs += executable(
2865 'systemd-stdio-bridge',
2866 'src/stdio-bridge/stdio-bridge.c',
2867 include_directories : includes,
2868 link_with : [libshared],
2869 dependencies : [versiondep],
2870 install_rpath : rootlibexecdir,
2871 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002872
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002873public_programs += executable(
2874 'busctl',
2875 'src/busctl/busctl.c',
2876 'src/busctl/busctl-introspect.c',
2877 'src/busctl/busctl-introspect.h',
2878 include_directories : includes,
2879 link_with : [libshared],
2880 install_rpath : rootlibexecdir,
2881 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002883if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002884 public_programs += executable(
2885 'systemd-sysusers',
2886 'src/sysusers/sysusers.c',
2887 include_directories : includes,
2888 link_with : [libshared],
2889 install_rpath : rootlibexecdir,
2890 install : true,
2891 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892endif
2893
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002894if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002895 exe = executable(
2896 'systemd-tmpfiles',
2897 'src/tmpfiles/tmpfiles.c',
2898 include_directories : includes,
2899 link_with : [libshared],
2900 dependencies : [libacl],
2901 install_rpath : rootlibexecdir,
2902 install : true,
2903 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002904 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002905
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002906 if want_tests != 'false'
2907 test('test-systemd-tmpfiles',
2908 test_systemd_tmpfiles_py,
2909 # https://github.com/mesonbuild/meson/issues/2681
2910 args : exe.full_path())
2911 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002912endif
2913
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002914if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002915 public_programs += executable(
2916 'systemd-hwdb',
2917 'src/hwdb/hwdb.c',
2918 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2919 include_directories : includes,
2920 link_with : [libudev_static],
2921 install_rpath : udev_rpath,
2922 install : true,
2923 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002924endif
2925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002926if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002927 executable(
2928 'systemd-quotacheck',
2929 'src/quotacheck/quotacheck.c',
2930 include_directories : includes,
2931 link_with : [libshared],
2932 install_rpath : rootlibexecdir,
2933 install : true,
2934 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935endif
2936
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002937public_programs += executable(
2938 'systemd-socket-proxyd',
2939 'src/socket-proxy/socket-proxyd.c',
2940 include_directories : includes,
2941 link_with : [libshared],
2942 dependencies : [threads],
2943 install_rpath : rootlibexecdir,
2944 install : true,
2945 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002946
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002947public_programs += executable(
2948 'systemd-udevd',
2949 systemd_udevd_sources,
2950 include_directories : includes,
2951 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2952 link_with : [libudev_core,
2953 libsystemd_network,
2954 libudev_static],
2955 dependencies : [versiondep,
2956 threads,
2957 libkmod,
2958 libidn,
2959 libacl,
2960 libblkid],
2961 install_rpath : udev_rpath,
2962 install : true,
2963 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002964
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002965public_programs += executable(
2966 'udevadm',
2967 udevadm_sources,
2968 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2969 include_directories : includes,
2970 link_with : [libudev_core,
2971 libsystemd_network,
2972 libudev_static],
2973 dependencies : [versiondep,
2974 threads,
2975 libkmod,
2976 libidn,
2977 libacl,
2978 libblkid],
2979 install_rpath : udev_rpath,
2980 install : true,
2981 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002982
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002983executable(
2984 'systemd-shutdown',
2985 systemd_shutdown_sources,
2986 include_directories : includes,
2987 link_with : [libcore_shared,
2988 libshared],
2989 dependencies : [libmount],
2990 install_rpath : rootlibexecdir,
2991 install : true,
2992 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002993
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002994executable(
2995 'systemd-update-done',
2996 'src/update-done/update-done.c',
2997 include_directories : includes,
2998 link_with : [libshared],
2999 install_rpath : rootlibexecdir,
3000 install : true,
3001 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003002
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003003executable(
3004 'systemd-update-utmp',
3005 'src/update-utmp/update-utmp.c',
3006 include_directories : includes,
3007 link_with : [libshared],
3008 dependencies : [libaudit],
3009 install_rpath : rootlibexecdir,
3010 install : true,
3011 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003012
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003013if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003014 executable(
3015 'systemd-modules-load',
3016 'src/modules-load/modules-load.c',
3017 include_directories : includes,
3018 link_with : [libshared],
3019 dependencies : [libkmod],
3020 install_rpath : rootlibexecdir,
3021 install : true,
3022 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003024 meson.add_install_script('sh', '-c',
3025 mkdir_p.format(modulesloaddir))
3026 meson.add_install_script('sh', '-c',
3027 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003028endif
3029
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003030public_programs += executable(
3031 'systemd-nspawn',
3032 systemd_nspawn_sources,
3033 include_directories : includes,
3034 link_with : [libcore_shared,
3035 libnspawn_core,
3036 libshared],
3037 dependencies : [libblkid,
3038 libseccomp],
3039 install_rpath : rootlibexecdir,
3040 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003041
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003042if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003043 executable(
3044 'systemd-networkd',
3045 systemd_networkd_sources,
3046 include_directories : network_include_dir,
3047 link_with : [libnetworkd_core,
3048 libsystemd_network,
3049 libudev_static,
3050 networkd_link_with],
3051 dependencies : [threads],
3052 install_rpath : rootlibexecdir,
3053 install : true,
3054 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003055
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003056 executable(
3057 'systemd-networkd-wait-online',
3058 systemd_networkd_wait_online_sources,
3059 include_directories : includes,
3060 link_with : [libnetworkd_core,
3061 networkd_link_with],
3062 install_rpath : rootlibexecdir,
3063 install : true,
3064 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003065
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003066 public_programs += executable(
3067 'networkctl',
3068 networkctl_sources,
3069 include_directories : includes,
3070 link_with : [libsystemd_network,
3071 networkd_link_with],
3072 install_rpath : rootlibexecdir,
3073 install : true,
3074 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003075
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003076 exe = executable(
3077 'systemd-network-generator',
3078 network_generator_sources,
3079 include_directories : includes,
3080 link_with : [networkd_link_with],
3081 install_rpath : rootlibexecdir,
3082 install : true,
3083 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003084
3085 if want_tests != 'false'
3086 test('test-network-generator-conversion',
3087 test_network_generator_conversion_sh,
3088 # https://github.com/mesonbuild/meson/issues/2681
3089 args : exe.full_path())
3090 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003091endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003092
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003093executable(
3094 'systemd-sulogin-shell',
3095 ['src/sulogin-shell/sulogin-shell.c'],
3096 include_directories : includes,
3097 link_with : [libshared],
3098 install_rpath : rootlibexecdir,
3099 install : true,
3100 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003101
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003102############################################################
3103
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003104custom_target(
3105 'systemd-runtest.env',
3106 output : 'systemd-runtest.env',
3107 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003108 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07003109 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003110 '} >@OUTPUT@'],
3111 build_by_default : true)
3112
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003113foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003114 sources = tuple[0]
3115 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3116 dependencies = tuple[2]
3117 condition = tuple.length() >= 4 ? tuple[3] : ''
3118 type = tuple.length() >= 5 ? tuple[4] : ''
3119 defs = tuple.length() >= 6 ? tuple[5] : []
3120 incs = tuple.length() >= 7 ? tuple[6] : includes
3121 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003122
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003123 name = sources[0].split('/')[-1].split('.')[0]
3124 if type.startswith('timeout=')
3125 timeout = type.split('=')[1].to_int()
3126 type = ''
3127 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003128
3129 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003130 exe = executable(
3131 name,
3132 sources,
3133 include_directories : incs,
3134 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003135 dependencies : [versiondep,
3136 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003137 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003138 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003139 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003140 install : install_tests,
3141 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003142
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003143 if type == 'manual'
3144 message('@0@ is a manual test'.format(name))
3145 elif type == 'unsafe' and want_tests != 'unsafe'
3146 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003147 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003148 test(name, exe,
3149 env : test_env,
3150 timeout : timeout)
3151 endif
3152 else
3153 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3154 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003155endforeach
3156
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003157exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003158 'test-libsystemd-sym',
3159 test_libsystemd_sym_c,
3160 include_directories : includes,
3161 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003162 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003163 install : install_tests,
3164 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003165if want_tests != 'false'
3166 test('test-libsystemd-sym', exe)
3167endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003168
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003169exe = executable(
3170 'test-libsystemd-static-sym',
3171 test_libsystemd_sym_c,
3172 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003173 link_with : [install_libsystemd_static],
3174 dependencies : [threads], # threads is already included in dependencies on the library,
3175 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003176 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003177 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003178 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003179if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003180 test('test-libsystemd-static-sym', exe)
3181endif
3182
3183exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003184 'test-libudev-sym',
3185 test_libudev_sym_c,
3186 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003187 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003188 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003189 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003190 install : install_tests,
3191 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003192if want_tests != 'false'
3193 test('test-libudev-sym', exe)
3194endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003195
3196exe = executable(
3197 'test-libudev-static-sym',
3198 test_libudev_sym_c,
3199 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003200 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003201 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003202 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003203 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003204 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003205if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003206 test('test-libudev-static-sym', exe)
3207endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003208
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003209############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003210
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003211fuzzer_exes = []
3212
Michael Olbrich59967402018-11-11 11:27:35 +01003213if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003214 foreach tuple : fuzzers
3215 sources = tuple[0]
3216 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3217 dependencies = tuple[2]
3218 defs = tuple.length() >= 4 ? tuple[3] : []
3219 incs = tuple.length() >= 5 ? tuple[4] : includes
3220 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003221
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003222 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003223 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003224 elif want_libfuzzer
3225 if fuzzing_engine.found()
3226 dependencies += fuzzing_engine
3227 else
3228 link_args += ['-fsanitize=fuzzer']
3229 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003230 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003231 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003232 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003233
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003234 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003235
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003236 fuzzer_exes += executable(
3237 name,
3238 sources,
3239 include_directories : [incs, include_directories('src/fuzz')],
3240 link_with : link_with,
3241 dependencies : dependencies,
3242 c_args : defs,
3243 link_args: link_args,
3244 install : false)
3245 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003246endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003247
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003248run_target(
3249 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003250 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003251 command : ['true'])
3252
3253############################################################
3254
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003255make_directive_index_py = find_program('tools/make-directive-index.py')
3256make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003257xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003258hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003259autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003260
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003261subdir('sysctl.d')
3262subdir('sysusers.d')
3263subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003264subdir('hwdb.d')
3265subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003266subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003267subdir('network')
3268subdir('man')
3269subdir('shell-completion/bash')
3270subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003271subdir('docs/sysvinit')
3272subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003273
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003274install_subdir('factory/etc',
3275 install_dir : factorydir)
3276
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003277install_data('xorg/50-systemd-user.sh',
3278 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003279install_data('modprobe.d/systemd.conf',
3280 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003281install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003282 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003283 'NEWS',
3284 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303285 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003286 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003287 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003288 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003289 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003290 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003291 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003292 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3293 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003294
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003295meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3296meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3297
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003298############################################################
3299
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003300meson_check_help = find_program('tools/meson-check-help.sh')
3301
3302foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003303 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003304 if want_tests != 'false'
3305 test('check-help-' + name,
3306 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003307 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003308 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003309endforeach
3310
3311############################################################
3312
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003313check_directives_sh = find_program('tools/check-directives.sh')
3314
3315if want_tests != 'false'
3316 test('check-directives',
3317 check_directives_sh,
3318 args : project_source_root)
3319endif
3320
3321############################################################
3322
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003323# Enable tests for all supported sanitizers
3324foreach tuple : sanitizers
3325 sanitizer = tuple[0]
3326 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003327
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003328 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003329 prev = ''
3330 foreach p : fuzz_regression_tests
3331 b = p.split('/')[-2]
3332 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003333
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003334 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003335
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003336 if name != prev
3337 if want_tests == 'false'
3338 message('Not compiling @0@ because tests is set to false'.format(name))
3339 elif slow_tests
3340 exe = custom_target(
3341 name,
3342 output : name,
3343 depends : build,
3344 command : [env, 'ln', '-fs',
3345 join_paths(build.full_path(), b),
3346 '@OUTPUT@'],
3347 build_by_default : true)
3348 else
3349 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3350 endif
3351 endif
3352 prev = name
3353
3354 if want_tests != 'false' and slow_tests
3355 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3356 env,
3357 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003358 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003359 endif
3360 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003361 endif
3362endforeach
3363
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003364
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003365############################################################
3366
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003367if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003368 all_files = run_command(
3369 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003370 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003371 'ls-files',
3372 ':/*.[ch]'])
3373 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003374
userwithuide85a6902017-08-09 13:41:44 +00003375 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003376 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003377 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003378 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003379 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003380 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003381 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003382endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003383
3384if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003385 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003386 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003387 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003388 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003389endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003390
3391if git.found()
3392 git_head = run_command(
3393 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003394 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003395 'rev-parse', 'HEAD']).stdout().strip()
3396 git_head_short = run_command(
3397 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003398 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003399 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3400
3401 run_target(
3402 'git-snapshot',
3403 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003404 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003405 git_head_short),
3406 '--prefix', 'systemd-@0@/'.format(git_head),
3407 'HEAD'])
3408endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003409
3410############################################################
3411
Lennart Poettering51b13862017-12-20 12:51:14 +01003412meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3413run_target(
3414 'check-api-docs',
3415 depends : [man, libsystemd, libudev],
3416 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3417
3418############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003419watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003420
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003421status = [
3422 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3423
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003424 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003425 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003426 'prefix directory: @0@'.format(prefixdir),
3427 'rootprefix directory: @0@'.format(rootprefixdir),
3428 'sysconf directory: @0@'.format(sysconfdir),
3429 'include directory: @0@'.format(includedir),
3430 'lib directory: @0@'.format(libdir),
3431 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003432 'SysV init scripts: @0@'.format(sysvinit_path),
3433 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003434 'PAM modules directory: @0@'.format(pamlibdir),
3435 'PAM configuration directory: @0@'.format(pamconfdir),
3436 'RPM macros directory: @0@'.format(rpmmacrosdir),
3437 'modprobe.d directory: @0@'.format(modprobedir),
3438 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3439 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3440 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3441 'bash completions directory: @0@'.format(bashcompletiondir),
3442 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003443 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003444 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3445 get_option('debug-tty')),
3446 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003447 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003448 'maximum system UID: @0@'.format(system_uid_max),
3449 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003450 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3451 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3452 'minimum container UID base: @0@'.format(container_uid_base_min),
3453 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003454 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003455 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003456 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003457 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003458 'nobody user name: @0@'.format(nobody_user),
3459 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003460 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003461 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003462
3463 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003464 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003465 'default mDNS mode: @0@'.format(default_mdns),
3466 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003467 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003468 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003469 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003470 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003471 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003472 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003473
3474alt_dns_servers = '\n '.join(dns_servers.split(' '))
3475alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3476status += [
3477 'default DNS servers: @0@'.format(alt_dns_servers),
3478 'default NTP servers: @0@'.format(alt_ntp_servers)]
3479
3480alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3481 '@@0@'.format(time_epoch)).stdout().strip()
3482status += [
3483 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3484
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003485status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003486 'static libsystemd: @0@'.format(static_libsystemd),
3487 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003488
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003489# TODO:
3490# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3491# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3492# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3493
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003494if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003495 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003496
3497 if have_gnu_efi
3498 status += [
3499 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003500 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003501 'EFI lds: @0@'.format(efi_lds),
3502 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003503 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003504 endif
3505endif
3506
3507found = []
3508missing = []
3509
3510foreach tuple : [
3511 ['libcryptsetup'],
3512 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003513 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003514 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003515 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003516 ['AUDIT'],
3517 ['IMA'],
3518 ['AppArmor'],
3519 ['SELinux'],
3520 ['SECCOMP'],
3521 ['SMACK'],
3522 ['zlib'],
3523 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003524 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003525 ['lz4'],
3526 ['bzip2'],
3527 ['ACL'],
3528 ['gcrypt'],
3529 ['qrencode'],
3530 ['microhttpd'],
3531 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003532 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003533 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003534 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003535 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003536 ['libidn'],
3537 ['libiptc'],
3538 ['elfutils'],
3539 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003540 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003541 ['vconsole'],
3542 ['quotacheck'],
3543 ['tmpfiles'],
3544 ['environment.d'],
3545 ['sysusers'],
3546 ['firstboot'],
3547 ['randomseed'],
3548 ['backlight'],
3549 ['rfkill'],
3550 ['logind'],
3551 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003552 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003553 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003554 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003555 ['importd'],
3556 ['hostnamed'],
3557 ['timedated'],
3558 ['timesyncd'],
3559 ['localed'],
3560 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003561 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003562 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3563 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003564 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003565 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003566 ['polkit'],
3567 ['legacy pkla', install_polkit_pkla],
3568 ['efi'],
3569 ['gnu-efi', have_gnu_efi],
3570 ['kmod'],
3571 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003572 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003573 ['blkid'],
3574 ['dbus'],
3575 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003576 ['nss-myhostname'],
3577 ['nss-mymachines'],
3578 ['nss-resolve'],
3579 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003580 ['hwdb'],
3581 ['tpm'],
3582 ['man pages', want_man],
3583 ['html pages', want_html],
3584 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003585 ['SysV compat'],
3586 ['utmp'],
3587 ['ldconfig'],
3588 ['hibernate'],
3589 ['adm group', get_option('adm-group')],
3590 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003591 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003592 ['debug hashmap'],
3593 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003594 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003595 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003596 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003597 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003598 ['link-udev-shared', get_option('link-udev-shared')],
3599 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003600 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003601 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003602 ['kernel-install', get_option('kernel-install')],
3603 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003604]
3605
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003606 if tuple.length() >= 2
3607 cond = tuple[1]
3608 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003609 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3610 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003611 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003612 endif
3613 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003614 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003615 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003616 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003617 endif
3618endforeach
3619
3620status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003621 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003622 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003623 '',
3624 'disabled features: @0@'.format(', '.join(missing)),
3625 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003626message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003627
3628if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003629 warning('\n' +
3630 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3631 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3632 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003633endif