blob: 1ba304770cf3a4db5eee72d1a118ac0c64ffba3a [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-Szmek81e06772020-04-24 20:12:03 +020035project_build_root = meson.current_build_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020036relative_source_path = run_command('realpath',
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +020037 '--relative-to=@0@'.format(project_build_root),
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020038 project_source_root).stdout().strip()
39conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050040
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020041want_ossfuzz = get_option('oss-fuzz')
42want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000043if want_ossfuzz + want_libfuzzer > 1
44 error('only one of oss-fuzz or llvm-fuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020045endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000046
47skip_deps = want_ossfuzz or want_libfuzzer
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000048fuzzer_build = want_ossfuzz or want_libfuzzer
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020049
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040050#####################################################################
51
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052# Try to install the git pre-commit hook
Zbigniew Jędrzejewski-Szmeke2d612a2020-03-28 09:30:51 +010053add_git_hook_sh = find_program('tools/add-git-hook.sh', required : false)
54if add_git_hook_sh.found()
55 git_hook = run_command(add_git_hook_sh)
56 if git_hook.returncode() == 0
57 message(git_hook.stdout().strip())
58 endif
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040059endif
60
61#####################################################################
62
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010063if get_option('split-usr') == 'auto'
64 split_usr = run_command('test', '-L', '/bin').returncode() != 0
65else
66 split_usr = get_option('split-usr') == 'true'
67endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010068conf.set10('HAVE_SPLIT_USR', split_usr,
69 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010070
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010071if get_option('split-bin') == 'auto'
72 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
73else
74 split_bin = get_option('split-bin') == 'true'
75endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010076conf.set10('HAVE_SPLIT_BIN', split_bin,
77 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010078
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010080# Unusual rootprefixdir values are used by some distros
81# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010082rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010083if rootprefixdir == ''
84 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010085endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010086rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
88sysvinit_path = get_option('sysvinit-path')
89sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090090conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020091 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020093conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
94conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010095conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020096
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010097# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040098# encountered, so this should canonicalize various paths when they are
99# absolute or relative.
100prefixdir = get_option('prefix')
101if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400102 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400103endif
104bindir = join_paths(prefixdir, get_option('bindir'))
105libdir = join_paths(prefixdir, get_option('libdir'))
106sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
107includedir = join_paths(prefixdir, get_option('includedir'))
108datadir = join_paths(prefixdir, get_option('datadir'))
109localstatedir = join_paths('/', get_option('localstatedir'))
110
111rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100112rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400113rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
114
115rootlibdir = get_option('rootlibdir')
116if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400117 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400118endif
119
120# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200121pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
122pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400123polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
124polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
125polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400126xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900127rpmmacrosdir = get_option('rpmmacrosdir')
128if rpmmacrosdir != 'no'
129 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
130endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200131modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400132
133# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134pkgdatadir = join_paths(datadir, 'systemd')
135environmentdir = join_paths(prefixdir, 'lib/environment.d')
136pkgsysconfdir = join_paths(sysconfdir, 'systemd')
137userunitdir = join_paths(prefixdir, 'lib/systemd/user')
138userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
139tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
140sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
141sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
142binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
143modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
144networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
145pkgincludedir = join_paths(includedir, 'systemd')
146systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
147usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
148systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
149userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
150systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
151systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
152systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
153systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
154udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400155udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
156udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
157catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
158kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
159factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400160bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
161testsdir = join_paths(prefixdir, 'lib/systemd/tests')
162systemdstatedir = join_paths(localstatedir, 'lib/systemd')
163catalogstatedir = join_paths(systemdstatedir, 'catalog')
164randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200165profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200166ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167
tblume75aaade2018-02-01 22:46:15 +0100168docdir = get_option('docdir')
169if docdir == ''
170 docdir = join_paths(datadir, 'doc/systemd')
171endif
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173dbuspolicydir = get_option('dbuspolicydir')
174if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178dbussessionservicedir = get_option('dbussessionservicedir')
179if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183dbussystemservicedir = get_option('dbussystemservicedir')
184if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
188pamlibdir = get_option('pamlibdir')
189if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400190 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191endif
192
193pamconfdir = get_option('pamconfdir')
194if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400195 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196endif
197
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100198memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200199status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100202conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400203conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
204conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
205conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400206conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100207
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100208conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100209
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100210conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
211conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
214conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
215conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
216conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100217conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100218conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
221conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
222conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100223conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400224conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400225conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
226conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100227conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
228conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
229conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
230conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400231conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
232conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
234conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700235conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700236conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400238conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400239conf.set_quoted('LIBDIR', libdir)
240conf.set_quoted('ROOTLIBDIR', rootlibdir)
241conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
242conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400243conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
244conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200245conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400246conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
247conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
248conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
249conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200250conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200251conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200252conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100253conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200254conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100257substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100258substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400259substs.set('exec_prefix', prefixdir)
260substs.set('libdir', libdir)
261substs.set('rootlibdir', rootlibdir)
262substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100263substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400264substs.set('bindir', bindir)
265substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266substs.set('rootlibexecdir', rootlibexecdir)
267substs.set('systemunitdir', systemunitdir)
268substs.set('userunitdir', userunitdir)
269substs.set('systempresetdir', systempresetdir)
270substs.set('userpresetdir', userpresetdir)
271substs.set('udevhwdbdir', udevhwdbdir)
272substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400273substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200274substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275substs.set('catalogdir', catalogdir)
276substs.set('tmpfilesdir', tmpfilesdir)
277substs.set('sysusersdir', sysusersdir)
278substs.set('sysctldir', sysctldir)
279substs.set('binfmtdir', binfmtdir)
280substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200281substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282substs.set('systemgeneratordir', systemgeneratordir)
283substs.set('usergeneratordir', usergeneratordir)
284substs.set('systemenvgeneratordir', systemenvgeneratordir)
285substs.set('userenvgeneratordir', userenvgeneratordir)
286substs.set('systemshutdowndir', systemshutdowndir)
287substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400288substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400289substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400290substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
291substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
292substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100293substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200294substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200295substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +0200296substs.set('BUILD_ROOT', project_build_root)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400297
298#####################################################################
299
300cc = meson.get_compiler('c')
301pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +0200302check_compilation_sh = find_program('tools/check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100303meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400304
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200305want_tests = get_option('tests')
306slow_tests = want_tests != 'false' and get_option('slow-tests')
307install_tests = get_option('install-tests')
308
James Hilliard46e63a22018-12-27 09:16:20 +0800309if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200310 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100311 cxx = meson.get_compiler('cpp')
312 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200313else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200314 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400315endif
316
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500317if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200318 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
319 if fuzzing_engine.found()
320 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
321 elif cc.has_argument('-fsanitize=fuzzer-no-link')
322 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
323 else
324 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
325 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200326elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500327 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
328endif
329
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100330# Those generate many false positives, and we do not want to change the code to
331# avoid them.
332basic_disabled_warnings = [
333 '-Wno-unused-parameter',
334 '-Wno-missing-field-initializers',
335 '-Wno-unused-result',
336 '-Wno-format-signedness',
337]
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100338
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900339possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900340 '-Werror=undef',
341 '-Wlogical-op',
342 '-Wmissing-include-dirs',
343 '-Wold-style-definition',
344 '-Wpointer-arith',
345 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-Wfloat-equal',
347 '-Wsuggest-attribute=noreturn',
348 '-Werror=missing-prototypes',
349 '-Werror=implicit-function-declaration',
350 '-Werror=missing-declarations',
351 '-Werror=return-type',
352 '-Werror=incompatible-pointer-types',
353 '-Werror=format=2',
354 '-Wstrict-prototypes',
355 '-Wredundant-decls',
356 '-Wmissing-noreturn',
357 '-Wimplicit-fallthrough=5',
358 '-Wshadow',
359 '-Wendif-labels',
360 '-Wstrict-aliasing=2',
361 '-Wwrite-strings',
362 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200363 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200364 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365 '-Wdate-time',
366 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700367
368 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100369 '-Wno-error=#warnings', # clang
370 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700371
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700372 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
373 # optimizations enabled, producing essentially false positives.
374 '-Wno-maybe-uninitialized',
375
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900376 '-ffast-math',
377 '-fno-common',
378 '-fdiagnostics-show-option',
379 '-fno-strict-aliasing',
380 '-fvisibility=hidden',
381 '-fstack-protector',
382 '-fstack-protector-strong',
383 '--param=ssp-buffer-size=4',
384]
385
386# --as-needed and --no-undefined are provided by meson by default,
387# run mesonconf to see what is enabled
388possible_link_flags = [
389 '-Wl,-z,relro',
390 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200391 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900392]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394if cc.get_id() == 'clang'
395 possible_cc_flags += [
396 '-Wno-typedef-redefinition',
397 '-Wno-gnu-variable-sized-type-not-at-end',
398 ]
399endif
400
401if get_option('buildtype') != 'debug'
402 possible_cc_flags += [
403 '-ffunction-sections',
404 '-fdata-sections',
405 ]
406
407 possible_link_flags += '-Wl,--gc-sections'
408endif
409
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100410add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900411add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900412add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900413
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800414if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415 #include <time.h>
416 #include <inttypes.h>
417 typedef uint64_t usec_t;
418 usec_t now(clockid_t clock);
419 int main(void) {
420 struct timespec now;
421 return 0;
422 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100423''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400424 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425endif
426
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100427if cxx_cmd != ''
428 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
429endif
430
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200431cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400432
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200433has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
434
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435#####################################################################
436# compilation result tests
437
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400438conf.set('_GNU_SOURCE', true)
439conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200440conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
445conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
446
447decl_headers = '''
448#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100449#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451
452foreach decl : ['char16_t',
453 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100454 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400456
457 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200458 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
459
460 if decl == 'struct statx'
461 if have
462 want_linux_stat_h = false
463 else
464 have = cc.sizeof(decl,
465 prefix : decl_headers + '#include <linux/stat.h>',
466 args : '-D_GNU_SOURCE') > 0
467 want_linux_stat_h = have
468 endif
469 endif
470
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200471 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472endforeach
473
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200474conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200477 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
480foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100482 ['gettid', '''#include <sys/types.h>
483 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100484 ['pivot_root', '''#include <stdlib.h>
485 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 #include <sys/stat.h>
488 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100490 ['renameat2', '''#include <stdio.h>
491 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400492 ['kcmp', '''#include <linux/kcmp.h>'''],
493 ['keyctl', '''#include <sys/types.h>
494 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200497 ['bpf', '''#include <sys/syscall.h>
498 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100499 ['statx', '''#include <sys/types.h>
500 #include <sys/stat.h>
501 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100502 ['explicit_bzero' , '''#include <string.h>'''],
503 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100504 ['set_mempolicy', '''#include <stdlib.h>
505 #include <unistd.h>'''],
506 ['get_mempolicy', '''#include <stdlib.h>
507 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200508 ['pidfd_send_signal', '''#include <stdlib.h>
509 #include <unistd.h>
510 #include <signal.h>
511 #include <sys/wait.h>'''],
512 ['pidfd_open', '''#include <stdlib.h>
513 #include <unistd.h>
514 #include <signal.h>
515 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100516 ['rt_sigqueueinfo', '''#include <stdlib.h>
517 #include <unistd.h>
518 #include <signal.h>
519 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521
Lennart Poettering85db59b2017-12-25 12:01:14 +0100522 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200523 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524endforeach
525
Lennart Poettering85db59b2017-12-25 12:01:14 +0100526if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200527 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200528 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400529else
530 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200531 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200532 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400533endif
534
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535#####################################################################
536
Davide Cavalca1485aac2019-02-27 11:19:07 -0500537vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
538 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100539 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100540 meson.project_version()]
541
Louis Taylord1084aa2019-01-21 21:45:36 +0000542version_h = vcs_tag(
543 input : 'src/version/version.h.in',
544 output : 'version.h',
545 command: vcs_tagger)
546
547versiondep = declare_dependency(sources: version_h)
548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400551m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400553git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100554env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100555perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556
Davide Cavalca1485aac2019-02-27 11:19:07 -0500557meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400558mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400559test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
560splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
563# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566 ['kmod', '/usr/bin/kmod' ],
567 ['kexec', '/usr/sbin/kexec' ],
568 ['sulogin', '/usr/sbin/sulogin' ],
569 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
570 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
571 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
572 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200573 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 ]
575foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 path = get_option(prog[0] + '-path')
577 if path != ''
578 message('Using @1@ for @0@'.format(prog[0], path))
579 else
580 exe = find_program(prog[0],
581 '/usr/sbin/' + prog[0],
582 '/sbin/' + prog[0],
583 required: false)
584 path = exe.found() ? exe.path() : prog[1]
585 endif
586 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
587 conf.set_quoted(name, path)
588 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589endforeach
590
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500591conf.set_quoted('TELINIT', get_option('telinit-path'))
592
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400593if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100594 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400595endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596
597############################################################
598
599gperf = find_program('gperf')
600
601gperf_test_format = '''
602#include <string.h>
603const char * in_word_set(const char *, @0@);
604@1@
605'''
606gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
607gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
608gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
609if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
613 if cc.compiles(gperf_test)
614 gperf_len_type = 'unsigned'
615 else
616 error('unable to determine gperf len type')
617 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endif
619message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620conf.set('GPERF_LEN_TYPE', gperf_len_type,
621 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622
623############################################################
624
625if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100628foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629 'linux/memfd.h',
630 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200631 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632 'valgrind/memcheck.h',
633 'valgrind/valgrind.h',
634 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200636 conf.set10('HAVE_' + header.underscorify().to_upper(),
637 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endforeach
639
640############################################################
641
Zbigniew Jędrzejewski-Szmekeef4b802020-05-07 17:30:02 +0200642fallback_hostname = get_option('fallback-hostname')
643if fallback_hostname == '' or fallback_hostname[0] == '.' or fallback_hostname[0] == '-'
644 error('Invalid fallback-hostname configuration')
645 # A more extensive test is done in test-hostname-util. Let's catch
646 # the most obvious errors here so we don't fail with an assert later.
647endif
648conf.set_quoted('FALLBACK_HOSTNAME', fallback_hostname)
649
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400650conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
651gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652
653default_hierarchy = get_option('default-hierarchy')
654conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
655 description : 'default cgroup hierarchy as string')
656if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
663
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100664default_net_naming_scheme = get_option('default-net-naming-scheme')
665conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
666
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900668if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900670 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672conf.set('TIME_EPOCH', time_epoch)
673
674system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900675if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400676 system_uid_max = run_command(
677 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800678 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
679 '/etc/login.defs').stdout().strip()
680 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900681 system_uid_max = 999
682 else
683 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800684 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400686conf.set('SYSTEM_UID_MAX', system_uid_max)
687substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900690if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400691 system_gid_max = run_command(
692 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800693 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
694 '/etc/login.defs').stdout().strip()
695 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900696 system_gid_max = 999
697 else
698 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800699 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701conf.set('SYSTEM_GID_MAX', system_gid_max)
702substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703
Yu Watanabeac093402018-05-10 16:04:16 +0900704dynamic_uid_min = get_option('dynamic-uid-min')
705dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100706conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
707conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
708substs.set('dynamicuidmin', dynamic_uid_min)
709substs.set('dynamicuidmax', dynamic_uid_max)
710
Yu Watanabeac093402018-05-10 16:04:16 +0900711container_uid_base_min = get_option('container-uid-base-min')
712container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100713conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
714conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
715substs.set('containeruidbasemin', container_uid_base_min)
716substs.set('containeruidbasemax', container_uid_base_max)
717
Lennart Poetteringafde4572017-12-05 11:00:24 +0100718nobody_user = get_option('nobody-user')
719nobody_group = get_option('nobody-group')
720
Chen Qi2484bff2018-07-23 14:53:09 +0800721if not meson.is_cross_build()
722 getent_result = run_command('getent', 'passwd', '65534')
723 if getent_result.returncode() == 0
724 name = getent_result.stdout().split(':')[0]
725 if name != nobody_user
726 warning('\n' +
727 '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) +
728 'Your build will result in an user table setup that is incompatible with the local system.')
729 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100730 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800731 id_result = run_command('id', '-u', nobody_user)
732 if id_result.returncode() == 0
733 id = id_result.stdout().to_int()
734 if id != 65534
735 warning('\n' +
736 '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) +
737 'Your build will result in an user table setup that is incompatible with the local system.')
738 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100739 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740
Chen Qi2484bff2018-07-23 14:53:09 +0800741 getent_result = run_command('getent', 'group', '65534')
742 if getent_result.returncode() == 0
743 name = getent_result.stdout().split(':')[0]
744 if name != nobody_group
745 warning('\n' +
746 '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) +
747 'Your build will result in an group table setup that is incompatible with the local system.')
748 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100749 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800750 id_result = run_command('id', '-g', nobody_group)
751 if id_result.returncode() == 0
752 id = id_result.stdout().to_int()
753 if id != 65534
754 warning('\n' +
755 '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) +
756 'Your build will result in an group table setup that is incompatible with the local system.')
757 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100758 endif
759endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900760if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900761 warning('\n' +
762 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
763 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900764endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100765
766conf.set_quoted('NOBODY_USER_NAME', nobody_user)
767conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900768substs.set('NOBODY_USER_NAME', nobody_user)
769substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100770
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771tty_gid = get_option('tty-gid')
772conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400773substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Ikey Doherty84786b82017-12-03 12:28:23 +0000775# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900776users_gid = get_option('users-gid')
777substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000778
Yu Watanabe348b4432018-05-07 18:17:35 +0900779conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
780conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781
Michael Bieblace5e312018-07-13 23:36:13 +0200782dev_kvm_mode = get_option('dev-kvm-mode')
783substs.set('DEV_KVM_MODE', dev_kvm_mode)
784conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100785group_render_mode = get_option('group-render-mode')
786substs.set('GROUP_RENDER_MODE', group_render_mode)
787conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400789kill_user_processes = get_option('default-kill-user-processes')
790conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100791conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400792substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400794dns_servers = get_option('dns-servers')
795conf.set_quoted('DNS_SERVERS', dns_servers)
796substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400798ntp_servers = get_option('ntp-servers')
799conf.set_quoted('NTP_SERVERS', ntp_servers)
800substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Dave Reisner8ca9e922018-12-28 07:38:36 -0500802default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900803if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800804 if not meson.is_cross_build()
805 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
806 default_locale = run_command(choose_default_locale_sh).stdout().strip()
807 else
808 default_locale = 'C.UTF-8'
809 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900810endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500811conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
812
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
814
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200815service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700816watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
817substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200818
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400819substs.set('SUSHELL', get_option('debug-shell'))
820substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200821conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823enable_debug_hashmap = false
824enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900825enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200826foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900827 if name == 'hashmap'
828 enable_debug_hashmap = true
829 elif name == 'mmap-cache'
830 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900831 elif name == 'siphash'
832 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900833 else
834 message('unknown debug option "@0@", ignoring'.format(name))
835 endif
836endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
838conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900839conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400840
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200841conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200842conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200843
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100844default_user_path = get_option('user-path')
845if default_user_path != ''
846 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100847 default_user_path_display = default_user_path
848else
849 # meson 0.49 fails when ?: is used in .format()
850 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100851endif
852
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100853
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854#####################################################################
855
856threads = dependency('threads')
857librt = cc.find_library('rt')
858libm = cc.find_library('m')
859libdl = cc.find_library('dl')
860libcrypt = cc.find_library('crypt')
861
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400862libcap = dependency('libcap', required : false)
863if not libcap.found()
864 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
865 libcap = cc.find_library('cap')
866endif
867
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100869 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100871want_libfdisk = get_option('fdisk')
872if want_libfdisk != 'false' and not skip_deps
873 libfdisk = dependency('fdisk',
874 required : want_libfdisk == 'true')
875 have = libfdisk.found()
876else
877 have = false
878 libfdisk = []
879endif
880conf.set10('HAVE_LIBFDISK', have)
881
Lennart Poettering70a5db52019-07-04 18:35:39 +0200882want_pwquality = get_option('pwquality')
883if want_pwquality != 'false' and not skip_deps
884 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
885 have = libpwquality.found()
886else
887 have = false
888 libpwquality = []
889endif
890conf.set10('HAVE_PWQUALITY', have)
891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000893if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400895 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903
904want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000905if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libselinux = dependency('libselinux',
907 version : '>= 2.1.9',
908 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
916want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000917if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libapparmor = dependency('libapparmor',
919 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927smack_run_label = get_option('smack-run-label')
928if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
931
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400932want_polkit = get_option('polkit')
933install_polkit = false
934install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000935if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400937
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libpolkit = dependency('polkit-gobject-1',
939 required : false)
940 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
941 message('Old polkit detected, will install pkla files')
942 install_polkit_pkla = true
943 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400946
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400947want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000948if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400949 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953 libacl = []
954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400956
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000958if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966
967want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000968if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000978if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libkmod = dependency('libkmod',
980 version : '>= 15',
981 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000990if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libpam = cc.find_library('pam', required : want_pam == 'true')
992 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libpam = []
997 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
1001want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001002if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libmicrohttpd = dependency('libmicrohttpd',
1004 version : '>= 0.9.33',
1005 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001014if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001016 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001019
1020 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1021 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001029if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libcurl = dependency('libcurl',
1031 version : '>= 7.32.0',
1032 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001041want_libidn2 = get_option('libidn2')
1042if want_libidn == 'true' and want_libidn2 == 'true'
1043 error('libidn and libidn2 cannot be requested simultaneously')
1044endif
1045
Yu Watanabe1b931392019-06-29 03:13:30 +09001046if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001047 libidn = dependency('libidn2',
1048 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = libidn.found()
1050else
1051 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001052 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001055if not have and want_libidn != 'false' and not skip_deps
1056 # libidn is used for both libidn and libidn2 objects
1057 libidn = dependency('libidn',
1058 required : want_libidn == 'true')
1059 have = libidn.found()
1060else
1061 have = false
1062endif
1063conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001066if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libiptc = dependency('libiptc',
1068 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001077if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libqrencode = dependency('libqrencode',
1079 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001088if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1090 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
1094endif
1095if not have
1096 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097 libgcrypt = []
1098 libgpg_error = []
1099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001103if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libgnutls = dependency('gnutls',
1105 version : '>= 3.1.4',
1106 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001114want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001115if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001116 libopenssl = dependency('openssl',
1117 version : '>= 1.1.0',
1118 required : want_openssl == 'true')
1119 have = libopenssl.found()
1120else
1121 have = false
1122 libopenssl = []
1123endif
1124conf.set10('HAVE_OPENSSL', have)
1125
Lennart Poettering839fddb2019-11-05 11:49:27 +01001126want_p11kit = get_option('p11kit')
1127if want_p11kit != 'false' and not skip_deps
1128 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001129 version : '>= 0.23.3',
1130 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001131 have = libp11kit.found()
1132else
1133 have = false
1134 libp11kit = []
1135endif
1136conf.set10('HAVE_P11KIT', have)
1137
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001139if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libdw = dependency('libdw',
1141 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001143else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148
1149want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001150if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libz = dependency('zlib',
1152 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159
1160want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001161if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001162 libbzip2 = cc.find_library('bz2',
1163 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170
1171want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001172if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001173 libxz = dependency('liblzma',
1174 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181
1182want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001183if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001185 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001193
Norbert Langeef5924a2020-04-12 01:09:05 +02001194want_zstd = get_option('zstd')
1195if want_zstd != 'false' and not skip_deps
1196 libzstd = dependency('libzstd',
1197 required : want_zstd == 'true',
1198 version : '>= 1.4.0')
1199 have = libzstd.found()
1200else
1201 have = false
1202 libzstd = []
1203endif
1204conf.set10('HAVE_ZSTD', have)
1205
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001206want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001207if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001208 libxkbcommon = dependency('xkbcommon',
1209 version : '>= 0.3.0',
1210 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001212else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001214 libxkbcommon = []
1215endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001216conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001217
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001218want_pcre2 = get_option('pcre2')
1219if want_pcre2 != 'false'
1220 libpcre2 = dependency('libpcre2-8',
1221 required : want_pcre2 == 'true')
1222 have = libpcre2.found()
1223else
1224 have = false
1225 libpcre2 = []
1226endif
1227conf.set10('HAVE_PCRE2', have)
1228
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001229want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001230if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001231 libglib = dependency('glib-2.0',
1232 version : '>= 2.22.0',
1233 required : want_glib == 'true')
1234 libgobject = dependency('gobject-2.0',
1235 version : '>= 2.22.0',
1236 required : want_glib == 'true')
1237 libgio = dependency('gio-2.0',
1238 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001239 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001242 libglib = []
1243 libgobject = []
1244 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001245endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001247
1248want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001249if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 libdbus = dependency('dbus-1',
1251 version : '>= 1.3.2',
1252 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001253 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001254else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001256 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001257endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001258conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001259
Yu Watanabe42303dc2017-06-18 05:22:32 +09001260default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001261if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001262 default_dnssec = 'no'
1263endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001264if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001265 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1266 default_dnssec = 'no'
1267endif
1268conf.set('DEFAULT_DNSSEC_MODE',
1269 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1270substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1271
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272dns_over_tls = get_option('dns-over-tls')
1273if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001274 if dns_over_tls == 'openssl'
1275 have_gnutls = false
1276 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001277 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001278 if dns_over_tls == 'gnutls' and not have_gnutls
1279 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1280 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001282 if dns_over_tls == 'gnutls' or have_gnutls
1283 have_openssl = false
1284 else
1285 have_openssl = conf.get('HAVE_OPENSSL') == 1
1286 if dns_over_tls != 'auto' and not have_openssl
1287 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001288 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001289 endif
1290 endif
1291 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001292else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001293 have = false
1294 have_gnutls = false
1295 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001296endif
1297conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001298conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1299conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001300
Iwan Timmerc9299be2018-06-13 20:26:24 +02001301default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001302if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001303 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001304endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001305if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001306 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 +02001307 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001308endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001309conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1310 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1311substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001312
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001313default_mdns = get_option('default-mdns')
1314conf.set('DEFAULT_MDNS_MODE',
1315 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1316substs.set('DEFAULT_MDNS_MODE', default_mdns)
1317
1318default_llmnr = get_option('default-llmnr')
1319conf.set('DEFAULT_LLMNR_MODE',
1320 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1321substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1322
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001323want_repart = get_option('repart')
1324if want_repart != 'false'
1325 have = (conf.get('HAVE_OPENSSL') == 1 and
1326 conf.get('HAVE_LIBFDISK') == 1)
1327 if want_repart == 'true' and not have
1328 error('repart support was requested, but dependencies are not available')
1329 endif
1330else
1331 have = false
1332endif
1333conf.set10('ENABLE_REPART', have)
1334
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001336if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001337 have = (conf.get('HAVE_LIBCURL') == 1 and
1338 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001339 conf.get('HAVE_XZ') == 1 and
1340 conf.get('HAVE_GCRYPT') == 1)
1341 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 error('importd support was requested, but dependencies are not available')
1343 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001344else
1345 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001347conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348
Lennart Poettering70a5db52019-07-04 18:35:39 +02001349want_homed = get_option('homed')
1350if want_homed != 'false'
1351 have = (conf.get('HAVE_OPENSSL') == 1 and
1352 conf.get('HAVE_LIBFDISK') == 1 and
1353 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1354 if want_homed == 'true' and not have
1355 error('homed support was requested, but dependencies are not available')
1356 endif
1357else
1358 have = false
1359endif
1360conf.set10('ENABLE_HOMED', have)
1361
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001362have = have and conf.get('HAVE_PAM') == 1
1363conf.set10('ENABLE_PAM_HOME', have)
1364
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001366if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001367 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1368 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001369 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1370 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001371 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001372 # config should be installed when any of the programs are built.
1373 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1374 error('remote support was requested, but dependencies are not available')
1375 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001376 have = have_deps[0] or have_deps[1]
1377else
1378 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001380conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001382foreach term : ['utmp',
1383 'hibernate',
1384 'environment-d',
1385 'binfmt',
1386 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001387 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001388 'resolve',
1389 'logind',
1390 'hostnamed',
1391 'localed',
1392 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001393 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001394 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001395 'networkd',
1396 'timedated',
1397 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001398 'firstboot',
1399 'randomseed',
1400 'backlight',
1401 'vconsole',
1402 'quotacheck',
1403 'sysusers',
1404 'tmpfiles',
1405 'hwdb',
1406 'rfkill',
1407 'ldconfig',
1408 'efi',
1409 'tpm',
1410 'ima',
1411 'smack',
1412 'gshadow',
1413 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001414 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001415 'nss-systemd']
1416 have = get_option(term)
1417 name = 'ENABLE_' + term.underscorify().to_upper()
1418 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001419endforeach
1420
Yu Watanabe08540a92018-07-18 09:25:57 +09001421foreach tuple : [['nss-mymachines', 'machined'],
1422 ['nss-resolve', 'resolve']]
1423 want = get_option(tuple[0])
1424 if want != 'false'
1425 have = get_option(tuple[1])
1426 if want == 'true' and not have
1427 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1428 endif
1429 else
1430 have = false
1431 endif
1432 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1433 conf.set10(name, have)
1434endforeach
1435
1436enable_nss = false
1437foreach term : ['ENABLE_NSS_MYHOSTNAME',
1438 'ENABLE_NSS_MYMACHINES',
1439 'ENABLE_NSS_RESOLVE',
1440 'ENABLE_NSS_SYSTEMD']
1441 if conf.get(term) == 1
1442 enable_nss = true
1443 endif
1444endforeach
1445conf.set10('ENABLE_NSS', enable_nss)
1446
Yu Watanabe348b4432018-05-07 18:17:35 +09001447conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001448
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001449tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001450fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001451
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001452conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001453
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454#####################################################################
1455
1456if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001458
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001459 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001460 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001461 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 elif efi_arch == 'x86_64'
1463 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001464 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 elif efi_arch == 'arm'
1466 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001467 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 elif efi_arch == 'aarch64'
1469 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001470 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001471 else
1472 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001473 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001474 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001476 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001478
Yu Watanabeac093402018-05-10 16:04:16 +09001479 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001480else
1481 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001483conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484
1485#####################################################################
1486
1487config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 output : 'config.h',
1489 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490
Yu Watanabe348b4432018-05-07 18:17:35 +09001491meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1492
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001494 'src/boot',
Lennart Poetteringc76dd732020-05-05 09:57:04 +02001495 'src/home',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 'src/shared',
1497 'src/systemd',
1498 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001499 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001500 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501 'src/resolve',
1502 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001503 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 'src/login',
1505 'src/udev',
1506 'src/libudev',
1507 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001508 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509 'src/libsystemd/sd-bus',
1510 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001511 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512 'src/libsystemd/sd-hwdb',
1513 'src/libsystemd/sd-id128',
1514 'src/libsystemd/sd-netlink',
1515 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001516 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001518 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519
1520add_project_arguments('-include', 'config.h', language : 'c')
1521
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001522generate_gperfs = find_program('tools/generate-gperfs.py')
1523
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524subdir('po')
1525subdir('catalog')
1526subdir('src/systemd')
1527subdir('src/basic')
1528subdir('src/libsystemd')
1529subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532
1533libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 'journal-core',
1535 libjournal_core_sources,
1536 journald_gperf_c,
1537 include_directories : includes,
1538 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539
Davide Cavalca1485aac2019-02-27 11:19:07 -05001540libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001543 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001544 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 include_directories : includes,
1546 link_args : ['-shared',
1547 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001548 link_with : [libbasic,
1549 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001550 link_whole : [libsystemd_static,
1551 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 dependencies : [threads,
1553 librt,
1554 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001555 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 liblz4],
1557 link_depends : libsystemd_sym,
1558 install : true,
1559 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560
Davide Cavalca70848ec2018-04-09 02:43:35 -07001561static_libsystemd = get_option('static-libsystemd')
1562static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1563
1564install_libsystemd_static = static_library(
1565 'systemd',
1566 libsystemd_sources,
1567 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001568 basic_sources,
1569 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001570 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001571 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001572 build_by_default : static_libsystemd != 'false',
1573 install : static_libsystemd != 'false',
1574 install_dir : rootlibdir,
1575 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1576 dependencies : [threads,
1577 librt,
1578 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001579 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001580 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001581 libcap,
1582 libblkid,
1583 libmount,
1584 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001585 libgcrypt],
1586 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1587
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001588# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001589make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1590
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591############################################################
1592
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001593# binaries that have --help and are intended for use by humans,
1594# usually, but not always, installed in /bin.
1595public_programs = []
1596
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001597subdir('src/libudev')
1598subdir('src/shared')
1599subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001600subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001601subdir('src/udev')
1602subdir('src/network')
1603
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001604subdir('src/analyze')
1605subdir('src/journal-remote')
1606subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001607subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001608subdir('src/hostname')
1609subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001610subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001611subdir('src/kernel-install')
1612subdir('src/locale')
1613subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001614subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001615subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001616subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001617subdir('src/nspawn')
1618subdir('src/resolve')
1619subdir('src/timedate')
1620subdir('src/timesync')
1621subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001622subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001623
1624subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001625subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001626subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001627subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001628
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001629############################################################
1630
1631# only static linking apart from libdl, to make sure that the
1632# module is linked to all libraries that it uses.
1633test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 'test-dlopen',
1635 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001636 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 include_directories : includes,
1638 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001639 dependencies : [libdl],
1640 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001641
Yu Watanabe08540a92018-07-18 09:25:57 +09001642foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001643 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001644 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1645 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001647 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 if condition
1649 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001650
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001652 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001653
Lennart Poettering1684c562019-07-04 18:31:11 +02001654 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1655 if tuple.length() > 2
1656 sources += tuple[2].split()
1657 endif
1658
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 nss = shared_library(
1660 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001661 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001662 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 version : '2',
1664 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001665 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1666 link_args : ['-Wl,-z,nodelete',
1667 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001668 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001669 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001670 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 libbasic],
1672 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001673 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 link_depends : sym,
1675 install : true,
1676 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001677
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 # We cannot use shared_module because it does not support version suffix.
1679 # Unfortunately shared_library insists on creating the symlink…
1680 meson.add_install_script('sh', '-c',
1681 'rm $DESTDIR@0@/libnss_@1@.so'
1682 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001683
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001684 if want_tests != 'false'
1685 test('dlopen-nss_' + module,
1686 test_dlopen,
1687 # path to dlopen must include a slash
1688 args : nss.full_path())
1689 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001691endforeach
1692
1693############################################################
1694
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001695executable(
1696 'systemd',
1697 systemd_sources,
1698 include_directories : includes,
1699 link_with : [libcore,
1700 libshared],
1701 dependencies : [versiondep,
1702 threads,
1703 librt,
1704 libseccomp,
1705 libselinux,
1706 libmount,
1707 libblkid],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001712meson.add_install_script(meson_make_symlink,
1713 join_paths(rootlibexecdir, 'systemd'),
1714 join_paths(rootsbindir, 'init'))
1715
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001716public_programs += executable(
1717 'systemd-analyze',
1718 systemd_analyze_sources,
1719 include_directories : includes,
1720 link_with : [libcore,
1721 libshared],
1722 dependencies : [versiondep,
1723 threads,
1724 librt,
1725 libseccomp,
1726 libselinux,
1727 libmount,
1728 libblkid],
1729 install_rpath : rootlibexecdir,
1730 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001732executable(
1733 'systemd-journald',
1734 systemd_journald_sources,
1735 include_directories : includes,
1736 link_with : [libjournal_core,
1737 libshared],
1738 dependencies : [threads,
1739 libxz,
1740 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001741 libselinux,
1742 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001743 install_rpath : rootlibexecdir,
1744 install : true,
1745 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001746
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001747public_programs += executable(
1748 'systemd-cat',
1749 systemd_cat_sources,
1750 include_directories : includes,
1751 link_with : [libjournal_core,
1752 libshared],
1753 dependencies : [threads],
1754 install_rpath : rootlibexecdir,
1755 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001757public_programs += executable(
1758 'journalctl',
1759 journalctl_sources,
1760 include_directories : includes,
1761 link_with : [libshared],
1762 dependencies : [threads,
1763 libqrencode,
1764 libxz,
1765 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001766 libpcre2,
1767 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001771
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001772executable(
1773 'systemd-getty-generator',
1774 'src/getty-generator/getty-generator.c',
1775 include_directories : includes,
1776 link_with : [libshared],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001781executable(
1782 'systemd-debug-generator',
1783 'src/debug-generator/debug-generator.c',
1784 include_directories : includes,
1785 link_with : [libshared],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001790executable(
1791 'systemd-run-generator',
1792 'src/run-generator/run-generator.c',
1793 include_directories : includes,
1794 link_with : [libshared],
1795 install_rpath : rootlibexecdir,
1796 install : true,
1797 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001798
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001799executable(
1800 'systemd-fstab-generator',
1801 'src/fstab-generator/fstab-generator.c',
1802 include_directories : includes,
1803 link_with : [libcore_shared,
1804 libshared],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001810 executable(
1811 '30-systemd-environment-d-generator',
1812 'src/environment-d-generator/environment-d-generator.c',
1813 include_directories : includes,
1814 link_with : [libshared],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001818
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 meson.add_install_script(meson_make_symlink,
1820 join_paths(sysconfdir, 'environment'),
1821 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822endif
1823
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001824if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001825 executable(
1826 'systemd-hibernate-resume-generator',
1827 'src/hibernate-resume/hibernate-resume-generator.c',
1828 include_directories : includes,
1829 link_with : [libshared],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001833
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001834 executable(
1835 'systemd-hibernate-resume',
1836 'src/hibernate-resume/hibernate-resume.c',
1837 include_directories : includes,
1838 link_with : [libshared],
1839 install_rpath : rootlibexecdir,
1840 install : true,
1841 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842endif
1843
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001844if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001845 executable(
1846 'systemd-gpt-auto-generator',
1847 'src/gpt-auto-generator/gpt-auto-generator.c',
1848 'src/shared/blkid-util.h',
1849 include_directories : includes,
1850 link_with : [libshared],
1851 dependencies : libblkid,
1852 install_rpath : rootlibexecdir,
1853 install : true,
1854 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001856 public_programs += executable(
1857 'systemd-dissect',
1858 'src/dissect/dissect.c',
1859 include_directories : includes,
1860 link_with : [libshared],
1861 install_rpath : rootlibexecdir,
1862 install : true,
1863 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001866if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001867 executable(
1868 'systemd-resolved',
1869 systemd_resolved_sources,
1870 include_directories : includes,
1871 link_with : [libshared,
1872 libbasic_gcrypt,
1873 libsystemd_resolve_core],
1874 dependencies : systemd_resolved_dependencies,
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001879 public_programs += executable(
1880 'resolvectl',
1881 resolvectl_sources,
1882 include_directories : includes,
1883 link_with : [libshared,
1884 libbasic_gcrypt,
1885 libsystemd_resolve_core],
1886 dependencies : [threads,
1887 libgpg_error,
1888 libm,
1889 libidn],
1890 install_rpath : rootlibexecdir,
1891 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001892
1893 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001894 join_paths(bindir, 'resolvectl'),
1895 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001896
1897 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001898 join_paths(bindir, 'resolvectl'),
1899 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900endif
1901
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001902if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001903 executable(
1904 'systemd-logind',
1905 systemd_logind_sources,
1906 include_directories : includes,
1907 link_with : [liblogind_core,
1908 libshared],
1909 dependencies : [threads,
1910 libacl],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001915 public_programs += executable(
1916 'loginctl',
1917 loginctl_sources,
1918 include_directories : includes,
1919 link_with : [libshared],
1920 dependencies : [threads,
1921 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001922 libxz,
1923 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001928 public_programs += executable(
1929 'systemd-inhibit',
1930 'src/login/inhibit.c',
1931 include_directories : includes,
1932 link_with : [libshared],
1933 install_rpath : rootlibexecdir,
1934 install : true,
1935 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001936
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001937 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001938 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 pam_systemd = shared_library(
1940 'pam_systemd',
1941 pam_systemd_c,
1942 name_prefix : '',
1943 include_directories : includes,
1944 link_args : ['-shared',
1945 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001946 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 libshared_static],
1948 dependencies : [threads,
1949 libpam,
1950 libpam_misc],
1951 link_depends : pam_systemd_sym,
1952 install : true,
1953 install_dir : pamlibdir)
1954
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001955 if want_tests != 'false'
1956 test('dlopen-pam_systemd',
1957 test_dlopen,
1958 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001959 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001960 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001963 executable(
1964 'systemd-user-runtime-dir',
1965 user_runtime_dir_sources,
1966 include_directories : includes,
1967 link_with : [libshared],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001971endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001972
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001973if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001974 executable(
1975 'systemd-user-sessions',
1976 'src/user-sessions/user-sessions.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982endif
1983
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001984if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001985 public_programs += executable(
1986 'bootctl',
1987 'src/boot/bootctl.c',
1988 include_directories : includes,
1989 link_with : [libshared],
1990 dependencies : [libblkid],
1991 install_rpath : rootlibexecdir,
1992 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02001993
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001994 public_programs += executable(
1995 'systemd-bless-boot',
1996 'src/boot/bless-boot.c',
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [libblkid],
2000 install_rpath : rootlibexecdir,
2001 install : true,
2002 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002003
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002004 executable(
2005 'systemd-bless-boot-generator',
2006 'src/boot/bless-boot-generator.c',
2007 include_directories : includes,
2008 link_with : [libshared],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012endif
2013
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002014executable(
2015 'systemd-boot-check-no-failures',
2016 'src/boot/boot-check-no-failures.c',
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [libblkid],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002023
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002024public_programs += executable(
2025 'systemd-socket-activate',
2026 'src/activate/activate.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [threads],
2030 install_rpath : rootlibexecdir,
2031 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002032
2033if get_option('link-systemctl-shared')
2034 systemctl_link_with = [libshared]
2035else
2036 systemctl_link_with = [libsystemd_static,
2037 libshared_static,
2038 libjournal_client,
2039 libbasic_gcrypt]
2040endif
2041
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002042public_programs += executable(
2043 'systemctl',
2044 'src/systemctl/systemctl.c',
2045 'src/systemctl/sysv-compat.h',
2046 'src/systemctl/sysv-compat.c',
2047 include_directories : includes,
2048 link_with : systemctl_link_with,
2049 dependencies : [threads,
2050 libcap,
2051 libselinux,
2052 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002053 liblz4,
2054 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002055 install_rpath : rootlibexecdir,
2056 install : true,
2057 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002058
Lennart Poettering61d05782018-04-16 21:41:40 +02002059if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002060 executable(
2061 'systemd-portabled',
2062 systemd_portabled_sources,
2063 include_directories : includes,
2064 link_with : [libshared],
2065 dependencies : [threads],
2066 install_rpath : rootlibexecdir,
2067 install : true,
2068 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002069
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002070 public_programs += executable(
2071 'portablectl',
2072 'src/portable/portablectl.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 dependencies : [threads],
2076 install_rpath : rootlibexecdir,
2077 install : true,
2078 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002079endif
2080
Lennart Poetteringd093b622019-07-04 18:33:30 +02002081if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002082 executable(
2083 'systemd-userwork',
2084 systemd_userwork_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 dependencies : [threads],
2088 install_rpath : rootlibexecdir,
2089 install : true,
2090 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002091
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002092 executable(
2093 'systemd-userdbd',
2094 systemd_userdbd_sources,
2095 include_directories : includes,
2096 link_with : [libshared],
2097 dependencies : [threads],
2098 install_rpath : rootlibexecdir,
2099 install : true,
2100 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002101
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002102 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002103 'userdbctl',
2104 userdbctl_sources,
2105 include_directories : includes,
2106 link_with : [libshared],
2107 dependencies : [threads],
2108 install_rpath : rootlibexecdir,
2109 install : true,
2110 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002111endif
2112
Lennart Poettering70a5db52019-07-04 18:35:39 +02002113if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002114 executable(
2115 'systemd-homework',
2116 systemd_homework_sources,
2117 include_directories : includes,
2118 link_with : [libshared],
2119 dependencies : [threads,
2120 libcryptsetup,
2121 libblkid,
2122 libcrypt,
2123 libopenssl,
2124 libfdisk,
2125 libp11kit],
2126 install_rpath : rootlibexecdir,
2127 install : true,
2128 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002129
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002130 executable(
2131 'systemd-homed',
2132 systemd_homed_sources,
2133 include_directories : includes,
2134 link_with : [libshared],
2135 dependencies : [threads,
2136 libcrypt,
2137 libopenssl,
2138 libpwquality],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002142
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002143 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002144 'homectl',
2145 homectl_sources,
2146 include_directories : includes,
2147 link_with : [libshared],
2148 dependencies : [threads,
2149 libcrypt,
2150 libopenssl,
2151 libp11kit,
2152 libpwquality],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002156
2157 if conf.get('HAVE_PAM') == 1
2158 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2159 pam_systemd = shared_library(
2160 'pam_systemd_home',
2161 pam_systemd_home_c,
2162 name_prefix : '',
2163 include_directories : includes,
2164 link_args : ['-shared',
2165 '-Wl,--version-script=' + version_script_arg],
2166 link_with : [libsystemd_static,
2167 libshared_static],
2168 dependencies : [threads,
2169 libpam,
2170 libpam_misc,
2171 libcrypt],
2172 link_depends : pam_systemd_home_sym,
2173 install : true,
2174 install_dir : pamlibdir)
2175 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002176endif
2177
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002178foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2179 meson.add_install_script(meson_make_symlink,
2180 join_paths(rootbindir, 'systemctl'),
2181 join_paths(rootsbindir, alias))
2182endforeach
2183
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002184if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002185 executable(
2186 'systemd-backlight',
2187 'src/backlight/backlight.c',
2188 include_directories : includes,
2189 link_with : [libshared],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193endif
2194
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002195if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002196 executable(
2197 'systemd-rfkill',
2198 'src/rfkill/rfkill.c',
2199 include_directories : includes,
2200 link_with : [libshared],
2201 install_rpath : rootlibexecdir,
2202 install : true,
2203 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204endif
2205
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002206executable(
2207 'systemd-system-update-generator',
2208 'src/system-update-generator/system-update-generator.c',
2209 include_directories : includes,
2210 link_with : [libshared],
2211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002215if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002216 systemd_cryptsetup_sources = files('''
2217 src/cryptsetup/cryptsetup.c
2218 src/cryptsetup/cryptsetup-pkcs11.h
2219'''.split())
2220
2221 if conf.get('HAVE_P11KIT') == 1
2222 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2223 endif
2224
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002225 executable(
2226 'systemd-cryptsetup',
2227 systemd_cryptsetup_sources,
2228 include_directories : includes,
2229 link_with : [libshared],
2230 dependencies : [libcryptsetup,
2231 libp11kit],
2232 install_rpath : rootlibexecdir,
2233 install : true,
2234 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002236 executable(
2237 'systemd-cryptsetup-generator',
2238 'src/cryptsetup/cryptsetup-generator.c',
2239 include_directories : includes,
2240 link_with : [libshared],
2241 dependencies : [libcryptsetup],
2242 install_rpath : rootlibexecdir,
2243 install : true,
2244 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002246 executable(
2247 'systemd-veritysetup',
2248 'src/veritysetup/veritysetup.c',
2249 include_directories : includes,
2250 link_with : [libshared],
2251 dependencies : [libcryptsetup],
2252 install_rpath : rootlibexecdir,
2253 install : true,
2254 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002256 executable(
2257 'systemd-veritysetup-generator',
2258 'src/veritysetup/veritysetup-generator.c',
2259 include_directories : includes,
2260 link_with : [libshared],
2261 dependencies : [libcryptsetup],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265endif
2266
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002267if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002268 executable(
2269 'systemd-sysv-generator',
2270 'src/sysv-generator/sysv-generator.c',
2271 include_directories : includes,
2272 link_with : [libshared],
2273 install_rpath : rootlibexecdir,
2274 install : true,
2275 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002277 executable(
2278 'systemd-rc-local-generator',
2279 'src/rc-local-generator/rc-local-generator.c',
2280 include_directories : includes,
2281 link_with : [libshared],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285endif
2286
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002287if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002288 executable(
2289 'systemd-hostnamed',
2290 'src/hostname/hostnamed.c',
2291 include_directories : includes,
2292 link_with : [libshared],
2293 install_rpath : rootlibexecdir,
2294 install : true,
2295 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002296
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002297 public_programs += executable(
2298 'hostnamectl',
2299 'src/hostname/hostnamectl.c',
2300 include_directories : includes,
2301 link_with : [libshared],
2302 install_rpath : rootlibexecdir,
2303 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304endif
2305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_LOCALED') == 1
2307 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 # logind will load libxkbcommon.so dynamically on its own
2309 deps = [libdl]
2310 else
2311 deps = []
2312 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002313
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002314 executable(
2315 'systemd-localed',
2316 systemd_localed_sources,
2317 include_directories : includes,
2318 link_with : [libshared],
2319 dependencies : deps,
2320 install_rpath : rootlibexecdir,
2321 install : true,
2322 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002324 public_programs += executable(
2325 'localectl',
2326 localectl_sources,
2327 include_directories : includes,
2328 link_with : [libshared],
2329 install_rpath : rootlibexecdir,
2330 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331endif
2332
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002333if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002334 executable(
2335 'systemd-timedated',
2336 'src/timedate/timedated.c',
2337 include_directories : includes,
2338 link_with : [libshared],
2339 install_rpath : rootlibexecdir,
2340 install : true,
2341 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002342endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002343
Yu Watanabe6129ec82018-05-03 18:07:43 +09002344if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002345 public_programs += executable(
2346 'timedatectl',
2347 'src/timedate/timedatectl.c',
2348 include_directories : includes,
2349 install_rpath : rootlibexecdir,
2350 link_with : [libshared],
2351 dependencies : [libm],
2352 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353endif
2354
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002355if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002356 if get_option('link-timesyncd-shared')
2357 timesyncd_link_with = [libshared]
2358 else
2359 timesyncd_link_with = [libsystemd_static,
2360 libshared_static,
2361 libjournal_client,
2362 libbasic_gcrypt]
2363 endif
2364
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002365 executable(
2366 'systemd-timesyncd',
2367 systemd_timesyncd_sources,
2368 include_directories : includes,
2369 link_with : [timesyncd_link_with],
2370 dependencies : [threads,
2371 libm],
2372 install_rpath : rootlibexecdir,
2373 install : true,
2374 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002375
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002376 executable(
2377 'systemd-time-wait-sync',
2378 'src/time-wait-sync/time-wait-sync.c',
2379 include_directories : includes,
2380 link_with : [timesyncd_link_with],
2381 install_rpath : rootlibexecdir,
2382 install : true,
2383 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384endif
2385
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002386if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002387 executable(
2388 'systemd-machined',
2389 systemd_machined_sources,
2390 include_directories : includes,
2391 link_with : [libmachine_core,
2392 libshared],
2393 install_rpath : rootlibexecdir,
2394 install : true,
2395 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002396
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002397 public_programs += executable(
2398 'machinectl',
2399 'src/machine/machinectl.c',
2400 include_directories : includes,
2401 link_with : [libshared],
2402 dependencies : [threads,
2403 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002404 liblz4,
2405 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002406 install_rpath : rootlibexecdir,
2407 install : true,
2408 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409endif
2410
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002411if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002412 executable(
2413 'systemd-importd',
2414 systemd_importd_sources,
2415 include_directories : includes,
2416 link_with : [libshared],
2417 dependencies : [threads],
2418 install_rpath : rootlibexecdir,
2419 install : true,
2420 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002422 systemd_pull = executable(
2423 'systemd-pull',
2424 systemd_pull_sources,
2425 include_directories : includes,
2426 link_with : [libshared],
2427 dependencies : [versiondep,
2428 libcurl,
2429 libz,
2430 libbzip2,
2431 libxz,
2432 libgcrypt],
2433 install_rpath : rootlibexecdir,
2434 install : true,
2435 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002437 systemd_import = executable(
2438 'systemd-import',
2439 systemd_import_sources,
2440 include_directories : includes,
2441 link_with : [libshared],
2442 dependencies : [libcurl,
2443 libz,
2444 libbzip2,
2445 libxz],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002450 systemd_import_fs = executable(
2451 'systemd-import-fs',
2452 systemd_import_fs_sources,
2453 include_directories : includes,
2454 link_with : [libshared],
2455 install_rpath : rootlibexecdir,
2456 install : true,
2457 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002458
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002459 systemd_export = executable(
2460 'systemd-export',
2461 systemd_export_sources,
2462 include_directories : includes,
2463 link_with : [libshared],
2464 dependencies : [libcurl,
2465 libz,
2466 libbzip2,
2467 libxz],
2468 install_rpath : rootlibexecdir,
2469 install : true,
2470 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002471
2472 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473endif
2474
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002475if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002476 public_programs += executable(
2477 'systemd-journal-upload',
2478 systemd_journal_upload_sources,
2479 include_directories : includes,
2480 link_with : [libshared],
2481 dependencies : [versiondep,
2482 threads,
2483 libcurl,
2484 libgnutls,
2485 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002486 liblz4,
2487 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002491endif
2492
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002493if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002494 public_programs += executable(
2495 'systemd-journal-remote',
2496 systemd_journal_remote_sources,
2497 include_directories : includes,
2498 link_with : [libshared,
2499 libsystemd_journal_remote],
2500 dependencies : [threads,
2501 libmicrohttpd,
2502 libgnutls,
2503 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002504 liblz4,
2505 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002506 install_rpath : rootlibexecdir,
2507 install : true,
2508 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002510 public_programs += executable(
2511 'systemd-journal-gatewayd',
2512 systemd_journal_gatewayd_sources,
2513 include_directories : includes,
2514 link_with : [libshared],
2515 dependencies : [threads,
2516 libmicrohttpd,
2517 libgnutls,
2518 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002519 liblz4,
2520 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002521 install_rpath : rootlibexecdir,
2522 install : true,
2523 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524endif
2525
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002526if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002527 executable(
2528 'systemd-coredump',
2529 systemd_coredump_sources,
2530 include_directories : includes,
2531 link_with : [libshared],
2532 dependencies : [threads,
2533 libacl,
2534 libdw,
2535 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002536 liblz4,
2537 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002538 install_rpath : rootlibexecdir,
2539 install : true,
2540 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002541
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002542 public_programs += executable(
2543 'coredumpctl',
2544 coredumpctl_sources,
2545 include_directories : includes,
2546 link_with : [libshared],
2547 dependencies : [threads,
2548 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002549 liblz4,
2550 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002551 install_rpath : rootlibexecdir,
2552 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553endif
2554
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002555if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002556 executable(
2557 'systemd-pstore',
2558 systemd_pstore_sources,
2559 include_directories : includes,
2560 link_with : [libshared],
2561 dependencies : [threads,
2562 libacl,
2563 libdw,
2564 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002565 liblz4,
2566 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002567 install_rpath : rootlibexecdir,
2568 install : true,
2569 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002570endif
2571
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002572if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002573 public_programs += executable(
2574 'systemd-binfmt',
2575 'src/binfmt/binfmt.c',
2576 include_directories : includes,
2577 link_with : [libshared],
2578 install_rpath : rootlibexecdir,
2579 install : true,
2580 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002581
2582 meson.add_install_script('sh', '-c',
2583 mkdir_p.format(binfmtdir))
2584 meson.add_install_script('sh', '-c',
2585 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2586endif
2587
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002588if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002589 exe = executable(
2590 'systemd-repart',
2591 systemd_repart_sources,
2592 include_directories : includes,
2593 link_with : [libshared],
2594 dependencies : [threads,
2595 libcryptsetup,
2596 libblkid,
2597 libfdisk,
2598 libopenssl],
2599 install_rpath : rootlibexecdir,
2600 install : true,
2601 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002602
2603 if want_tests != 'false'
2604 test('test-repart',
2605 test_repart_sh,
2606 args : exe.full_path())
2607 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002608endif
2609
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002610if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002611 executable(
2612 'systemd-vconsole-setup',
2613 'src/vconsole/vconsole-setup.c',
2614 include_directories : includes,
2615 link_with : [libshared],
2616 install_rpath : rootlibexecdir,
2617 install : true,
2618 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002619endif
2620
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002621if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002622 executable(
2623 'systemd-random-seed',
2624 'src/random-seed/random-seed.c',
2625 include_directories : includes,
2626 link_with : [libshared],
2627 install_rpath : rootlibexecdir,
2628 install : true,
2629 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002630endif
2631
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002632if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002633 executable(
2634 'systemd-firstboot',
2635 'src/firstboot/firstboot.c',
2636 include_directories : includes,
2637 link_with : [libshared],
2638 dependencies : [libcrypt],
2639 install_rpath : rootlibexecdir,
2640 install : true,
2641 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642endif
2643
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002644executable(
2645 'systemd-remount-fs',
2646 'src/remount-fs/remount-fs.c',
2647 include_directories : includes,
2648 link_with : [libcore_shared,
2649 libshared],
2650 install_rpath : rootlibexecdir,
2651 install : true,
2652 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002653
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002654executable(
2655 'systemd-machine-id-setup',
2656 'src/machine-id-setup/machine-id-setup-main.c',
2657 include_directories : includes,
2658 link_with : [libcore_shared,
2659 libshared],
2660 install_rpath : rootlibexecdir,
2661 install : true,
2662 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002663
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002664executable(
2665 'systemd-fsck',
2666 'src/fsck/fsck.c',
2667 include_directories : includes,
2668 link_with : [libshared],
2669 install_rpath : rootlibexecdir,
2670 install : true,
2671 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002672
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002673executable('systemd-growfs',
2674 'src/partition/growfs.c',
2675 include_directories : includes,
2676 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002677 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002678 install_rpath : rootlibexecdir,
2679 install : true,
2680 install_dir : rootlibexecdir)
2681
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002682executable(
2683 'systemd-makefs',
2684 'src/partition/makefs.c',
2685 include_directories : includes,
2686 link_with : [libshared],
2687 install_rpath : rootlibexecdir,
2688 install : true,
2689 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002690
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002691executable(
2692 'systemd-sleep',
2693 'src/sleep/sleep.c',
2694 include_directories : includes,
2695 link_with : [libshared],
2696 install_rpath : rootlibexecdir,
2697 install : true,
2698 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002699
Yu Watanabed25e1272019-01-03 02:32:57 +09002700install_data('src/sleep/sleep.conf',
2701 install_dir : pkgsysconfdir)
2702
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002703public_programs += executable(
2704 'systemd-sysctl',
2705 'src/sysctl/sysctl.c',
2706 include_directories : includes,
2707 link_with : [libshared],
2708 install_rpath : rootlibexecdir,
2709 install : true,
2710 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002711
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002712executable(
2713 'systemd-ac-power',
2714 'src/ac-power/ac-power.c',
2715 include_directories : includes,
2716 link_with : [libshared],
2717 install_rpath : rootlibexecdir,
2718 install : true,
2719 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002720
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002721public_programs += executable(
2722 'systemd-detect-virt',
2723 'src/detect-virt/detect-virt.c',
2724 include_directories : includes,
2725 link_with : [libshared],
2726 install_rpath : rootlibexecdir,
2727 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002729public_programs += executable(
2730 'systemd-delta',
2731 'src/delta/delta.c',
2732 include_directories : includes,
2733 link_with : [libshared],
2734 install_rpath : rootlibexecdir,
2735 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002736
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002737public_programs += executable(
2738 'systemd-escape',
2739 'src/escape/escape.c',
2740 include_directories : includes,
2741 link_with : [libshared],
2742 install_rpath : rootlibexecdir,
2743 install : true,
2744 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002745
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002746public_programs += executable(
2747 'systemd-notify',
2748 'src/notify/notify.c',
2749 include_directories : includes,
2750 link_with : [libshared],
2751 install_rpath : rootlibexecdir,
2752 install : true,
2753 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002754
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002755executable(
2756 'systemd-volatile-root',
2757 'src/volatile-root/volatile-root.c',
2758 include_directories : includes,
2759 link_with : [libshared],
2760 install_rpath : rootlibexecdir,
2761 install : true,
2762 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002763
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002764executable(
2765 'systemd-cgroups-agent',
2766 'src/cgroups-agent/cgroups-agent.c',
2767 include_directories : includes,
2768 link_with : [libshared],
2769 install_rpath : rootlibexecdir,
2770 install : true,
2771 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002772
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002773public_programs += executable(
2774 'systemd-id128',
2775 'src/id128/id128.c',
2776 include_directories : includes,
2777 link_with : [libshared],
2778 install_rpath : rootlibexecdir,
2779 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002780
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002781public_programs += executable(
2782 'systemd-path',
2783 'src/path/path.c',
2784 include_directories : includes,
2785 link_with : [libshared],
2786 install_rpath : rootlibexecdir,
2787 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002788
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002789public_programs += executable(
2790 'systemd-ask-password',
2791 'src/ask-password/ask-password.c',
2792 include_directories : includes,
2793 link_with : [libshared],
2794 install_rpath : rootlibexecdir,
2795 install : true,
2796 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002797
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002798executable(
2799 'systemd-reply-password',
2800 'src/reply-password/reply-password.c',
2801 include_directories : includes,
2802 link_with : [libshared],
2803 install_rpath : rootlibexecdir,
2804 install : true,
2805 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002806
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002807public_programs += executable(
2808 'systemd-tty-ask-password-agent',
2809 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2810 include_directories : includes,
2811 link_with : [libshared],
2812 install_rpath : rootlibexecdir,
2813 install : true,
2814 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002815
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002816public_programs += executable(
2817 'systemd-cgls',
2818 'src/cgls/cgls.c',
2819 include_directories : includes,
2820 link_with : [libshared],
2821 install_rpath : rootlibexecdir,
2822 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002824public_programs += executable(
2825 'systemd-cgtop',
2826 'src/cgtop/cgtop.c',
2827 include_directories : includes,
2828 link_with : [libshared],
2829 install_rpath : rootlibexecdir,
2830 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002832executable(
2833 'systemd-initctl',
2834 'src/initctl/initctl.c',
2835 include_directories : includes,
2836 link_with : [libshared],
2837 install_rpath : rootlibexecdir,
2838 install : true,
2839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002840
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002841public_programs += executable(
2842 'systemd-mount',
2843 'src/mount/mount-tool.c',
2844 include_directories : includes,
2845 link_with : [libshared],
2846 dependencies: [libmount],
2847 install_rpath : rootlibexecdir,
2848 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002849
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002850meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002851 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002852
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002853public_programs += executable(
2854 'systemd-run',
2855 'src/run/run.c',
2856 include_directories : includes,
2857 link_with : [libshared],
2858 install_rpath : rootlibexecdir,
2859 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002860
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002861public_programs += executable(
2862 'systemd-stdio-bridge',
2863 'src/stdio-bridge/stdio-bridge.c',
2864 include_directories : includes,
2865 link_with : [libshared],
2866 dependencies : [versiondep],
2867 install_rpath : rootlibexecdir,
2868 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002869
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002870public_programs += executable(
2871 'busctl',
2872 'src/busctl/busctl.c',
2873 'src/busctl/busctl-introspect.c',
2874 'src/busctl/busctl-introspect.h',
2875 include_directories : includes,
2876 link_with : [libshared],
2877 install_rpath : rootlibexecdir,
2878 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002879
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002880if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002881 public_programs += executable(
2882 'systemd-sysusers',
2883 'src/sysusers/sysusers.c',
2884 include_directories : includes,
2885 link_with : [libshared],
2886 install_rpath : rootlibexecdir,
2887 install : true,
2888 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002889endif
2890
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002891if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002892 exe = executable(
2893 'systemd-tmpfiles',
2894 'src/tmpfiles/tmpfiles.c',
2895 include_directories : includes,
2896 link_with : [libshared],
2897 dependencies : [libacl],
2898 install_rpath : rootlibexecdir,
2899 install : true,
2900 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002901 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002902
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002903 if want_tests != 'false'
2904 test('test-systemd-tmpfiles',
2905 test_systemd_tmpfiles_py,
2906 # https://github.com/mesonbuild/meson/issues/2681
2907 args : exe.full_path())
2908 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909endif
2910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002911if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002912 public_programs += executable(
2913 'systemd-hwdb',
2914 'src/hwdb/hwdb.c',
2915 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2916 include_directories : includes,
2917 link_with : [libudev_static],
2918 install_rpath : udev_rpath,
2919 install : true,
2920 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002921endif
2922
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002923if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002924 executable(
2925 'systemd-quotacheck',
2926 'src/quotacheck/quotacheck.c',
2927 include_directories : includes,
2928 link_with : [libshared],
2929 install_rpath : rootlibexecdir,
2930 install : true,
2931 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932endif
2933
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002934public_programs += executable(
2935 'systemd-socket-proxyd',
2936 'src/socket-proxy/socket-proxyd.c',
2937 include_directories : includes,
2938 link_with : [libshared],
2939 dependencies : [threads],
2940 install_rpath : rootlibexecdir,
2941 install : true,
2942 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002943
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002944public_programs += executable(
2945 'systemd-udevd',
2946 systemd_udevd_sources,
2947 include_directories : includes,
2948 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2949 link_with : [libudev_core,
2950 libsystemd_network,
2951 libudev_static],
2952 dependencies : [versiondep,
2953 threads,
2954 libkmod,
2955 libidn,
2956 libacl,
2957 libblkid],
2958 install_rpath : udev_rpath,
2959 install : true,
2960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002961
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002962public_programs += executable(
2963 'udevadm',
2964 udevadm_sources,
2965 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2966 include_directories : includes,
2967 link_with : [libudev_core,
2968 libsystemd_network,
2969 libudev_static],
2970 dependencies : [versiondep,
2971 threads,
2972 libkmod,
2973 libidn,
2974 libacl,
2975 libblkid],
2976 install_rpath : udev_rpath,
2977 install : true,
2978 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002979
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002980executable(
2981 'systemd-shutdown',
2982 systemd_shutdown_sources,
2983 include_directories : includes,
2984 link_with : [libcore_shared,
2985 libshared],
2986 dependencies : [libmount],
2987 install_rpath : rootlibexecdir,
2988 install : true,
2989 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002990
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002991executable(
2992 'systemd-update-done',
2993 'src/update-done/update-done.c',
2994 include_directories : includes,
2995 link_with : [libshared],
2996 install_rpath : rootlibexecdir,
2997 install : true,
2998 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002999
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003000executable(
3001 'systemd-update-utmp',
3002 'src/update-utmp/update-utmp.c',
3003 include_directories : includes,
3004 link_with : [libshared],
3005 dependencies : [libaudit],
3006 install_rpath : rootlibexecdir,
3007 install : true,
3008 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003010if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003011 executable(
3012 'systemd-modules-load',
3013 'src/modules-load/modules-load.c',
3014 include_directories : includes,
3015 link_with : [libshared],
3016 dependencies : [libkmod],
3017 install_rpath : rootlibexecdir,
3018 install : true,
3019 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003020
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003021 meson.add_install_script('sh', '-c',
3022 mkdir_p.format(modulesloaddir))
3023 meson.add_install_script('sh', '-c',
3024 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003025endif
3026
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003027public_programs += executable(
3028 'systemd-nspawn',
3029 systemd_nspawn_sources,
3030 include_directories : includes,
3031 link_with : [libcore_shared,
3032 libnspawn_core,
3033 libshared],
3034 dependencies : [libblkid,
3035 libseccomp],
3036 install_rpath : rootlibexecdir,
3037 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003039if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003040 executable(
3041 'systemd-networkd',
3042 systemd_networkd_sources,
3043 include_directories : network_include_dir,
3044 link_with : [libnetworkd_core,
3045 libsystemd_network,
3046 libudev_static,
3047 networkd_link_with],
3048 dependencies : [threads],
3049 install_rpath : rootlibexecdir,
3050 install : true,
3051 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003052
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003053 executable(
3054 'systemd-networkd-wait-online',
3055 systemd_networkd_wait_online_sources,
3056 include_directories : includes,
3057 link_with : [libnetworkd_core,
3058 networkd_link_with],
3059 install_rpath : rootlibexecdir,
3060 install : true,
3061 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003062
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003063 public_programs += executable(
3064 'networkctl',
3065 networkctl_sources,
3066 include_directories : includes,
3067 link_with : [libsystemd_network,
3068 networkd_link_with],
3069 install_rpath : rootlibexecdir,
3070 install : true,
3071 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003072
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003073 exe = executable(
3074 'systemd-network-generator',
3075 network_generator_sources,
3076 include_directories : includes,
3077 link_with : [networkd_link_with],
3078 install_rpath : rootlibexecdir,
3079 install : true,
3080 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003081
3082 if want_tests != 'false'
3083 test('test-network-generator-conversion',
3084 test_network_generator_conversion_sh,
3085 # https://github.com/mesonbuild/meson/issues/2681
3086 args : exe.full_path())
3087 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003088endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003089
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003090executable(
3091 'systemd-sulogin-shell',
3092 ['src/sulogin-shell/sulogin-shell.c'],
3093 include_directories : includes,
3094 link_with : [libshared],
3095 install_rpath : rootlibexecdir,
3096 install : true,
3097 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003098
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003099############################################################
3100
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003101custom_target(
3102 'systemd-runtest.env',
3103 output : 'systemd-runtest.env',
3104 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003105 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003106 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003107 '} >@OUTPUT@'],
3108 build_by_default : true)
3109
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003110foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003111 sources = tuple[0]
3112 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3113 dependencies = tuple[2]
3114 condition = tuple.length() >= 4 ? tuple[3] : ''
3115 type = tuple.length() >= 5 ? tuple[4] : ''
3116 defs = tuple.length() >= 6 ? tuple[5] : []
3117 incs = tuple.length() >= 7 ? tuple[6] : includes
3118 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003119
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003120 name = sources[0].split('/')[-1].split('.')[0]
3121 if type.startswith('timeout=')
3122 timeout = type.split('=')[1].to_int()
3123 type = ''
3124 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003125
3126 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003127 exe = executable(
3128 name,
3129 sources,
3130 include_directories : incs,
3131 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003132 dependencies : [versiondep,
3133 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003134 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003135 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003136 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003137 install : install_tests,
3138 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003139
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003140 if type == 'manual'
3141 message('@0@ is a manual test'.format(name))
3142 elif type == 'unsafe' and want_tests != 'unsafe'
3143 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003144 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003145 test(name, exe,
3146 env : test_env,
3147 timeout : timeout)
3148 endif
3149 else
3150 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3151 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003152endforeach
3153
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003154exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003155 'test-libsystemd-sym',
3156 test_libsystemd_sym_c,
3157 include_directories : includes,
3158 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003159 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003160 install : install_tests,
3161 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003162if want_tests != 'false'
3163 test('test-libsystemd-sym', exe)
3164endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003165
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003166exe = executable(
3167 'test-libsystemd-static-sym',
3168 test_libsystemd_sym_c,
3169 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003170 link_with : [install_libsystemd_static],
3171 dependencies : [threads], # threads is already included in dependencies on the library,
3172 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003173 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003174 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003175 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003176if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003177 test('test-libsystemd-static-sym', exe)
3178endif
3179
3180exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003181 'test-libudev-sym',
3182 test_libudev_sym_c,
3183 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003184 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003185 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003186 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003187 install : install_tests,
3188 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003189if want_tests != 'false'
3190 test('test-libudev-sym', exe)
3191endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003192
3193exe = executable(
3194 'test-libudev-static-sym',
3195 test_libudev_sym_c,
3196 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003197 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003198 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003199 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003200 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003201 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003202if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003203 test('test-libudev-static-sym', exe)
3204endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003205
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003206############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003207
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003208fuzzer_exes = []
3209
Michael Olbrich59967402018-11-11 11:27:35 +01003210if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003211 foreach tuple : fuzzers
3212 sources = tuple[0]
3213 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3214 dependencies = tuple[2]
3215 defs = tuple.length() >= 4 ? tuple[3] : []
3216 incs = tuple.length() >= 5 ? tuple[4] : includes
3217 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003218
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003219 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003220 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003221 elif want_libfuzzer
3222 if fuzzing_engine.found()
3223 dependencies += fuzzing_engine
3224 else
3225 link_args += ['-fsanitize=fuzzer']
3226 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003227 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003228 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003229 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003230
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003231 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003232
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003233 fuzzer_exes += executable(
3234 name,
3235 sources,
3236 include_directories : [incs, include_directories('src/fuzz')],
3237 link_with : link_with,
3238 dependencies : dependencies,
3239 c_args : defs,
3240 link_args: link_args,
3241 install : false)
3242 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003243endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003244
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003245run_target(
3246 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003247 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003248 command : ['true'])
3249
3250############################################################
3251
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003252make_directive_index_py = find_program('tools/make-directive-index.py')
3253make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003254xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003255hwdb_update_sh = find_program('tools/hwdb-update.sh')
3256autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003257
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003258subdir('sysctl.d')
3259subdir('sysusers.d')
3260subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003261subdir('hwdb.d')
3262subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003263subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003264subdir('network')
3265subdir('man')
3266subdir('shell-completion/bash')
3267subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003268subdir('docs/sysvinit')
3269subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003270
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003271install_subdir('factory/etc',
3272 install_dir : factorydir)
3273
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003274install_data('xorg/50-systemd-user.sh',
3275 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003276install_data('modprobe.d/systemd.conf',
3277 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003278install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003279 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003280 'NEWS',
3281 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303282 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003283 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003284 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003285 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003286 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003287 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003288 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003289 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3290 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003291
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003292meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3293meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3294
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003295############################################################
3296
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003297check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003298
3299foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003300 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003301 if want_tests != 'false'
3302 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003303 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003304 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003305 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003306endforeach
3307
3308############################################################
3309
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003310check_directives_sh = find_program('tools/check-directives.sh')
3311
3312if want_tests != 'false'
3313 test('check-directives',
3314 check_directives_sh,
3315 args : project_source_root)
3316endif
3317
3318############################################################
3319
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003320# Enable tests for all supported sanitizers
3321foreach tuple : sanitizers
3322 sanitizer = tuple[0]
3323 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003324
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003325 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003326 prev = ''
3327 foreach p : fuzz_regression_tests
3328 b = p.split('/')[-2]
3329 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003330
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003331 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003332
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003333 if name != prev
3334 if want_tests == 'false'
3335 message('Not compiling @0@ because tests is set to false'.format(name))
3336 elif slow_tests
3337 exe = custom_target(
3338 name,
3339 output : name,
3340 depends : build,
3341 command : [env, 'ln', '-fs',
3342 join_paths(build.full_path(), b),
3343 '@OUTPUT@'],
3344 build_by_default : true)
3345 else
3346 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3347 endif
3348 endif
3349 prev = name
3350
3351 if want_tests != 'false' and slow_tests
3352 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3353 env,
3354 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003355 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003356 endif
3357 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003358 endif
3359endforeach
3360
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003361
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003362############################################################
3363
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003364if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003365 all_files = run_command(
3366 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003367 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003368 'ls-files',
3369 ':/*.[ch]'])
3370 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003371
userwithuide85a6902017-08-09 13:41:44 +00003372 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003373 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003374 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003375 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003376 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003377 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003378 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003379endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003380
3381if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003382 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003383 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003384 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003385 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003386endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003387
3388if git.found()
3389 git_head = run_command(
3390 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003391 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003392 'rev-parse', 'HEAD']).stdout().strip()
3393 git_head_short = run_command(
3394 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003395 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003396 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3397
3398 run_target(
3399 'git-snapshot',
3400 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003401 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003402 git_head_short),
3403 '--prefix', 'systemd-@0@/'.format(git_head),
3404 'HEAD'])
3405endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003406
3407############################################################
3408
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003409check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003410run_target(
3411 'check-api-docs',
3412 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003413 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003414
3415############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003416watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003417
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003418status = [
3419 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3420
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003421 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003422 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003423 'prefix directory: @0@'.format(prefixdir),
3424 'rootprefix directory: @0@'.format(rootprefixdir),
3425 'sysconf directory: @0@'.format(sysconfdir),
3426 'include directory: @0@'.format(includedir),
3427 'lib directory: @0@'.format(libdir),
3428 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003429 'SysV init scripts: @0@'.format(sysvinit_path),
3430 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003431 'PAM modules directory: @0@'.format(pamlibdir),
3432 'PAM configuration directory: @0@'.format(pamconfdir),
3433 'RPM macros directory: @0@'.format(rpmmacrosdir),
3434 'modprobe.d directory: @0@'.format(modprobedir),
3435 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3436 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3437 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3438 'bash completions directory: @0@'.format(bashcompletiondir),
3439 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003440 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003441 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3442 get_option('debug-tty')),
3443 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003444 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003445 'maximum system UID: @0@'.format(system_uid_max),
3446 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003447 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3448 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3449 'minimum container UID base: @0@'.format(container_uid_base_min),
3450 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003451 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003452 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003453 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003454 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003455 'nobody user name: @0@'.format(nobody_user),
3456 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003457 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003458 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003459
3460 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003461 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003462 'default mDNS mode: @0@'.format(default_mdns),
3463 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003464 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003465 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003466 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003467 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003468 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003469 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003470
3471alt_dns_servers = '\n '.join(dns_servers.split(' '))
3472alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3473status += [
3474 'default DNS servers: @0@'.format(alt_dns_servers),
3475 'default NTP servers: @0@'.format(alt_ntp_servers)]
3476
3477alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3478 '@@0@'.format(time_epoch)).stdout().strip()
3479status += [
3480 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3481
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003482status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003483 'static libsystemd: @0@'.format(static_libsystemd),
3484 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003485
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003486# TODO:
3487# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3488# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3489# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3490
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003491if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003492 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003493
3494 if have_gnu_efi
3495 status += [
3496 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003497 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003498 'EFI lds: @0@'.format(efi_lds),
3499 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003500 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003501 endif
3502endif
3503
3504found = []
3505missing = []
3506
3507foreach tuple : [
3508 ['libcryptsetup'],
3509 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003510 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003511 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003512 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003513 ['AUDIT'],
3514 ['IMA'],
3515 ['AppArmor'],
3516 ['SELinux'],
3517 ['SECCOMP'],
3518 ['SMACK'],
3519 ['zlib'],
3520 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003521 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003522 ['lz4'],
3523 ['bzip2'],
3524 ['ACL'],
3525 ['gcrypt'],
3526 ['qrencode'],
3527 ['microhttpd'],
3528 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003529 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003530 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003531 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003532 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003533 ['libidn'],
3534 ['libiptc'],
3535 ['elfutils'],
3536 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003537 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003538 ['vconsole'],
3539 ['quotacheck'],
3540 ['tmpfiles'],
3541 ['environment.d'],
3542 ['sysusers'],
3543 ['firstboot'],
3544 ['randomseed'],
3545 ['backlight'],
3546 ['rfkill'],
3547 ['logind'],
3548 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003549 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003550 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003551 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003552 ['importd'],
3553 ['hostnamed'],
3554 ['timedated'],
3555 ['timesyncd'],
3556 ['localed'],
3557 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003558 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003559 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3560 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003561 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003562 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003563 ['polkit'],
3564 ['legacy pkla', install_polkit_pkla],
3565 ['efi'],
3566 ['gnu-efi', have_gnu_efi],
3567 ['kmod'],
3568 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003569 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003570 ['blkid'],
3571 ['dbus'],
3572 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003573 ['nss-myhostname'],
3574 ['nss-mymachines'],
3575 ['nss-resolve'],
3576 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003577 ['hwdb'],
3578 ['tpm'],
3579 ['man pages', want_man],
3580 ['html pages', want_html],
3581 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003582 ['SysV compat'],
3583 ['utmp'],
3584 ['ldconfig'],
3585 ['hibernate'],
3586 ['adm group', get_option('adm-group')],
3587 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003588 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003589 ['debug hashmap'],
3590 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003591 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003592 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003593 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003594 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003595 ['link-udev-shared', get_option('link-udev-shared')],
3596 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003597 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003598 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003599 ['kernel-install', get_option('kernel-install')],
3600 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003601]
3602
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003603 if tuple.length() >= 2
3604 cond = tuple[1]
3605 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003606 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3607 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003608 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003609 endif
3610 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003611 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003612 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003613 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003614 endif
3615endforeach
3616
3617status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003618 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003619 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003620 '',
3621 'disabled features: @0@'.format(', '.join(missing)),
3622 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003623message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003624
3625if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003626 warning('\n' +
3627 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3628 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3629 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003630endif