blob: fea226e2d6f0f794b69d5eb71a25efdea81890c0 [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',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495 'src/shared',
1496 'src/systemd',
1497 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001498 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001499 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500 'src/resolve',
1501 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001502 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503 'src/login',
1504 'src/udev',
1505 'src/libudev',
1506 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001507 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508 'src/libsystemd/sd-bus',
1509 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001510 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511 'src/libsystemd/sd-hwdb',
1512 'src/libsystemd/sd-id128',
1513 'src/libsystemd/sd-netlink',
1514 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001515 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001517 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518
1519add_project_arguments('-include', 'config.h', language : 'c')
1520
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001521generate_gperfs = find_program('tools/generate-gperfs.py')
1522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523subdir('po')
1524subdir('catalog')
1525subdir('src/systemd')
1526subdir('src/basic')
1527subdir('src/libsystemd')
1528subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
1532libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 'journal-core',
1534 libjournal_core_sources,
1535 journald_gperf_c,
1536 include_directories : includes,
1537 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538
Davide Cavalca1485aac2019-02-27 11:19:07 -05001539libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001542 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001543 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 include_directories : includes,
1545 link_args : ['-shared',
1546 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001547 link_with : [libbasic,
1548 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001549 link_whole : [libsystemd_static,
1550 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 dependencies : [threads,
1552 librt,
1553 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001554 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 liblz4],
1556 link_depends : libsystemd_sym,
1557 install : true,
1558 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559
Davide Cavalca70848ec2018-04-09 02:43:35 -07001560static_libsystemd = get_option('static-libsystemd')
1561static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1562
1563install_libsystemd_static = static_library(
1564 'systemd',
1565 libsystemd_sources,
1566 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001567 basic_sources,
1568 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001569 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001570 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001571 build_by_default : static_libsystemd != 'false',
1572 install : static_libsystemd != 'false',
1573 install_dir : rootlibdir,
1574 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1575 dependencies : [threads,
1576 librt,
1577 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001578 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001579 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001580 libcap,
1581 libblkid,
1582 libmount,
1583 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001584 libgcrypt],
1585 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1586
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001587# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001588make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1589
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590############################################################
1591
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001592# binaries that have --help and are intended for use by humans,
1593# usually, but not always, installed in /bin.
1594public_programs = []
1595
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596subdir('src/libudev')
1597subdir('src/shared')
1598subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001599subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600subdir('src/udev')
1601subdir('src/network')
1602
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001603subdir('src/analyze')
1604subdir('src/journal-remote')
1605subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001606subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001607subdir('src/hostname')
1608subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001609subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001610subdir('src/kernel-install')
1611subdir('src/locale')
1612subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001613subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001614subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001615subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001616subdir('src/nspawn')
1617subdir('src/resolve')
1618subdir('src/timedate')
1619subdir('src/timesync')
1620subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001621subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001622
1623subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001624subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001625subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001626subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001627
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001628############################################################
1629
1630# only static linking apart from libdl, to make sure that the
1631# module is linked to all libraries that it uses.
1632test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 'test-dlopen',
1634 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001635 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001636 include_directories : includes,
1637 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001638 dependencies : [libdl],
1639 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001640
Yu Watanabe08540a92018-07-18 09:25:57 +09001641foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001642 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001643 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1644 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001646 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 if condition
1648 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001649
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001651 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001652
Lennart Poettering1684c562019-07-04 18:31:11 +02001653 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1654 if tuple.length() > 2
1655 sources += tuple[2].split()
1656 endif
1657
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 nss = shared_library(
1659 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001660 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001661 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 version : '2',
1663 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001664 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1665 link_args : ['-Wl,-z,nodelete',
1666 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001667 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001668 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001669 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 libbasic],
1671 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001672 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 link_depends : sym,
1674 install : true,
1675 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001676
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 # We cannot use shared_module because it does not support version suffix.
1678 # Unfortunately shared_library insists on creating the symlink…
1679 meson.add_install_script('sh', '-c',
1680 'rm $DESTDIR@0@/libnss_@1@.so'
1681 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001682
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001683 if want_tests != 'false'
1684 test('dlopen-nss_' + module,
1685 test_dlopen,
1686 # path to dlopen must include a slash
1687 args : nss.full_path())
1688 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001690endforeach
1691
1692############################################################
1693
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001694executable(
1695 'systemd',
1696 systemd_sources,
1697 include_directories : includes,
1698 link_with : [libcore,
1699 libshared],
1700 dependencies : [versiondep,
1701 threads,
1702 librt,
1703 libseccomp,
1704 libselinux,
1705 libmount,
1706 libblkid],
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001711meson.add_install_script(meson_make_symlink,
1712 join_paths(rootlibexecdir, 'systemd'),
1713 join_paths(rootsbindir, 'init'))
1714
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001715public_programs += executable(
1716 'systemd-analyze',
1717 systemd_analyze_sources,
1718 include_directories : includes,
1719 link_with : [libcore,
1720 libshared],
1721 dependencies : [versiondep,
1722 threads,
1723 librt,
1724 libseccomp,
1725 libselinux,
1726 libmount,
1727 libblkid],
1728 install_rpath : rootlibexecdir,
1729 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001731executable(
1732 'systemd-journald',
1733 systemd_journald_sources,
1734 include_directories : includes,
1735 link_with : [libjournal_core,
1736 libshared],
1737 dependencies : [threads,
1738 libxz,
1739 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001740 libselinux,
1741 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001746public_programs += executable(
1747 'systemd-cat',
1748 systemd_cat_sources,
1749 include_directories : includes,
1750 link_with : [libjournal_core,
1751 libshared],
1752 dependencies : [threads],
1753 install_rpath : rootlibexecdir,
1754 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001756public_programs += executable(
1757 'journalctl',
1758 journalctl_sources,
1759 include_directories : includes,
1760 link_with : [libshared],
1761 dependencies : [threads,
1762 libqrencode,
1763 libxz,
1764 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001765 libpcre2,
1766 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001771executable(
1772 'systemd-getty-generator',
1773 'src/getty-generator/getty-generator.c',
1774 include_directories : includes,
1775 link_with : [libshared],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001780executable(
1781 'systemd-debug-generator',
1782 'src/debug-generator/debug-generator.c',
1783 include_directories : includes,
1784 link_with : [libshared],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001789executable(
1790 'systemd-run-generator',
1791 'src/run-generator/run-generator.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001797
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001798executable(
1799 'systemd-fstab-generator',
1800 'src/fstab-generator/fstab-generator.c',
1801 include_directories : includes,
1802 link_with : [libcore_shared,
1803 libshared],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001808if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001809 executable(
1810 '30-systemd-environment-d-generator',
1811 'src/environment-d-generator/environment-d-generator.c',
1812 include_directories : includes,
1813 link_with : [libshared],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 meson.add_install_script(meson_make_symlink,
1819 join_paths(sysconfdir, 'environment'),
1820 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821endif
1822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001823if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001824 executable(
1825 'systemd-hibernate-resume-generator',
1826 'src/hibernate-resume/hibernate-resume-generator.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001833 executable(
1834 'systemd-hibernate-resume',
1835 'src/hibernate-resume/hibernate-resume.c',
1836 include_directories : includes,
1837 link_with : [libshared],
1838 install_rpath : rootlibexecdir,
1839 install : true,
1840 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841endif
1842
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001843if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001844 executable(
1845 'systemd-gpt-auto-generator',
1846 'src/gpt-auto-generator/gpt-auto-generator.c',
1847 'src/shared/blkid-util.h',
1848 include_directories : includes,
1849 link_with : [libshared],
1850 dependencies : libblkid,
1851 install_rpath : rootlibexecdir,
1852 install : true,
1853 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001855 public_programs += executable(
1856 'systemd-dissect',
1857 'src/dissect/dissect.c',
1858 include_directories : includes,
1859 link_with : [libshared],
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001863endif
1864
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001865if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001866 executable(
1867 'systemd-resolved',
1868 systemd_resolved_sources,
1869 include_directories : includes,
1870 link_with : [libshared,
1871 libbasic_gcrypt,
1872 libsystemd_resolve_core],
1873 dependencies : systemd_resolved_dependencies,
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001878 public_programs += executable(
1879 'resolvectl',
1880 resolvectl_sources,
1881 include_directories : includes,
1882 link_with : [libshared,
1883 libbasic_gcrypt,
1884 libsystemd_resolve_core],
1885 dependencies : [threads,
1886 libgpg_error,
1887 libm,
1888 libidn],
1889 install_rpath : rootlibexecdir,
1890 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001891
1892 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001893 join_paths(bindir, 'resolvectl'),
1894 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001895
1896 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001897 join_paths(bindir, 'resolvectl'),
1898 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899endif
1900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001901if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001902 executable(
1903 'systemd-logind',
1904 systemd_logind_sources,
1905 include_directories : includes,
1906 link_with : [liblogind_core,
1907 libshared],
1908 dependencies : [threads,
1909 libacl],
1910 install_rpath : rootlibexecdir,
1911 install : true,
1912 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001914 public_programs += executable(
1915 'loginctl',
1916 loginctl_sources,
1917 include_directories : includes,
1918 link_with : [libshared],
1919 dependencies : [threads,
1920 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001921 libxz,
1922 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001923 install_rpath : rootlibexecdir,
1924 install : true,
1925 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001927 public_programs += executable(
1928 'systemd-inhibit',
1929 'src/login/inhibit.c',
1930 include_directories : includes,
1931 link_with : [libshared],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001936 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001937 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 pam_systemd = shared_library(
1939 'pam_systemd',
1940 pam_systemd_c,
1941 name_prefix : '',
1942 include_directories : includes,
1943 link_args : ['-shared',
1944 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001945 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 libshared_static],
1947 dependencies : [threads,
1948 libpam,
1949 libpam_misc],
1950 link_depends : pam_systemd_sym,
1951 install : true,
1952 install_dir : pamlibdir)
1953
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001954 if want_tests != 'false'
1955 test('dlopen-pam_systemd',
1956 test_dlopen,
1957 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001958 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001959 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001961
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001962 executable(
1963 'systemd-user-runtime-dir',
1964 user_runtime_dir_sources,
1965 include_directories : includes,
1966 link_with : [libshared],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001970endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001973 executable(
1974 'systemd-user-sessions',
1975 'src/user-sessions/user-sessions.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 install_rpath : rootlibexecdir,
1979 install : true,
1980 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001981endif
1982
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001983if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001984 public_programs += executable(
1985 'bootctl',
1986 'src/boot/bootctl.c',
1987 include_directories : includes,
1988 link_with : [libshared],
1989 dependencies : [libblkid],
1990 install_rpath : rootlibexecdir,
1991 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02001992
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001993 public_programs += executable(
1994 'systemd-bless-boot',
1995 'src/boot/bless-boot.c',
1996 include_directories : includes,
1997 link_with : [libshared],
1998 dependencies : [libblkid],
1999 install_rpath : rootlibexecdir,
2000 install : true,
2001 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002002
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002003 executable(
2004 'systemd-bless-boot-generator',
2005 'src/boot/bless-boot-generator.c',
2006 include_directories : includes,
2007 link_with : [libshared],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011endif
2012
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002013executable(
2014 'systemd-boot-check-no-failures',
2015 'src/boot/boot-check-no-failures.c',
2016 include_directories : includes,
2017 link_with : [libshared],
2018 dependencies : [libblkid],
2019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002022
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002023public_programs += executable(
2024 'systemd-socket-activate',
2025 'src/activate/activate.c',
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [threads],
2029 install_rpath : rootlibexecdir,
2030 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002031
2032if get_option('link-systemctl-shared')
2033 systemctl_link_with = [libshared]
2034else
2035 systemctl_link_with = [libsystemd_static,
2036 libshared_static,
2037 libjournal_client,
2038 libbasic_gcrypt]
2039endif
2040
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002041public_programs += executable(
2042 'systemctl',
2043 'src/systemctl/systemctl.c',
2044 'src/systemctl/sysv-compat.h',
2045 'src/systemctl/sysv-compat.c',
2046 include_directories : includes,
2047 link_with : systemctl_link_with,
2048 dependencies : [threads,
2049 libcap,
2050 libselinux,
2051 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002052 liblz4,
2053 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057
Lennart Poettering61d05782018-04-16 21:41:40 +02002058if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002059 executable(
2060 'systemd-portabled',
2061 systemd_portabled_sources,
2062 include_directories : includes,
2063 link_with : [libshared],
2064 dependencies : [threads],
2065 install_rpath : rootlibexecdir,
2066 install : true,
2067 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002068
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002069 public_programs += executable(
2070 'portablectl',
2071 'src/portable/portablectl.c',
2072 include_directories : includes,
2073 link_with : [libshared],
2074 dependencies : [threads],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002078endif
2079
Lennart Poetteringd093b622019-07-04 18:33:30 +02002080if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002081 executable(
2082 'systemd-userwork',
2083 systemd_userwork_sources,
2084 include_directories : includes,
2085 link_with : [libshared],
2086 dependencies : [threads],
2087 install_rpath : rootlibexecdir,
2088 install : true,
2089 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002090
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002091 executable(
2092 'systemd-userdbd',
2093 systemd_userdbd_sources,
2094 include_directories : includes,
2095 link_with : [libshared],
2096 dependencies : [threads],
2097 install_rpath : rootlibexecdir,
2098 install : true,
2099 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002100
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002101 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002102 'userdbctl',
2103 userdbctl_sources,
2104 include_directories : includes,
2105 link_with : [libshared],
2106 dependencies : [threads],
2107 install_rpath : rootlibexecdir,
2108 install : true,
2109 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002110endif
2111
Lennart Poettering70a5db52019-07-04 18:35:39 +02002112if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002113 executable(
2114 'systemd-homework',
2115 systemd_homework_sources,
2116 include_directories : includes,
2117 link_with : [libshared],
2118 dependencies : [threads,
2119 libcryptsetup,
2120 libblkid,
2121 libcrypt,
2122 libopenssl,
2123 libfdisk,
2124 libp11kit],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002128
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002129 executable(
2130 'systemd-homed',
2131 systemd_homed_sources,
2132 include_directories : includes,
2133 link_with : [libshared],
2134 dependencies : [threads,
2135 libcrypt,
2136 libopenssl,
2137 libpwquality],
2138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002141
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002142 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002143 'homectl',
2144 homectl_sources,
2145 include_directories : includes,
2146 link_with : [libshared],
2147 dependencies : [threads,
2148 libcrypt,
2149 libopenssl,
2150 libp11kit,
2151 libpwquality],
2152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002155
2156 if conf.get('HAVE_PAM') == 1
2157 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2158 pam_systemd = shared_library(
2159 'pam_systemd_home',
2160 pam_systemd_home_c,
2161 name_prefix : '',
2162 include_directories : includes,
2163 link_args : ['-shared',
2164 '-Wl,--version-script=' + version_script_arg],
2165 link_with : [libsystemd_static,
2166 libshared_static],
2167 dependencies : [threads,
2168 libpam,
2169 libpam_misc,
2170 libcrypt],
2171 link_depends : pam_systemd_home_sym,
2172 install : true,
2173 install_dir : pamlibdir)
2174 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002175endif
2176
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002177foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2178 meson.add_install_script(meson_make_symlink,
2179 join_paths(rootbindir, 'systemctl'),
2180 join_paths(rootsbindir, alias))
2181endforeach
2182
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002183if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002184 executable(
2185 'systemd-backlight',
2186 'src/backlight/backlight.c',
2187 include_directories : includes,
2188 link_with : [libshared],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192endif
2193
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002194if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002195 executable(
2196 'systemd-rfkill',
2197 'src/rfkill/rfkill.c',
2198 include_directories : includes,
2199 link_with : [libshared],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002203endif
2204
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002205executable(
2206 'systemd-system-update-generator',
2207 'src/system-update-generator/system-update-generator.c',
2208 include_directories : includes,
2209 link_with : [libshared],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002214if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002215 systemd_cryptsetup_sources = files('''
2216 src/cryptsetup/cryptsetup.c
2217 src/cryptsetup/cryptsetup-pkcs11.h
2218'''.split())
2219
2220 if conf.get('HAVE_P11KIT') == 1
2221 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2222 endif
2223
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002224 executable(
2225 'systemd-cryptsetup',
2226 systemd_cryptsetup_sources,
2227 include_directories : includes,
2228 link_with : [libshared],
2229 dependencies : [libcryptsetup,
2230 libp11kit],
2231 install_rpath : rootlibexecdir,
2232 install : true,
2233 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002235 executable(
2236 'systemd-cryptsetup-generator',
2237 'src/cryptsetup/cryptsetup-generator.c',
2238 include_directories : includes,
2239 link_with : [libshared],
2240 dependencies : [libcryptsetup],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002245 executable(
2246 'systemd-veritysetup',
2247 'src/veritysetup/veritysetup.c',
2248 include_directories : includes,
2249 link_with : [libshared],
2250 dependencies : [libcryptsetup],
2251 install_rpath : rootlibexecdir,
2252 install : true,
2253 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002255 executable(
2256 'systemd-veritysetup-generator',
2257 'src/veritysetup/veritysetup-generator.c',
2258 include_directories : includes,
2259 link_with : [libshared],
2260 dependencies : [libcryptsetup],
2261 install_rpath : rootlibexecdir,
2262 install : true,
2263 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002264endif
2265
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002266if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002267 executable(
2268 'systemd-sysv-generator',
2269 'src/sysv-generator/sysv-generator.c',
2270 include_directories : includes,
2271 link_with : [libshared],
2272 install_rpath : rootlibexecdir,
2273 install : true,
2274 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002276 executable(
2277 'systemd-rc-local-generator',
2278 'src/rc-local-generator/rc-local-generator.c',
2279 include_directories : includes,
2280 link_with : [libshared],
2281 install_rpath : rootlibexecdir,
2282 install : true,
2283 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284endif
2285
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002286if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002287 executable(
2288 'systemd-hostnamed',
2289 'src/hostname/hostnamed.c',
2290 include_directories : includes,
2291 link_with : [libshared],
2292 install_rpath : rootlibexecdir,
2293 install : true,
2294 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002296 public_programs += executable(
2297 'hostnamectl',
2298 'src/hostname/hostnamectl.c',
2299 include_directories : includes,
2300 link_with : [libshared],
2301 install_rpath : rootlibexecdir,
2302 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303endif
2304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_LOCALED') == 1
2306 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 # logind will load libxkbcommon.so dynamically on its own
2308 deps = [libdl]
2309 else
2310 deps = []
2311 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002312
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002313 executable(
2314 'systemd-localed',
2315 systemd_localed_sources,
2316 include_directories : includes,
2317 link_with : [libshared],
2318 dependencies : deps,
2319 install_rpath : rootlibexecdir,
2320 install : true,
2321 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002322
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002323 public_programs += executable(
2324 'localectl',
2325 localectl_sources,
2326 include_directories : includes,
2327 link_with : [libshared],
2328 install_rpath : rootlibexecdir,
2329 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330endif
2331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002332if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002333 executable(
2334 'systemd-timedated',
2335 'src/timedate/timedated.c',
2336 include_directories : includes,
2337 link_with : [libshared],
2338 install_rpath : rootlibexecdir,
2339 install : true,
2340 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002341endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002342
Yu Watanabe6129ec82018-05-03 18:07:43 +09002343if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002344 public_programs += executable(
2345 'timedatectl',
2346 'src/timedate/timedatectl.c',
2347 include_directories : includes,
2348 install_rpath : rootlibexecdir,
2349 link_with : [libshared],
2350 dependencies : [libm],
2351 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352endif
2353
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002354if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002355 if get_option('link-timesyncd-shared')
2356 timesyncd_link_with = [libshared]
2357 else
2358 timesyncd_link_with = [libsystemd_static,
2359 libshared_static,
2360 libjournal_client,
2361 libbasic_gcrypt]
2362 endif
2363
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002364 executable(
2365 'systemd-timesyncd',
2366 systemd_timesyncd_sources,
2367 include_directories : includes,
2368 link_with : [timesyncd_link_with],
2369 dependencies : [threads,
2370 libm],
2371 install_rpath : rootlibexecdir,
2372 install : true,
2373 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002374
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002375 executable(
2376 'systemd-time-wait-sync',
2377 'src/time-wait-sync/time-wait-sync.c',
2378 include_directories : includes,
2379 link_with : [timesyncd_link_with],
2380 install_rpath : rootlibexecdir,
2381 install : true,
2382 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383endif
2384
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002385if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002386 executable(
2387 'systemd-machined',
2388 systemd_machined_sources,
2389 include_directories : includes,
2390 link_with : [libmachine_core,
2391 libshared],
2392 install_rpath : rootlibexecdir,
2393 install : true,
2394 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002395
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002396 public_programs += executable(
2397 'machinectl',
2398 'src/machine/machinectl.c',
2399 include_directories : includes,
2400 link_with : [libshared],
2401 dependencies : [threads,
2402 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002403 liblz4,
2404 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002405 install_rpath : rootlibexecdir,
2406 install : true,
2407 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408endif
2409
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002410if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002411 executable(
2412 'systemd-importd',
2413 systemd_importd_sources,
2414 include_directories : includes,
2415 link_with : [libshared],
2416 dependencies : [threads],
2417 install_rpath : rootlibexecdir,
2418 install : true,
2419 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002421 systemd_pull = executable(
2422 'systemd-pull',
2423 systemd_pull_sources,
2424 include_directories : includes,
2425 link_with : [libshared],
2426 dependencies : [versiondep,
2427 libcurl,
2428 libz,
2429 libbzip2,
2430 libxz,
2431 libgcrypt],
2432 install_rpath : rootlibexecdir,
2433 install : true,
2434 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002436 systemd_import = executable(
2437 'systemd-import',
2438 systemd_import_sources,
2439 include_directories : includes,
2440 link_with : [libshared],
2441 dependencies : [libcurl,
2442 libz,
2443 libbzip2,
2444 libxz],
2445 install_rpath : rootlibexecdir,
2446 install : true,
2447 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002449 systemd_import_fs = executable(
2450 'systemd-import-fs',
2451 systemd_import_fs_sources,
2452 include_directories : includes,
2453 link_with : [libshared],
2454 install_rpath : rootlibexecdir,
2455 install : true,
2456 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002457
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002458 systemd_export = executable(
2459 'systemd-export',
2460 systemd_export_sources,
2461 include_directories : includes,
2462 link_with : [libshared],
2463 dependencies : [libcurl,
2464 libz,
2465 libbzip2,
2466 libxz],
2467 install_rpath : rootlibexecdir,
2468 install : true,
2469 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002470
2471 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472endif
2473
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002474if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002475 public_programs += executable(
2476 'systemd-journal-upload',
2477 systemd_journal_upload_sources,
2478 include_directories : includes,
2479 link_with : [libshared],
2480 dependencies : [versiondep,
2481 threads,
2482 libcurl,
2483 libgnutls,
2484 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002485 liblz4,
2486 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490endif
2491
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002492if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002493 public_programs += executable(
2494 'systemd-journal-remote',
2495 systemd_journal_remote_sources,
2496 include_directories : includes,
2497 link_with : [libshared,
2498 libsystemd_journal_remote],
2499 dependencies : [threads,
2500 libmicrohttpd,
2501 libgnutls,
2502 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002503 liblz4,
2504 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002505 install_rpath : rootlibexecdir,
2506 install : true,
2507 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002509 public_programs += executable(
2510 'systemd-journal-gatewayd',
2511 systemd_journal_gatewayd_sources,
2512 include_directories : includes,
2513 link_with : [libshared],
2514 dependencies : [threads,
2515 libmicrohttpd,
2516 libgnutls,
2517 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002518 liblz4,
2519 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002520 install_rpath : rootlibexecdir,
2521 install : true,
2522 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523endif
2524
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002525if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002526 executable(
2527 'systemd-coredump',
2528 systemd_coredump_sources,
2529 include_directories : includes,
2530 link_with : [libshared],
2531 dependencies : [threads,
2532 libacl,
2533 libdw,
2534 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002535 liblz4,
2536 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002537 install_rpath : rootlibexecdir,
2538 install : true,
2539 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002540
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002541 public_programs += executable(
2542 'coredumpctl',
2543 coredumpctl_sources,
2544 include_directories : includes,
2545 link_with : [libshared],
2546 dependencies : [threads,
2547 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002548 liblz4,
2549 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002550 install_rpath : rootlibexecdir,
2551 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552endif
2553
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002554if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002555 executable(
2556 'systemd-pstore',
2557 systemd_pstore_sources,
2558 include_directories : includes,
2559 link_with : [libshared],
2560 dependencies : [threads,
2561 libacl,
2562 libdw,
2563 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002564 liblz4,
2565 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002566 install_rpath : rootlibexecdir,
2567 install : true,
2568 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002569endif
2570
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002571if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002572 public_programs += executable(
2573 'systemd-binfmt',
2574 'src/binfmt/binfmt.c',
2575 include_directories : includes,
2576 link_with : [libshared],
2577 install_rpath : rootlibexecdir,
2578 install : true,
2579 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002580
2581 meson.add_install_script('sh', '-c',
2582 mkdir_p.format(binfmtdir))
2583 meson.add_install_script('sh', '-c',
2584 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2585endif
2586
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002587if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002588 exe = executable(
2589 'systemd-repart',
2590 systemd_repart_sources,
2591 include_directories : includes,
2592 link_with : [libshared],
2593 dependencies : [threads,
2594 libcryptsetup,
2595 libblkid,
2596 libfdisk,
2597 libopenssl],
2598 install_rpath : rootlibexecdir,
2599 install : true,
2600 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002601
2602 if want_tests != 'false'
2603 test('test-repart',
2604 test_repart_sh,
2605 args : exe.full_path())
2606 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002607endif
2608
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002609if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002610 executable(
2611 'systemd-vconsole-setup',
2612 'src/vconsole/vconsole-setup.c',
2613 include_directories : includes,
2614 link_with : [libshared],
2615 install_rpath : rootlibexecdir,
2616 install : true,
2617 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002618endif
2619
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002620if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002621 executable(
2622 'systemd-random-seed',
2623 'src/random-seed/random-seed.c',
2624 include_directories : includes,
2625 link_with : [libshared],
2626 install_rpath : rootlibexecdir,
2627 install : true,
2628 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002629endif
2630
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002631if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002632 executable(
2633 'systemd-firstboot',
2634 'src/firstboot/firstboot.c',
2635 include_directories : includes,
2636 link_with : [libshared],
2637 dependencies : [libcrypt],
2638 install_rpath : rootlibexecdir,
2639 install : true,
2640 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641endif
2642
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002643executable(
2644 'systemd-remount-fs',
2645 'src/remount-fs/remount-fs.c',
2646 include_directories : includes,
2647 link_with : [libcore_shared,
2648 libshared],
2649 install_rpath : rootlibexecdir,
2650 install : true,
2651 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002652
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002653executable(
2654 'systemd-machine-id-setup',
2655 'src/machine-id-setup/machine-id-setup-main.c',
2656 include_directories : includes,
2657 link_with : [libcore_shared,
2658 libshared],
2659 install_rpath : rootlibexecdir,
2660 install : true,
2661 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002663executable(
2664 'systemd-fsck',
2665 'src/fsck/fsck.c',
2666 include_directories : includes,
2667 link_with : [libshared],
2668 install_rpath : rootlibexecdir,
2669 install : true,
2670 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002672executable('systemd-growfs',
2673 'src/partition/growfs.c',
2674 include_directories : includes,
2675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002676 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002677 install_rpath : rootlibexecdir,
2678 install : true,
2679 install_dir : rootlibexecdir)
2680
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002681executable(
2682 'systemd-makefs',
2683 'src/partition/makefs.c',
2684 include_directories : includes,
2685 link_with : [libshared],
2686 install_rpath : rootlibexecdir,
2687 install : true,
2688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002689
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002690executable(
2691 'systemd-sleep',
2692 'src/sleep/sleep.c',
2693 include_directories : includes,
2694 link_with : [libshared],
2695 install_rpath : rootlibexecdir,
2696 install : true,
2697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002698
Yu Watanabed25e1272019-01-03 02:32:57 +09002699install_data('src/sleep/sleep.conf',
2700 install_dir : pkgsysconfdir)
2701
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002702public_programs += executable(
2703 'systemd-sysctl',
2704 'src/sysctl/sysctl.c',
2705 include_directories : includes,
2706 link_with : [libshared],
2707 install_rpath : rootlibexecdir,
2708 install : true,
2709 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002710
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002711executable(
2712 'systemd-ac-power',
2713 'src/ac-power/ac-power.c',
2714 include_directories : includes,
2715 link_with : [libshared],
2716 install_rpath : rootlibexecdir,
2717 install : true,
2718 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002719
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002720public_programs += executable(
2721 'systemd-detect-virt',
2722 'src/detect-virt/detect-virt.c',
2723 include_directories : includes,
2724 link_with : [libshared],
2725 install_rpath : rootlibexecdir,
2726 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002727
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002728public_programs += executable(
2729 'systemd-delta',
2730 'src/delta/delta.c',
2731 include_directories : includes,
2732 link_with : [libshared],
2733 install_rpath : rootlibexecdir,
2734 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002735
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002736public_programs += executable(
2737 'systemd-escape',
2738 'src/escape/escape.c',
2739 include_directories : includes,
2740 link_with : [libshared],
2741 install_rpath : rootlibexecdir,
2742 install : true,
2743 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002744
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002745public_programs += executable(
2746 'systemd-notify',
2747 'src/notify/notify.c',
2748 include_directories : includes,
2749 link_with : [libshared],
2750 install_rpath : rootlibexecdir,
2751 install : true,
2752 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002754executable(
2755 'systemd-volatile-root',
2756 'src/volatile-root/volatile-root.c',
2757 include_directories : includes,
2758 link_with : [libshared],
2759 install_rpath : rootlibexecdir,
2760 install : true,
2761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002762
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002763executable(
2764 'systemd-cgroups-agent',
2765 'src/cgroups-agent/cgroups-agent.c',
2766 include_directories : includes,
2767 link_with : [libshared],
2768 install_rpath : rootlibexecdir,
2769 install : true,
2770 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002771
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002772public_programs += executable(
2773 'systemd-id128',
2774 'src/id128/id128.c',
2775 include_directories : includes,
2776 link_with : [libshared],
2777 install_rpath : rootlibexecdir,
2778 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002779
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002780public_programs += executable(
2781 'systemd-path',
2782 'src/path/path.c',
2783 include_directories : includes,
2784 link_with : [libshared],
2785 install_rpath : rootlibexecdir,
2786 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002787
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002788public_programs += executable(
2789 'systemd-ask-password',
2790 'src/ask-password/ask-password.c',
2791 include_directories : includes,
2792 link_with : [libshared],
2793 install_rpath : rootlibexecdir,
2794 install : true,
2795 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002796
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002797executable(
2798 'systemd-reply-password',
2799 'src/reply-password/reply-password.c',
2800 include_directories : includes,
2801 link_with : [libshared],
2802 install_rpath : rootlibexecdir,
2803 install : true,
2804 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002805
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002806public_programs += executable(
2807 'systemd-tty-ask-password-agent',
2808 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2809 include_directories : includes,
2810 link_with : [libshared],
2811 install_rpath : rootlibexecdir,
2812 install : true,
2813 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002814
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002815public_programs += executable(
2816 'systemd-cgls',
2817 'src/cgls/cgls.c',
2818 include_directories : includes,
2819 link_with : [libshared],
2820 install_rpath : rootlibexecdir,
2821 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002822
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002823public_programs += executable(
2824 'systemd-cgtop',
2825 'src/cgtop/cgtop.c',
2826 include_directories : includes,
2827 link_with : [libshared],
2828 install_rpath : rootlibexecdir,
2829 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002830
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002831executable(
2832 'systemd-initctl',
2833 'src/initctl/initctl.c',
2834 include_directories : includes,
2835 link_with : [libshared],
2836 install_rpath : rootlibexecdir,
2837 install : true,
2838 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002839
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002840public_programs += executable(
2841 'systemd-mount',
2842 'src/mount/mount-tool.c',
2843 include_directories : includes,
2844 link_with : [libshared],
2845 dependencies: [libmount],
2846 install_rpath : rootlibexecdir,
2847 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002848
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002849meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002850 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002851
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002852public_programs += executable(
2853 'systemd-run',
2854 'src/run/run.c',
2855 include_directories : includes,
2856 link_with : [libshared],
2857 install_rpath : rootlibexecdir,
2858 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002860public_programs += executable(
2861 'systemd-stdio-bridge',
2862 'src/stdio-bridge/stdio-bridge.c',
2863 include_directories : includes,
2864 link_with : [libshared],
2865 dependencies : [versiondep],
2866 install_rpath : rootlibexecdir,
2867 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002868
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002869public_programs += executable(
2870 'busctl',
2871 'src/busctl/busctl.c',
2872 'src/busctl/busctl-introspect.c',
2873 'src/busctl/busctl-introspect.h',
2874 include_directories : includes,
2875 link_with : [libshared],
2876 install_rpath : rootlibexecdir,
2877 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002878
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002879if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002880 public_programs += executable(
2881 'systemd-sysusers',
2882 'src/sysusers/sysusers.c',
2883 include_directories : includes,
2884 link_with : [libshared],
2885 install_rpath : rootlibexecdir,
2886 install : true,
2887 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002888endif
2889
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002890if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002891 exe = executable(
2892 'systemd-tmpfiles',
2893 'src/tmpfiles/tmpfiles.c',
2894 include_directories : includes,
2895 link_with : [libshared],
2896 dependencies : [libacl],
2897 install_rpath : rootlibexecdir,
2898 install : true,
2899 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002900 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002901
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002902 if want_tests != 'false'
2903 test('test-systemd-tmpfiles',
2904 test_systemd_tmpfiles_py,
2905 # https://github.com/mesonbuild/meson/issues/2681
2906 args : exe.full_path())
2907 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002908endif
2909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002910if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002911 public_programs += executable(
2912 'systemd-hwdb',
2913 'src/hwdb/hwdb.c',
2914 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2915 include_directories : includes,
2916 link_with : [libudev_static],
2917 install_rpath : udev_rpath,
2918 install : true,
2919 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002920endif
2921
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002922if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002923 executable(
2924 'systemd-quotacheck',
2925 'src/quotacheck/quotacheck.c',
2926 include_directories : includes,
2927 link_with : [libshared],
2928 install_rpath : rootlibexecdir,
2929 install : true,
2930 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002931endif
2932
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002933public_programs += executable(
2934 'systemd-socket-proxyd',
2935 'src/socket-proxy/socket-proxyd.c',
2936 include_directories : includes,
2937 link_with : [libshared],
2938 dependencies : [threads],
2939 install_rpath : rootlibexecdir,
2940 install : true,
2941 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002943public_programs += executable(
2944 'systemd-udevd',
2945 systemd_udevd_sources,
2946 include_directories : includes,
2947 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2948 link_with : [libudev_core,
2949 libsystemd_network,
2950 libudev_static],
2951 dependencies : [versiondep,
2952 threads,
2953 libkmod,
2954 libidn,
2955 libacl,
2956 libblkid],
2957 install_rpath : udev_rpath,
2958 install : true,
2959 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002960
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002961public_programs += executable(
2962 'udevadm',
2963 udevadm_sources,
2964 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2965 include_directories : includes,
2966 link_with : [libudev_core,
2967 libsystemd_network,
2968 libudev_static],
2969 dependencies : [versiondep,
2970 threads,
2971 libkmod,
2972 libidn,
2973 libacl,
2974 libblkid],
2975 install_rpath : udev_rpath,
2976 install : true,
2977 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002978
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002979executable(
2980 'systemd-shutdown',
2981 systemd_shutdown_sources,
2982 include_directories : includes,
2983 link_with : [libcore_shared,
2984 libshared],
2985 dependencies : [libmount],
2986 install_rpath : rootlibexecdir,
2987 install : true,
2988 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002989
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002990executable(
2991 'systemd-update-done',
2992 'src/update-done/update-done.c',
2993 include_directories : includes,
2994 link_with : [libshared],
2995 install_rpath : rootlibexecdir,
2996 install : true,
2997 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002998
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002999executable(
3000 'systemd-update-utmp',
3001 'src/update-utmp/update-utmp.c',
3002 include_directories : includes,
3003 link_with : [libshared],
3004 dependencies : [libaudit],
3005 install_rpath : rootlibexecdir,
3006 install : true,
3007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003008
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003009if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003010 executable(
3011 'systemd-modules-load',
3012 'src/modules-load/modules-load.c',
3013 include_directories : includes,
3014 link_with : [libshared],
3015 dependencies : [libkmod],
3016 install_rpath : rootlibexecdir,
3017 install : true,
3018 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003019
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003020 meson.add_install_script('sh', '-c',
3021 mkdir_p.format(modulesloaddir))
3022 meson.add_install_script('sh', '-c',
3023 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003024endif
3025
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003026public_programs += executable(
3027 'systemd-nspawn',
3028 systemd_nspawn_sources,
3029 include_directories : includes,
3030 link_with : [libcore_shared,
3031 libnspawn_core,
3032 libshared],
3033 dependencies : [libblkid,
3034 libseccomp],
3035 install_rpath : rootlibexecdir,
3036 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003037
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003038if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003039 executable(
3040 'systemd-networkd',
3041 systemd_networkd_sources,
3042 include_directories : network_include_dir,
3043 link_with : [libnetworkd_core,
3044 libsystemd_network,
3045 libudev_static,
3046 networkd_link_with],
3047 dependencies : [threads],
3048 install_rpath : rootlibexecdir,
3049 install : true,
3050 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003051
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003052 executable(
3053 'systemd-networkd-wait-online',
3054 systemd_networkd_wait_online_sources,
3055 include_directories : includes,
3056 link_with : [libnetworkd_core,
3057 networkd_link_with],
3058 install_rpath : rootlibexecdir,
3059 install : true,
3060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003061
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003062 public_programs += executable(
3063 'networkctl',
3064 networkctl_sources,
3065 include_directories : includes,
3066 link_with : [libsystemd_network,
3067 networkd_link_with],
3068 install_rpath : rootlibexecdir,
3069 install : true,
3070 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003071
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003072 exe = executable(
3073 'systemd-network-generator',
3074 network_generator_sources,
3075 include_directories : includes,
3076 link_with : [networkd_link_with],
3077 install_rpath : rootlibexecdir,
3078 install : true,
3079 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003080
3081 if want_tests != 'false'
3082 test('test-network-generator-conversion',
3083 test_network_generator_conversion_sh,
3084 # https://github.com/mesonbuild/meson/issues/2681
3085 args : exe.full_path())
3086 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003087endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003088
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003089executable(
3090 'systemd-sulogin-shell',
3091 ['src/sulogin-shell/sulogin-shell.c'],
3092 include_directories : includes,
3093 link_with : [libshared],
3094 install_rpath : rootlibexecdir,
3095 install : true,
3096 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003097
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003098############################################################
3099
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003100custom_target(
3101 'systemd-runtest.env',
3102 output : 'systemd-runtest.env',
3103 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003104 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003105 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003106 '} >@OUTPUT@'],
3107 build_by_default : true)
3108
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003109foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003110 sources = tuple[0]
3111 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3112 dependencies = tuple[2]
3113 condition = tuple.length() >= 4 ? tuple[3] : ''
3114 type = tuple.length() >= 5 ? tuple[4] : ''
3115 defs = tuple.length() >= 6 ? tuple[5] : []
3116 incs = tuple.length() >= 7 ? tuple[6] : includes
3117 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003118
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003119 name = sources[0].split('/')[-1].split('.')[0]
3120 if type.startswith('timeout=')
3121 timeout = type.split('=')[1].to_int()
3122 type = ''
3123 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003124
3125 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003126 exe = executable(
3127 name,
3128 sources,
3129 include_directories : incs,
3130 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003131 dependencies : [versiondep,
3132 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003133 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003134 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003135 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003136 install : install_tests,
3137 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003138
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003139 if type == 'manual'
3140 message('@0@ is a manual test'.format(name))
3141 elif type == 'unsafe' and want_tests != 'unsafe'
3142 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003143 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003144 test(name, exe,
3145 env : test_env,
3146 timeout : timeout)
3147 endif
3148 else
3149 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3150 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003151endforeach
3152
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003153exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003154 'test-libsystemd-sym',
3155 test_libsystemd_sym_c,
3156 include_directories : includes,
3157 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003158 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003159 install : install_tests,
3160 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003161if want_tests != 'false'
3162 test('test-libsystemd-sym', exe)
3163endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003164
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003165exe = executable(
3166 'test-libsystemd-static-sym',
3167 test_libsystemd_sym_c,
3168 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003169 link_with : [install_libsystemd_static],
3170 dependencies : [threads], # threads is already included in dependencies on the library,
3171 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003172 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003173 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003174 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003175if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003176 test('test-libsystemd-static-sym', exe)
3177endif
3178
3179exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003180 'test-libudev-sym',
3181 test_libudev_sym_c,
3182 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003183 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003184 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003185 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003186 install : install_tests,
3187 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003188if want_tests != 'false'
3189 test('test-libudev-sym', exe)
3190endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003191
3192exe = executable(
3193 'test-libudev-static-sym',
3194 test_libudev_sym_c,
3195 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003196 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003197 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003198 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003199 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003200 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003201if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003202 test('test-libudev-static-sym', exe)
3203endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003204
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003205############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003206
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003207fuzzer_exes = []
3208
Michael Olbrich59967402018-11-11 11:27:35 +01003209if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003210 foreach tuple : fuzzers
3211 sources = tuple[0]
3212 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3213 dependencies = tuple[2]
3214 defs = tuple.length() >= 4 ? tuple[3] : []
3215 incs = tuple.length() >= 5 ? tuple[4] : includes
3216 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003217
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003218 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003219 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003220 elif want_libfuzzer
3221 if fuzzing_engine.found()
3222 dependencies += fuzzing_engine
3223 else
3224 link_args += ['-fsanitize=fuzzer']
3225 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003226 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003227 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003228 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003229
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003230 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003231
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003232 fuzzer_exes += executable(
3233 name,
3234 sources,
3235 include_directories : [incs, include_directories('src/fuzz')],
3236 link_with : link_with,
3237 dependencies : dependencies,
3238 c_args : defs,
3239 link_args: link_args,
3240 install : false)
3241 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003242endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003243
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003244run_target(
3245 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003246 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003247 command : ['true'])
3248
3249############################################################
3250
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003251make_directive_index_py = find_program('tools/make-directive-index.py')
3252make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003253xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003254hwdb_update_sh = find_program('tools/hwdb-update.sh')
3255autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003256
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003257subdir('sysctl.d')
3258subdir('sysusers.d')
3259subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003260subdir('hwdb.d')
3261subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003262subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003263subdir('network')
3264subdir('man')
3265subdir('shell-completion/bash')
3266subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003267subdir('docs/sysvinit')
3268subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003269
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003270install_subdir('factory/etc',
3271 install_dir : factorydir)
3272
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003273install_data('xorg/50-systemd-user.sh',
3274 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003275install_data('modprobe.d/systemd.conf',
3276 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003277install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003278 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003279 'NEWS',
3280 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303281 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003282 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003283 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003284 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003285 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003286 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003287 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003288 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3289 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003290
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003291meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3292meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3293
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003294############################################################
3295
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003296check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003297
3298foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003299 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003300 if want_tests != 'false'
3301 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003302 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003303 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003304 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003305endforeach
3306
3307############################################################
3308
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003309check_directives_sh = find_program('tools/check-directives.sh')
3310
3311if want_tests != 'false'
3312 test('check-directives',
3313 check_directives_sh,
3314 args : project_source_root)
3315endif
3316
3317############################################################
3318
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003319# Enable tests for all supported sanitizers
3320foreach tuple : sanitizers
3321 sanitizer = tuple[0]
3322 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003323
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003324 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003325 prev = ''
3326 foreach p : fuzz_regression_tests
3327 b = p.split('/')[-2]
3328 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003329
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003330 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003331
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003332 if name != prev
3333 if want_tests == 'false'
3334 message('Not compiling @0@ because tests is set to false'.format(name))
3335 elif slow_tests
3336 exe = custom_target(
3337 name,
3338 output : name,
3339 depends : build,
3340 command : [env, 'ln', '-fs',
3341 join_paths(build.full_path(), b),
3342 '@OUTPUT@'],
3343 build_by_default : true)
3344 else
3345 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3346 endif
3347 endif
3348 prev = name
3349
3350 if want_tests != 'false' and slow_tests
3351 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3352 env,
3353 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003354 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003355 endif
3356 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003357 endif
3358endforeach
3359
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003360
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003361############################################################
3362
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003363if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003364 all_files = run_command(
3365 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003366 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003367 'ls-files',
3368 ':/*.[ch]'])
3369 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003370
userwithuide85a6902017-08-09 13:41:44 +00003371 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003372 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003373 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003374 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003375 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003376 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003377 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003378endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003379
3380if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003381 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003382 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003383 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003384 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003385endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003386
3387if git.found()
3388 git_head = run_command(
3389 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003390 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003391 'rev-parse', 'HEAD']).stdout().strip()
3392 git_head_short = run_command(
3393 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003394 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003395 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3396
3397 run_target(
3398 'git-snapshot',
3399 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003400 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003401 git_head_short),
3402 '--prefix', 'systemd-@0@/'.format(git_head),
3403 'HEAD'])
3404endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003405
3406############################################################
3407
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003408check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003409run_target(
3410 'check-api-docs',
3411 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003412 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003413
3414############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003415watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003416
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003417status = [
3418 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3419
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003420 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003421 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003422 'prefix directory: @0@'.format(prefixdir),
3423 'rootprefix directory: @0@'.format(rootprefixdir),
3424 'sysconf directory: @0@'.format(sysconfdir),
3425 'include directory: @0@'.format(includedir),
3426 'lib directory: @0@'.format(libdir),
3427 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003428 'SysV init scripts: @0@'.format(sysvinit_path),
3429 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003430 'PAM modules directory: @0@'.format(pamlibdir),
3431 'PAM configuration directory: @0@'.format(pamconfdir),
3432 'RPM macros directory: @0@'.format(rpmmacrosdir),
3433 'modprobe.d directory: @0@'.format(modprobedir),
3434 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3435 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3436 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3437 'bash completions directory: @0@'.format(bashcompletiondir),
3438 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003439 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003440 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3441 get_option('debug-tty')),
3442 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003443 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003444 'maximum system UID: @0@'.format(system_uid_max),
3445 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003446 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3447 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3448 'minimum container UID base: @0@'.format(container_uid_base_min),
3449 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003451 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003452 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003453 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003454 'nobody user name: @0@'.format(nobody_user),
3455 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003456 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003457 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003458
3459 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003460 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003461 'default mDNS mode: @0@'.format(default_mdns),
3462 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003463 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003464 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003465 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003466 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003467 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003468 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003469
3470alt_dns_servers = '\n '.join(dns_servers.split(' '))
3471alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3472status += [
3473 'default DNS servers: @0@'.format(alt_dns_servers),
3474 'default NTP servers: @0@'.format(alt_ntp_servers)]
3475
3476alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3477 '@@0@'.format(time_epoch)).stdout().strip()
3478status += [
3479 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3480
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003481status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003482 'static libsystemd: @0@'.format(static_libsystemd),
3483 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003484
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003485# TODO:
3486# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3487# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3488# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3489
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003490if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003491 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003492
3493 if have_gnu_efi
3494 status += [
3495 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003496 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003497 'EFI lds: @0@'.format(efi_lds),
3498 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003499 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003500 endif
3501endif
3502
3503found = []
3504missing = []
3505
3506foreach tuple : [
3507 ['libcryptsetup'],
3508 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003509 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003510 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003511 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003512 ['AUDIT'],
3513 ['IMA'],
3514 ['AppArmor'],
3515 ['SELinux'],
3516 ['SECCOMP'],
3517 ['SMACK'],
3518 ['zlib'],
3519 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003520 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003521 ['lz4'],
3522 ['bzip2'],
3523 ['ACL'],
3524 ['gcrypt'],
3525 ['qrencode'],
3526 ['microhttpd'],
3527 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003528 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003529 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003530 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003531 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003532 ['libidn'],
3533 ['libiptc'],
3534 ['elfutils'],
3535 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003536 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003537 ['vconsole'],
3538 ['quotacheck'],
3539 ['tmpfiles'],
3540 ['environment.d'],
3541 ['sysusers'],
3542 ['firstboot'],
3543 ['randomseed'],
3544 ['backlight'],
3545 ['rfkill'],
3546 ['logind'],
3547 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003548 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003549 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003550 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003551 ['importd'],
3552 ['hostnamed'],
3553 ['timedated'],
3554 ['timesyncd'],
3555 ['localed'],
3556 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003557 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003558 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3559 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003560 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003561 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003562 ['polkit'],
3563 ['legacy pkla', install_polkit_pkla],
3564 ['efi'],
3565 ['gnu-efi', have_gnu_efi],
3566 ['kmod'],
3567 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003568 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003569 ['blkid'],
3570 ['dbus'],
3571 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003572 ['nss-myhostname'],
3573 ['nss-mymachines'],
3574 ['nss-resolve'],
3575 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003576 ['hwdb'],
3577 ['tpm'],
3578 ['man pages', want_man],
3579 ['html pages', want_html],
3580 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003581 ['SysV compat'],
3582 ['utmp'],
3583 ['ldconfig'],
3584 ['hibernate'],
3585 ['adm group', get_option('adm-group')],
3586 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003587 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003588 ['debug hashmap'],
3589 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003590 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003591 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003592 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003593 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003594 ['link-udev-shared', get_option('link-udev-shared')],
3595 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003596 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003597 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003598 ['kernel-install', get_option('kernel-install')],
3599 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003600]
3601
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003602 if tuple.length() >= 2
3603 cond = tuple[1]
3604 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003605 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3606 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003607 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003608 endif
3609 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003610 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003611 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003612 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003613 endif
3614endforeach
3615
3616status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003617 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003618 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003619 '',
3620 'disabled features: @0@'.format(', '.join(missing)),
3621 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003622message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003623
3624if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003625 warning('\n' +
3626 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3627 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3628 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003629endif