blob: e9eb7f9569eb3d502aeeb7fe116f01d0418fe051 [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
Zbigniew Jędrzejewski-Szmek94c0c5b2020-05-09 09:09:11 +0200414have = cc.has_argument('-Wzero-length-bounds')
415conf.set10('HAVE_ZERO_LENGTH_BOUNDS', have)
416
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800417if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418 #include <time.h>
419 #include <inttypes.h>
420 typedef uint64_t usec_t;
421 usec_t now(clockid_t clock);
422 int main(void) {
423 struct timespec now;
424 return 0;
425 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100426''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400427 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428endif
429
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100430if cxx_cmd != ''
431 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
432endif
433
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200434cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400435
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200436has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438#####################################################################
439# compilation result tests
440
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400441conf.set('_GNU_SOURCE', true)
442conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200443conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
446conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
447conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
448conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
449
450decl_headers = '''
451#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100452#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454
455foreach decl : ['char16_t',
456 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100457 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400459
460 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200461 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
462
463 if decl == 'struct statx'
464 if have
465 want_linux_stat_h = false
466 else
467 have = cc.sizeof(decl,
468 prefix : decl_headers + '#include <linux/stat.h>',
469 args : '-D_GNU_SOURCE') > 0
470 want_linux_stat_h = have
471 endif
472 endif
473
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200474 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475endforeach
476
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200477conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700478
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200480 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481endforeach
482
483foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100484 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100485 ['gettid', '''#include <sys/types.h>
486 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100487 ['pivot_root', '''#include <stdlib.h>
488 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400490 #include <sys/stat.h>
491 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100493 ['renameat2', '''#include <stdio.h>
494 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400495 ['kcmp', '''#include <linux/kcmp.h>'''],
496 ['keyctl', '''#include <sys/types.h>
497 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200500 ['bpf', '''#include <sys/syscall.h>
501 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100502 ['statx', '''#include <sys/types.h>
503 #include <sys/stat.h>
504 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100505 ['explicit_bzero' , '''#include <string.h>'''],
506 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100507 ['set_mempolicy', '''#include <stdlib.h>
508 #include <unistd.h>'''],
509 ['get_mempolicy', '''#include <stdlib.h>
510 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200511 ['pidfd_send_signal', '''#include <stdlib.h>
512 #include <unistd.h>
513 #include <signal.h>
514 #include <sys/wait.h>'''],
515 ['pidfd_open', '''#include <stdlib.h>
516 #include <unistd.h>
517 #include <signal.h>
518 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100519 ['rt_sigqueueinfo', '''#include <stdlib.h>
520 #include <unistd.h>
521 #include <signal.h>
522 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400523]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200526 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527endforeach
528
Lennart Poettering85db59b2017-12-25 12:01:14 +0100529if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200530 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400532else
533 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200534 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200535 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400536endif
537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538#####################################################################
539
Davide Cavalca1485aac2019-02-27 11:19:07 -0500540vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
541 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100542 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100543 meson.project_version()]
544
Louis Taylord1084aa2019-01-21 21:45:36 +0000545version_h = vcs_tag(
546 input : 'src/version/version.h.in',
547 output : 'version.h',
548 command: vcs_tagger)
549
550versiondep = declare_dependency(sources: version_h)
551
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400554m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400556git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100557env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100558perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559
Davide Cavalca1485aac2019-02-27 11:19:07 -0500560meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400561mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400562test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
563splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400564
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
566# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500567progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400568 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569 ['kmod', '/usr/bin/kmod' ],
570 ['kexec', '/usr/sbin/kexec' ],
571 ['sulogin', '/usr/sbin/sulogin' ],
572 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
573 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
574 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
575 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200576 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ]
578foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400579 path = get_option(prog[0] + '-path')
580 if path != ''
581 message('Using @1@ for @0@'.format(prog[0], path))
582 else
583 exe = find_program(prog[0],
584 '/usr/sbin/' + prog[0],
585 '/sbin/' + prog[0],
586 required: false)
587 path = exe.found() ? exe.path() : prog[1]
588 endif
589 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
590 conf.set_quoted(name, path)
591 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592endforeach
593
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500594conf.set_quoted('TELINIT', get_option('telinit-path'))
595
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400596if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100597 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400598endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599
600############################################################
601
602gperf = find_program('gperf')
603
604gperf_test_format = '''
605#include <string.h>
606const char * in_word_set(const char *, @0@);
607@1@
608'''
609gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
610gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
611gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
612if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
616 if cc.compiles(gperf_test)
617 gperf_len_type = 'unsigned'
618 else
619 error('unable to determine gperf len type')
620 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621endif
622message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623conf.set('GPERF_LEN_TYPE', gperf_len_type,
624 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625
626############################################################
627
628if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400629 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100631foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632 'linux/memfd.h',
633 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200634 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635 'valgrind/memcheck.h',
636 'valgrind/valgrind.h',
637 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400638
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200639 conf.set10('HAVE_' + header.underscorify().to_upper(),
640 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endforeach
642
643############################################################
644
Zbigniew Jędrzejewski-Szmekeef4b802020-05-07 17:30:02 +0200645fallback_hostname = get_option('fallback-hostname')
646if fallback_hostname == '' or fallback_hostname[0] == '.' or fallback_hostname[0] == '-'
647 error('Invalid fallback-hostname configuration')
648 # A more extensive test is done in test-hostname-util. Let's catch
649 # the most obvious errors here so we don't fail with an assert later.
650endif
651conf.set_quoted('FALLBACK_HOSTNAME', fallback_hostname)
652
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400653conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
654gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655
656default_hierarchy = get_option('default-hierarchy')
657conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
658 description : 'default cgroup hierarchy as string')
659if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665endif
666
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100667default_net_naming_scheme = get_option('default-net-naming-scheme')
668conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
669
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900671if time_epoch == -1
Dimitri John Ledkov6dbf3522020-05-15 19:16:05 +0100672 source_date_epoch = run_command('sh', ['-c', 'echo "$SOURCE_DATE_EPOCH"']).stdout().strip()
673 if source_date_epoch != ''
674 time_epoch = source_date_epoch.to_int()
675 else
676 NEWS = files('NEWS')
677 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
678 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680conf.set('TIME_EPOCH', time_epoch)
681
682system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900683if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400684 system_uid_max = run_command(
685 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800686 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
687 '/etc/login.defs').stdout().strip()
688 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900689 system_uid_max = 999
690 else
691 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800692 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694conf.set('SYSTEM_UID_MAX', system_uid_max)
695substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900698if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400699 system_gid_max = run_command(
700 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800701 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
702 '/etc/login.defs').stdout().strip()
703 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900704 system_gid_max = 999
705 else
706 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800707 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400709conf.set('SYSTEM_GID_MAX', system_gid_max)
710substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400711
Yu Watanabeac093402018-05-10 16:04:16 +0900712dynamic_uid_min = get_option('dynamic-uid-min')
713dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100714conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
715conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
716substs.set('dynamicuidmin', dynamic_uid_min)
717substs.set('dynamicuidmax', dynamic_uid_max)
718
Yu Watanabeac093402018-05-10 16:04:16 +0900719container_uid_base_min = get_option('container-uid-base-min')
720container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100721conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
722conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
723substs.set('containeruidbasemin', container_uid_base_min)
724substs.set('containeruidbasemax', container_uid_base_max)
725
Lennart Poetteringafde4572017-12-05 11:00:24 +0100726nobody_user = get_option('nobody-user')
727nobody_group = get_option('nobody-group')
728
Chen Qi2484bff2018-07-23 14:53:09 +0800729if not meson.is_cross_build()
730 getent_result = run_command('getent', 'passwd', '65534')
731 if getent_result.returncode() == 0
732 name = getent_result.stdout().split(':')[0]
733 if name != nobody_user
734 warning('\n' +
735 '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) +
736 'Your build will result in an user table setup that is incompatible with the local system.')
737 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100738 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800739 id_result = run_command('id', '-u', nobody_user)
740 if id_result.returncode() == 0
741 id = id_result.stdout().to_int()
742 if id != 65534
743 warning('\n' +
744 '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) +
745 'Your build will result in an user table setup that is incompatible with the local system.')
746 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100747 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100748
Chen Qi2484bff2018-07-23 14:53:09 +0800749 getent_result = run_command('getent', 'group', '65534')
750 if getent_result.returncode() == 0
751 name = getent_result.stdout().split(':')[0]
752 if name != nobody_group
753 warning('\n' +
754 '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) +
755 'Your build will result in an group table setup that is incompatible with the local system.')
756 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100757 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800758 id_result = run_command('id', '-g', nobody_group)
759 if id_result.returncode() == 0
760 id = id_result.stdout().to_int()
761 if id != 65534
762 warning('\n' +
763 '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) +
764 'Your build will result in an group table setup that is incompatible with the local system.')
765 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100766 endif
767endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900768if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900769 warning('\n' +
770 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
771 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900772endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100773
774conf.set_quoted('NOBODY_USER_NAME', nobody_user)
775conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900776substs.set('NOBODY_USER_NAME', nobody_user)
777substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100778
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779tty_gid = get_option('tty-gid')
780conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400781substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782
Ikey Doherty84786b82017-12-03 12:28:23 +0000783# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900784users_gid = get_option('users-gid')
785substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000786
Yu Watanabe348b4432018-05-07 18:17:35 +0900787conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
788conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789
Michael Bieblace5e312018-07-13 23:36:13 +0200790dev_kvm_mode = get_option('dev-kvm-mode')
791substs.set('DEV_KVM_MODE', dev_kvm_mode)
792conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100793group_render_mode = get_option('group-render-mode')
794substs.set('GROUP_RENDER_MODE', group_render_mode)
795conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400797kill_user_processes = get_option('default-kill-user-processes')
798conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100799conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400800substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400802dns_servers = get_option('dns-servers')
803conf.set_quoted('DNS_SERVERS', dns_servers)
804substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400806ntp_servers = get_option('ntp-servers')
807conf.set_quoted('NTP_SERVERS', ntp_servers)
808substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
Dave Reisner8ca9e922018-12-28 07:38:36 -0500810default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900811if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800812 if not meson.is_cross_build()
813 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
814 default_locale = run_command(choose_default_locale_sh).stdout().strip()
815 else
816 default_locale = 'C.UTF-8'
817 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900818endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500819conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
820
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
822
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200823service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700824watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
825substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200826
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400827substs.set('SUSHELL', get_option('debug-shell'))
828substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200829conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400830
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831enable_debug_hashmap = false
832enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900833enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200834foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900835 if name == 'hashmap'
836 enable_debug_hashmap = true
837 elif name == 'mmap-cache'
838 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900839 elif name == 'siphash'
840 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900841 else
842 message('unknown debug option "@0@", ignoring'.format(name))
843 endif
844endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
846conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900847conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400848
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200849conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200850conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200851
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100852default_user_path = get_option('user-path')
853if default_user_path != ''
854 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100855 default_user_path_display = default_user_path
856else
857 # meson 0.49 fails when ?: is used in .format()
858 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100859endif
860
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100861
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862#####################################################################
863
864threads = dependency('threads')
865librt = cc.find_library('rt')
866libm = cc.find_library('m')
867libdl = cc.find_library('dl')
868libcrypt = cc.find_library('crypt')
869
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400870libcap = dependency('libcap', required : false)
871if not libcap.found()
872 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
873 libcap = cc.find_library('cap')
874endif
875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100877 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100879want_libfdisk = get_option('fdisk')
880if want_libfdisk != 'false' and not skip_deps
881 libfdisk = dependency('fdisk',
882 required : want_libfdisk == 'true')
883 have = libfdisk.found()
884else
885 have = false
886 libfdisk = []
887endif
888conf.set10('HAVE_LIBFDISK', have)
889
Lennart Poettering70a5db52019-07-04 18:35:39 +0200890want_pwquality = get_option('pwquality')
891if want_pwquality != 'false' and not skip_deps
892 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
893 have = libpwquality.found()
894else
895 have = false
896 libpwquality = []
897endif
898conf.set10('HAVE_PWQUALITY', have)
899
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000901if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400903 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000913if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libselinux = dependency('libselinux',
915 version : '>= 2.1.9',
916 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000925if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libapparmor = dependency('libapparmor',
927 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935smack_run_label = get_option('smack-run-label')
936if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
939
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400940want_polkit = get_option('polkit')
941install_polkit = false
942install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000943if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libpolkit = dependency('polkit-gobject-1',
947 required : false)
948 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
949 message('Old polkit detected, will install pkla files')
950 install_polkit_pkla = true
951 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400954
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000956if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400961 libacl = []
962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400964
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000966if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000976if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984
985want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000986if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libkmod = dependency('libkmod',
988 version : '>= 15',
989 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000998if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libpam = cc.find_library('pam', required : want_pam == 'true')
1000 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libpam = []
1005 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001010if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libmicrohttpd = dependency('libmicrohttpd',
1012 version : '>= 0.9.33',
1013 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001022if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001024 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001027
1028 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1029 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035
1036want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001037if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001038 libcurl = dependency('libcurl',
1039 version : '>= 7.32.0',
1040 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047
1048want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001049want_libidn2 = get_option('libidn2')
1050if want_libidn == 'true' and want_libidn2 == 'true'
1051 error('libidn and libidn2 cannot be requested simultaneously')
1052endif
1053
Yu Watanabe1b931392019-06-29 03:13:30 +09001054if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001055 libidn = dependency('libidn2',
1056 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = libidn.found()
1058else
1059 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001060 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001063if not have and want_libidn != 'false' and not skip_deps
1064 # libidn is used for both libidn and libidn2 objects
1065 libidn = dependency('libidn',
1066 required : want_libidn == 'true')
1067 have = libidn.found()
1068else
1069 have = false
1070endif
1071conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
1073want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001074if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libiptc = dependency('libiptc',
1076 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083
1084want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001085if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libqrencode = dependency('libqrencode',
1087 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001096if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1098 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
1102endif
1103if not have
1104 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105 libgcrypt = []
1106 libgpg_error = []
1107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001109
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001111if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 libgnutls = dependency('gnutls',
1113 version : '>= 3.1.4',
1114 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001122want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001123if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001124 libopenssl = dependency('openssl',
1125 version : '>= 1.1.0',
1126 required : want_openssl == 'true')
1127 have = libopenssl.found()
1128else
1129 have = false
1130 libopenssl = []
1131endif
1132conf.set10('HAVE_OPENSSL', have)
1133
Lennart Poettering839fddb2019-11-05 11:49:27 +01001134want_p11kit = get_option('p11kit')
1135if want_p11kit != 'false' and not skip_deps
1136 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001137 version : '>= 0.23.3',
1138 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001139 have = libp11kit.found()
1140else
1141 have = false
1142 libp11kit = []
1143endif
1144conf.set10('HAVE_P11KIT', have)
1145
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001147if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libdw = dependency('libdw',
1149 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156
1157want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001158if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libz = dependency('zlib',
1160 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167
1168want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001169if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libbzip2 = cc.find_library('bz2',
1171 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001174 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178
1179want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001180if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 libxz = dependency('liblzma',
1182 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001189
1190want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001191if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001192 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001193 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001198 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001199endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201
Norbert Langeef5924a2020-04-12 01:09:05 +02001202want_zstd = get_option('zstd')
1203if want_zstd != 'false' and not skip_deps
1204 libzstd = dependency('libzstd',
1205 required : want_zstd == 'true',
1206 version : '>= 1.4.0')
1207 have = libzstd.found()
1208else
1209 have = false
1210 libzstd = []
1211endif
1212conf.set10('HAVE_ZSTD', have)
1213
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001214want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001215if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001216 libxkbcommon = dependency('xkbcommon',
1217 version : '>= 0.3.0',
1218 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001220else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001222 libxkbcommon = []
1223endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001225
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001226want_pcre2 = get_option('pcre2')
1227if want_pcre2 != 'false'
1228 libpcre2 = dependency('libpcre2-8',
1229 required : want_pcre2 == 'true')
1230 have = libpcre2.found()
1231else
1232 have = false
1233 libpcre2 = []
1234endif
1235conf.set10('HAVE_PCRE2', have)
1236
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001238if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001239 libglib = dependency('glib-2.0',
1240 version : '>= 2.22.0',
1241 required : want_glib == 'true')
1242 libgobject = dependency('gobject-2.0',
1243 version : '>= 2.22.0',
1244 required : want_glib == 'true')
1245 libgio = dependency('gio-2.0',
1246 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001247 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001248else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 libglib = []
1251 libgobject = []
1252 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001253endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001254conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001255
1256want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001257if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001258 libdbus = dependency('dbus-1',
1259 version : '>= 1.3.2',
1260 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001261 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001262else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001263 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001264 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001265endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001266conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001267
Yu Watanabe42303dc2017-06-18 05:22:32 +09001268default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001269if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001270 default_dnssec = 'no'
1271endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001272if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001273 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1274 default_dnssec = 'no'
1275endif
1276conf.set('DEFAULT_DNSSEC_MODE',
1277 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1278substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1279
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001280dns_over_tls = get_option('dns-over-tls')
1281if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001282 if dns_over_tls == 'openssl'
1283 have_gnutls = false
1284 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001285 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001286 if dns_over_tls == 'gnutls' and not have_gnutls
1287 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1288 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001289 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001290 if dns_over_tls == 'gnutls' or have_gnutls
1291 have_openssl = false
1292 else
1293 have_openssl = conf.get('HAVE_OPENSSL') == 1
1294 if dns_over_tls != 'auto' and not have_openssl
1295 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001296 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001297 endif
1298 endif
1299 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001300else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001301 have = false
1302 have_gnutls = false
1303 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001304endif
1305conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001306conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1307conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001308
Iwan Timmerc9299be2018-06-13 20:26:24 +02001309default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001310if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001311 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001312endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001313if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001314 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 +02001315 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001316endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001317conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1318 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1319substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001320
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001321default_mdns = get_option('default-mdns')
1322conf.set('DEFAULT_MDNS_MODE',
1323 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1324substs.set('DEFAULT_MDNS_MODE', default_mdns)
1325
1326default_llmnr = get_option('default-llmnr')
1327conf.set('DEFAULT_LLMNR_MODE',
1328 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1329substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1330
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001331want_repart = get_option('repart')
1332if want_repart != 'false'
1333 have = (conf.get('HAVE_OPENSSL') == 1 and
1334 conf.get('HAVE_LIBFDISK') == 1)
1335 if want_repart == 'true' and not have
1336 error('repart support was requested, but dependencies are not available')
1337 endif
1338else
1339 have = false
1340endif
1341conf.set10('ENABLE_REPART', have)
1342
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001344if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001345 have = (conf.get('HAVE_LIBCURL') == 1 and
1346 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001347 conf.get('HAVE_XZ') == 1 and
1348 conf.get('HAVE_GCRYPT') == 1)
1349 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 error('importd support was requested, but dependencies are not available')
1351 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001352else
1353 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001354endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001355conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356
Lennart Poettering70a5db52019-07-04 18:35:39 +02001357want_homed = get_option('homed')
1358if want_homed != 'false'
1359 have = (conf.get('HAVE_OPENSSL') == 1 and
1360 conf.get('HAVE_LIBFDISK') == 1 and
1361 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1362 if want_homed == 'true' and not have
1363 error('homed support was requested, but dependencies are not available')
1364 endif
1365else
1366 have = false
1367endif
1368conf.set10('ENABLE_HOMED', have)
1369
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001370have = have and conf.get('HAVE_PAM') == 1
1371conf.set10('ENABLE_PAM_HOME', have)
1372
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001374if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001375 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1376 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001377 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1378 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001379 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001380 # config should be installed when any of the programs are built.
1381 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1382 error('remote support was requested, but dependencies are not available')
1383 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001384 have = have_deps[0] or have_deps[1]
1385else
1386 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001387endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001388conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001390foreach term : ['utmp',
1391 'hibernate',
1392 'environment-d',
1393 'binfmt',
1394 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001395 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001396 'resolve',
1397 'logind',
1398 'hostnamed',
1399 'localed',
1400 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001401 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001402 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001403 'networkd',
1404 'timedated',
1405 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001406 'firstboot',
1407 'randomseed',
1408 'backlight',
1409 'vconsole',
1410 'quotacheck',
1411 'sysusers',
1412 'tmpfiles',
1413 'hwdb',
1414 'rfkill',
1415 'ldconfig',
1416 'efi',
1417 'tpm',
1418 'ima',
1419 'smack',
1420 'gshadow',
1421 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001422 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001423 'nss-systemd']
1424 have = get_option(term)
1425 name = 'ENABLE_' + term.underscorify().to_upper()
1426 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427endforeach
1428
Yu Watanabe08540a92018-07-18 09:25:57 +09001429foreach tuple : [['nss-mymachines', 'machined'],
1430 ['nss-resolve', 'resolve']]
1431 want = get_option(tuple[0])
1432 if want != 'false'
1433 have = get_option(tuple[1])
1434 if want == 'true' and not have
1435 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1436 endif
1437 else
1438 have = false
1439 endif
1440 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1441 conf.set10(name, have)
1442endforeach
1443
1444enable_nss = false
1445foreach term : ['ENABLE_NSS_MYHOSTNAME',
1446 'ENABLE_NSS_MYMACHINES',
1447 'ENABLE_NSS_RESOLVE',
1448 'ENABLE_NSS_SYSTEMD']
1449 if conf.get(term) == 1
1450 enable_nss = true
1451 endif
1452endforeach
1453conf.set10('ENABLE_NSS', enable_nss)
1454
Yu Watanabe348b4432018-05-07 18:17:35 +09001455conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001456
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001457tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001458fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001459
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001460conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001461
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462#####################################################################
1463
1464if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001466
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001467 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001469 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 elif efi_arch == 'x86_64'
1471 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001472 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 elif efi_arch == 'arm'
1474 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001475 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 elif efi_arch == 'aarch64'
1477 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001478 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 else
1480 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001481 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001484 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001486
Yu Watanabeac093402018-05-10 16:04:16 +09001487 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001488else
1489 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001491conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492
1493#####################################################################
1494
1495config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 output : 'config.h',
1497 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498
Yu Watanabe348b4432018-05-07 18:17:35 +09001499meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1500
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001502 'src/boot',
Lennart Poetteringc76dd732020-05-05 09:57:04 +02001503 'src/home',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 'src/shared',
1505 'src/systemd',
1506 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001507 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001508 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509 'src/resolve',
1510 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001511 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512 'src/login',
1513 'src/udev',
1514 'src/libudev',
1515 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001516 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517 'src/libsystemd/sd-bus',
1518 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001519 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 'src/libsystemd/sd-hwdb',
1521 'src/libsystemd/sd-id128',
1522 'src/libsystemd/sd-netlink',
1523 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001524 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001526 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527
1528add_project_arguments('-include', 'config.h', language : 'c')
1529
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001530generate_gperfs = find_program('tools/generate-gperfs.py')
1531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532subdir('po')
1533subdir('catalog')
1534subdir('src/systemd')
1535subdir('src/basic')
1536subdir('src/libsystemd')
1537subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540
1541libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 'journal-core',
1543 libjournal_core_sources,
1544 journald_gperf_c,
1545 include_directories : includes,
1546 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547
Davide Cavalca1485aac2019-02-27 11:19:07 -05001548libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001551 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001552 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 include_directories : includes,
1554 link_args : ['-shared',
1555 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001556 link_with : [libbasic,
1557 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001558 link_whole : [libsystemd_static,
1559 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 dependencies : [threads,
1561 librt,
1562 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001563 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 liblz4],
1565 link_depends : libsystemd_sym,
1566 install : true,
1567 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001568
Davide Cavalca70848ec2018-04-09 02:43:35 -07001569static_libsystemd = get_option('static-libsystemd')
1570static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1571
1572install_libsystemd_static = static_library(
1573 'systemd',
1574 libsystemd_sources,
1575 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001576 basic_sources,
1577 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001578 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001579 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001580 build_by_default : static_libsystemd != 'false',
1581 install : static_libsystemd != 'false',
1582 install_dir : rootlibdir,
1583 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1584 dependencies : [threads,
1585 librt,
1586 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001587 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001588 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001589 libcap,
1590 libblkid,
1591 libmount,
1592 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001593 libgcrypt],
1594 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1595
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001596# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001597make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1598
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599############################################################
1600
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001601# binaries that have --help and are intended for use by humans,
1602# usually, but not always, installed in /bin.
1603public_programs = []
1604
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605subdir('src/libudev')
1606subdir('src/shared')
1607subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001608subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609subdir('src/udev')
1610subdir('src/network')
1611
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001612subdir('src/analyze')
1613subdir('src/journal-remote')
1614subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001615subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001616subdir('src/hostname')
1617subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001618subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001619subdir('src/kernel-install')
1620subdir('src/locale')
1621subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001622subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001623subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001624subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001625subdir('src/nspawn')
1626subdir('src/resolve')
1627subdir('src/timedate')
1628subdir('src/timesync')
1629subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001630subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001631
1632subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001633subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001634subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001635subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001636
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001637############################################################
1638
1639# only static linking apart from libdl, to make sure that the
1640# module is linked to all libraries that it uses.
1641test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 'test-dlopen',
1643 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001644 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 include_directories : includes,
1646 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001647 dependencies : [libdl],
1648 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001649
Yu Watanabe08540a92018-07-18 09:25:57 +09001650foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001651 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001652 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1653 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001654
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001655 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 if condition
1657 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001658
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001660 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001661
Lennart Poettering1684c562019-07-04 18:31:11 +02001662 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1663 if tuple.length() > 2
1664 sources += tuple[2].split()
1665 endif
1666
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 nss = shared_library(
1668 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001669 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001670 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 version : '2',
1672 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001673 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1674 link_args : ['-Wl,-z,nodelete',
1675 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001676 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001677 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001678 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 libbasic],
1680 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001681 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 link_depends : sym,
1683 install : true,
1684 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001685
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 # We cannot use shared_module because it does not support version suffix.
1687 # Unfortunately shared_library insists on creating the symlink…
1688 meson.add_install_script('sh', '-c',
1689 'rm $DESTDIR@0@/libnss_@1@.so'
1690 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001691
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001692 if want_tests != 'false'
1693 test('dlopen-nss_' + module,
1694 test_dlopen,
1695 # path to dlopen must include a slash
1696 args : nss.full_path())
1697 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001699endforeach
1700
1701############################################################
1702
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001703executable(
1704 'systemd',
1705 systemd_sources,
1706 include_directories : includes,
1707 link_with : [libcore,
1708 libshared],
1709 dependencies : [versiondep,
1710 threads,
1711 librt,
1712 libseccomp,
1713 libselinux,
1714 libmount,
1715 libblkid],
1716 install_rpath : rootlibexecdir,
1717 install : true,
1718 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001720meson.add_install_script(meson_make_symlink,
1721 join_paths(rootlibexecdir, 'systemd'),
1722 join_paths(rootsbindir, 'init'))
1723
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001724public_programs += executable(
1725 'systemd-analyze',
1726 systemd_analyze_sources,
1727 include_directories : includes,
1728 link_with : [libcore,
1729 libshared],
1730 dependencies : [versiondep,
1731 threads,
1732 librt,
1733 libseccomp,
1734 libselinux,
1735 libmount,
1736 libblkid],
1737 install_rpath : rootlibexecdir,
1738 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001740executable(
1741 'systemd-journald',
1742 systemd_journald_sources,
1743 include_directories : includes,
1744 link_with : [libjournal_core,
1745 libshared],
1746 dependencies : [threads,
1747 libxz,
1748 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001749 libselinux,
1750 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001755public_programs += executable(
1756 'systemd-cat',
1757 systemd_cat_sources,
1758 include_directories : includes,
1759 link_with : [libjournal_core,
1760 libshared],
1761 dependencies : [threads],
1762 install_rpath : rootlibexecdir,
1763 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001765public_programs += executable(
1766 'journalctl',
1767 journalctl_sources,
1768 include_directories : includes,
1769 link_with : [libshared],
1770 dependencies : [threads,
1771 libqrencode,
1772 libxz,
1773 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001774 libpcre2,
1775 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001780executable(
1781 'systemd-getty-generator',
1782 'src/getty-generator/getty-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-debug-generator',
1791 'src/debug-generator/debug-generator.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001798executable(
1799 'systemd-run-generator',
1800 'src/run-generator/run-generator.c',
1801 include_directories : includes,
1802 link_with : [libshared],
1803 install_rpath : rootlibexecdir,
1804 install : true,
1805 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001806
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001807executable(
1808 'systemd-fstab-generator',
1809 'src/fstab-generator/fstab-generator.c',
1810 include_directories : includes,
1811 link_with : [libcore_shared,
1812 libshared],
1813 install_rpath : rootlibexecdir,
1814 install : true,
1815 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001818 executable(
1819 '30-systemd-environment-d-generator',
1820 'src/environment-d-generator/environment-d-generator.c',
1821 include_directories : includes,
1822 link_with : [libshared],
1823 install_rpath : rootlibexecdir,
1824 install : true,
1825 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001826
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 meson.add_install_script(meson_make_symlink,
1828 join_paths(sysconfdir, 'environment'),
1829 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001830endif
1831
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001832if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001833 executable(
1834 'systemd-hibernate-resume-generator',
1835 'src/hibernate-resume/hibernate-resume-generator.c',
1836 include_directories : includes,
1837 link_with : [libshared],
1838 install_rpath : rootlibexecdir,
1839 install : true,
1840 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001841
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001842 executable(
1843 'systemd-hibernate-resume',
1844 'src/hibernate-resume/hibernate-resume.c',
1845 include_directories : includes,
1846 link_with : [libshared],
1847 install_rpath : rootlibexecdir,
1848 install : true,
1849 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850endif
1851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001852if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001853 executable(
1854 'systemd-gpt-auto-generator',
1855 'src/gpt-auto-generator/gpt-auto-generator.c',
1856 'src/shared/blkid-util.h',
1857 include_directories : includes,
1858 link_with : [libshared],
1859 dependencies : libblkid,
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001864 public_programs += executable(
1865 'systemd-dissect',
1866 'src/dissect/dissect.c',
1867 include_directories : includes,
1868 link_with : [libshared],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001874if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001875 executable(
1876 'systemd-resolved',
1877 systemd_resolved_sources,
1878 include_directories : includes,
1879 link_with : [libshared,
1880 libbasic_gcrypt,
1881 libsystemd_resolve_core],
1882 dependencies : systemd_resolved_dependencies,
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001887 public_programs += executable(
1888 'resolvectl',
1889 resolvectl_sources,
1890 include_directories : includes,
1891 link_with : [libshared,
1892 libbasic_gcrypt,
1893 libsystemd_resolve_core],
1894 dependencies : [threads,
1895 libgpg_error,
1896 libm,
1897 libidn],
1898 install_rpath : rootlibexecdir,
1899 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001900
1901 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001902 join_paths(bindir, 'resolvectl'),
1903 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001904
1905 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001906 join_paths(bindir, 'resolvectl'),
1907 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001911 executable(
1912 'systemd-logind',
1913 systemd_logind_sources,
1914 include_directories : includes,
1915 link_with : [liblogind_core,
1916 libshared],
1917 dependencies : [threads,
1918 libacl],
1919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001923 public_programs += executable(
1924 'loginctl',
1925 loginctl_sources,
1926 include_directories : includes,
1927 link_with : [libshared],
1928 dependencies : [threads,
1929 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001930 libxz,
1931 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001936 public_programs += executable(
1937 'systemd-inhibit',
1938 'src/login/inhibit.c',
1939 include_directories : includes,
1940 link_with : [libshared],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001944
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001945 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001946 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 pam_systemd = shared_library(
1948 'pam_systemd',
1949 pam_systemd_c,
1950 name_prefix : '',
1951 include_directories : includes,
1952 link_args : ['-shared',
1953 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001954 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 libshared_static],
1956 dependencies : [threads,
1957 libpam,
1958 libpam_misc],
1959 link_depends : pam_systemd_sym,
1960 install : true,
1961 install_dir : pamlibdir)
1962
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001963 if want_tests != 'false'
1964 test('dlopen-pam_systemd',
1965 test_dlopen,
1966 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001967 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001968 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001971 executable(
1972 'systemd-user-runtime-dir',
1973 user_runtime_dir_sources,
1974 include_directories : includes,
1975 link_with : [libshared],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001979endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001982 executable(
1983 'systemd-user-sessions',
1984 'src/user-sessions/user-sessions.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990endif
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001993 public_programs += executable(
1994 'bootctl',
1995 'src/boot/bootctl.c',
1996 include_directories : includes,
1997 link_with : [libshared],
1998 dependencies : [libblkid],
1999 install_rpath : rootlibexecdir,
2000 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02002001
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002002 public_programs += executable(
2003 'systemd-bless-boot',
2004 'src/boot/bless-boot.c',
2005 include_directories : includes,
2006 link_with : [libshared],
2007 dependencies : [libblkid],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002011
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002012 executable(
2013 'systemd-bless-boot-generator',
2014 'src/boot/bless-boot-generator.c',
2015 include_directories : includes,
2016 link_with : [libshared],
2017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020endif
2021
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002022executable(
2023 'systemd-boot-check-no-failures',
2024 'src/boot/boot-check-no-failures.c',
2025 include_directories : includes,
2026 link_with : [libshared],
2027 dependencies : [libblkid],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002031
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002032public_programs += executable(
2033 'systemd-socket-activate',
2034 'src/activate/activate.c',
2035 include_directories : includes,
2036 link_with : [libshared],
2037 dependencies : [threads],
2038 install_rpath : rootlibexecdir,
2039 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002040
2041if get_option('link-systemctl-shared')
2042 systemctl_link_with = [libshared]
2043else
2044 systemctl_link_with = [libsystemd_static,
2045 libshared_static,
2046 libjournal_client,
2047 libbasic_gcrypt]
2048endif
2049
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002050public_programs += executable(
2051 'systemctl',
2052 'src/systemctl/systemctl.c',
2053 'src/systemctl/sysv-compat.h',
2054 'src/systemctl/sysv-compat.c',
2055 include_directories : includes,
2056 link_with : systemctl_link_with,
2057 dependencies : [threads,
2058 libcap,
2059 libselinux,
2060 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002061 liblz4,
2062 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066
Lennart Poettering61d05782018-04-16 21:41:40 +02002067if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002068 executable(
2069 'systemd-portabled',
2070 systemd_portabled_sources,
2071 include_directories : includes,
2072 link_with : [libshared],
2073 dependencies : [threads],
2074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002077
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002078 public_programs += executable(
2079 'portablectl',
2080 'src/portable/portablectl.c',
2081 include_directories : includes,
2082 link_with : [libshared],
2083 dependencies : [threads],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002087endif
2088
Lennart Poetteringd093b622019-07-04 18:33:30 +02002089if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002090 executable(
2091 'systemd-userwork',
2092 systemd_userwork_sources,
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [threads],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002099
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002100 executable(
2101 'systemd-userdbd',
2102 systemd_userdbd_sources,
2103 include_directories : includes,
2104 link_with : [libshared],
2105 dependencies : [threads],
2106 install_rpath : rootlibexecdir,
2107 install : true,
2108 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002109
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002110 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002111 'userdbctl',
2112 userdbctl_sources,
2113 include_directories : includes,
2114 link_with : [libshared],
2115 dependencies : [threads],
2116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002119endif
2120
Lennart Poettering70a5db52019-07-04 18:35:39 +02002121if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002122 executable(
2123 'systemd-homework',
2124 systemd_homework_sources,
2125 include_directories : includes,
2126 link_with : [libshared],
2127 dependencies : [threads,
2128 libcryptsetup,
2129 libblkid,
2130 libcrypt,
2131 libopenssl,
2132 libfdisk,
2133 libp11kit],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002137
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002138 executable(
2139 'systemd-homed',
2140 systemd_homed_sources,
2141 include_directories : includes,
2142 link_with : [libshared],
2143 dependencies : [threads,
2144 libcrypt,
2145 libopenssl,
2146 libpwquality],
2147 install_rpath : rootlibexecdir,
2148 install : true,
2149 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002150
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002151 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002152 'homectl',
2153 homectl_sources,
2154 include_directories : includes,
2155 link_with : [libshared],
2156 dependencies : [threads,
2157 libcrypt,
2158 libopenssl,
2159 libp11kit,
2160 libpwquality],
2161 install_rpath : rootlibexecdir,
2162 install : true,
2163 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002164
2165 if conf.get('HAVE_PAM') == 1
2166 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2167 pam_systemd = shared_library(
2168 'pam_systemd_home',
2169 pam_systemd_home_c,
2170 name_prefix : '',
2171 include_directories : includes,
2172 link_args : ['-shared',
2173 '-Wl,--version-script=' + version_script_arg],
2174 link_with : [libsystemd_static,
2175 libshared_static],
2176 dependencies : [threads,
2177 libpam,
2178 libpam_misc,
2179 libcrypt],
2180 link_depends : pam_systemd_home_sym,
2181 install : true,
2182 install_dir : pamlibdir)
2183 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002184endif
2185
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002186foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2187 meson.add_install_script(meson_make_symlink,
2188 join_paths(rootbindir, 'systemctl'),
2189 join_paths(rootsbindir, alias))
2190endforeach
2191
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002192if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002193 executable(
2194 'systemd-backlight',
2195 'src/backlight/backlight.c',
2196 include_directories : includes,
2197 link_with : [libshared],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201endif
2202
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002203if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002204 executable(
2205 'systemd-rfkill',
2206 'src/rfkill/rfkill.c',
2207 include_directories : includes,
2208 link_with : [libshared],
2209 install_rpath : rootlibexecdir,
2210 install : true,
2211 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212endif
2213
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002214executable(
2215 'systemd-system-update-generator',
2216 'src/system-update-generator/system-update-generator.c',
2217 include_directories : includes,
2218 link_with : [libshared],
2219 install_rpath : rootlibexecdir,
2220 install : true,
2221 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002223if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002224 systemd_cryptsetup_sources = files('''
2225 src/cryptsetup/cryptsetup.c
2226 src/cryptsetup/cryptsetup-pkcs11.h
2227'''.split())
2228
2229 if conf.get('HAVE_P11KIT') == 1
2230 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2231 endif
2232
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002233 executable(
2234 'systemd-cryptsetup',
2235 systemd_cryptsetup_sources,
2236 include_directories : includes,
2237 link_with : [libshared],
2238 dependencies : [libcryptsetup,
2239 libp11kit],
2240 install_rpath : rootlibexecdir,
2241 install : true,
2242 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002244 executable(
2245 'systemd-cryptsetup-generator',
2246 'src/cryptsetup/cryptsetup-generator.c',
2247 include_directories : includes,
2248 link_with : [libshared],
2249 dependencies : [libcryptsetup],
2250 install_rpath : rootlibexecdir,
2251 install : true,
2252 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002254 executable(
2255 'systemd-veritysetup',
2256 'src/veritysetup/veritysetup.c',
2257 include_directories : includes,
2258 link_with : [libshared],
2259 dependencies : [libcryptsetup],
2260 install_rpath : rootlibexecdir,
2261 install : true,
2262 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002264 executable(
2265 'systemd-veritysetup-generator',
2266 'src/veritysetup/veritysetup-generator.c',
2267 include_directories : includes,
2268 link_with : [libshared],
2269 dependencies : [libcryptsetup],
2270 install_rpath : rootlibexecdir,
2271 install : true,
2272 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273endif
2274
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002275if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002276 executable(
2277 'systemd-sysv-generator',
2278 'src/sysv-generator/sysv-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 -04002284
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002285 executable(
2286 'systemd-rc-local-generator',
2287 'src/rc-local-generator/rc-local-generator.c',
2288 include_directories : includes,
2289 link_with : [libshared],
2290 install_rpath : rootlibexecdir,
2291 install : true,
2292 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293endif
2294
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002295if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002296 executable(
2297 'systemd-hostnamed',
2298 'src/hostname/hostnamed.c',
2299 include_directories : includes,
2300 link_with : [libshared],
2301 install_rpath : rootlibexecdir,
2302 install : true,
2303 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002304
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002305 public_programs += executable(
2306 'hostnamectl',
2307 'src/hostname/hostnamectl.c',
2308 include_directories : includes,
2309 link_with : [libshared],
2310 install_rpath : rootlibexecdir,
2311 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312endif
2313
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002314if conf.get('ENABLE_LOCALED') == 1
2315 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 # logind will load libxkbcommon.so dynamically on its own
2317 deps = [libdl]
2318 else
2319 deps = []
2320 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002321
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002322 executable(
2323 'systemd-localed',
2324 systemd_localed_sources,
2325 include_directories : includes,
2326 link_with : [libshared],
2327 dependencies : deps,
2328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002332 public_programs += executable(
2333 'localectl',
2334 localectl_sources,
2335 include_directories : includes,
2336 link_with : [libshared],
2337 install_rpath : rootlibexecdir,
2338 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002339endif
2340
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002341if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002342 executable(
2343 'systemd-timedated',
2344 'src/timedate/timedated.c',
2345 include_directories : includes,
2346 link_with : [libshared],
2347 install_rpath : rootlibexecdir,
2348 install : true,
2349 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002350endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002351
Yu Watanabe6129ec82018-05-03 18:07:43 +09002352if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002353 public_programs += executable(
2354 'timedatectl',
2355 'src/timedate/timedatectl.c',
2356 include_directories : includes,
2357 install_rpath : rootlibexecdir,
2358 link_with : [libshared],
2359 dependencies : [libm],
2360 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361endif
2362
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002363if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002364 if get_option('link-timesyncd-shared')
2365 timesyncd_link_with = [libshared]
2366 else
2367 timesyncd_link_with = [libsystemd_static,
2368 libshared_static,
2369 libjournal_client,
2370 libbasic_gcrypt]
2371 endif
2372
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002373 executable(
2374 'systemd-timesyncd',
2375 systemd_timesyncd_sources,
2376 include_directories : includes,
2377 link_with : [timesyncd_link_with],
2378 dependencies : [threads,
2379 libm],
2380 install_rpath : rootlibexecdir,
2381 install : true,
2382 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002383
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002384 executable(
2385 'systemd-time-wait-sync',
2386 'src/time-wait-sync/time-wait-sync.c',
2387 include_directories : includes,
2388 link_with : [timesyncd_link_with],
2389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392endif
2393
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002394if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002395 executable(
2396 'systemd-machined',
2397 systemd_machined_sources,
2398 include_directories : includes,
2399 link_with : [libmachine_core,
2400 libshared],
2401 install_rpath : rootlibexecdir,
2402 install : true,
2403 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002404
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002405 public_programs += executable(
2406 'machinectl',
2407 'src/machine/machinectl.c',
2408 include_directories : includes,
2409 link_with : [libshared],
2410 dependencies : [threads,
2411 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002412 liblz4,
2413 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002414 install_rpath : rootlibexecdir,
2415 install : true,
2416 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002417endif
2418
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002419if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002420 executable(
2421 'systemd-importd',
2422 systemd_importd_sources,
2423 include_directories : includes,
2424 link_with : [libshared],
2425 dependencies : [threads],
2426 install_rpath : rootlibexecdir,
2427 install : true,
2428 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002430 systemd_pull = executable(
2431 'systemd-pull',
2432 systemd_pull_sources,
2433 include_directories : includes,
2434 link_with : [libshared],
2435 dependencies : [versiondep,
2436 libcurl,
2437 libz,
2438 libbzip2,
2439 libxz,
2440 libgcrypt],
2441 install_rpath : rootlibexecdir,
2442 install : true,
2443 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002445 systemd_import = executable(
2446 'systemd-import',
2447 systemd_import_sources,
2448 include_directories : includes,
2449 link_with : [libshared],
2450 dependencies : [libcurl,
2451 libz,
2452 libbzip2,
2453 libxz],
2454 install_rpath : rootlibexecdir,
2455 install : true,
2456 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002458 systemd_import_fs = executable(
2459 'systemd-import-fs',
2460 systemd_import_fs_sources,
2461 include_directories : includes,
2462 link_with : [libshared],
2463 install_rpath : rootlibexecdir,
2464 install : true,
2465 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002466
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002467 systemd_export = executable(
2468 'systemd-export',
2469 systemd_export_sources,
2470 include_directories : includes,
2471 link_with : [libshared],
2472 dependencies : [libcurl,
2473 libz,
2474 libbzip2,
2475 libxz],
2476 install_rpath : rootlibexecdir,
2477 install : true,
2478 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002479
2480 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481endif
2482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002483if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002484 public_programs += executable(
2485 'systemd-journal-upload',
2486 systemd_journal_upload_sources,
2487 include_directories : includes,
2488 link_with : [libshared],
2489 dependencies : [versiondep,
2490 threads,
2491 libcurl,
2492 libgnutls,
2493 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002494 liblz4,
2495 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002496 install_rpath : rootlibexecdir,
2497 install : true,
2498 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002499endif
2500
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002501if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002502 public_programs += executable(
2503 'systemd-journal-remote',
2504 systemd_journal_remote_sources,
2505 include_directories : includes,
2506 link_with : [libshared,
2507 libsystemd_journal_remote],
2508 dependencies : [threads,
2509 libmicrohttpd,
2510 libgnutls,
2511 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002512 liblz4,
2513 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002514 install_rpath : rootlibexecdir,
2515 install : true,
2516 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002517
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002518 public_programs += executable(
2519 'systemd-journal-gatewayd',
2520 systemd_journal_gatewayd_sources,
2521 include_directories : includes,
2522 link_with : [libshared],
2523 dependencies : [threads,
2524 libmicrohttpd,
2525 libgnutls,
2526 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002527 liblz4,
2528 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002529 install_rpath : rootlibexecdir,
2530 install : true,
2531 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532endif
2533
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002534if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002535 executable(
2536 'systemd-coredump',
2537 systemd_coredump_sources,
2538 include_directories : includes,
2539 link_with : [libshared],
2540 dependencies : [threads,
2541 libacl,
2542 libdw,
2543 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002544 liblz4,
2545 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002546 install_rpath : rootlibexecdir,
2547 install : true,
2548 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002549
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002550 public_programs += executable(
2551 'coredumpctl',
2552 coredumpctl_sources,
2553 include_directories : includes,
2554 link_with : [libshared],
2555 dependencies : [threads,
2556 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002557 liblz4,
2558 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002559 install_rpath : rootlibexecdir,
2560 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002561endif
2562
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002563if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002564 executable(
2565 'systemd-pstore',
2566 systemd_pstore_sources,
2567 include_directories : includes,
2568 link_with : [libshared],
2569 dependencies : [threads,
2570 libacl,
2571 libdw,
2572 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002573 liblz4,
2574 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002575 install_rpath : rootlibexecdir,
2576 install : true,
2577 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002578endif
2579
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002580if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002581 public_programs += executable(
2582 'systemd-binfmt',
2583 'src/binfmt/binfmt.c',
2584 include_directories : includes,
2585 link_with : [libshared],
2586 install_rpath : rootlibexecdir,
2587 install : true,
2588 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589
2590 meson.add_install_script('sh', '-c',
2591 mkdir_p.format(binfmtdir))
2592 meson.add_install_script('sh', '-c',
2593 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2594endif
2595
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002596if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002597 exe = executable(
2598 'systemd-repart',
2599 systemd_repart_sources,
2600 include_directories : includes,
2601 link_with : [libshared],
2602 dependencies : [threads,
2603 libcryptsetup,
2604 libblkid,
2605 libfdisk,
2606 libopenssl],
2607 install_rpath : rootlibexecdir,
2608 install : true,
2609 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002610
2611 if want_tests != 'false'
2612 test('test-repart',
2613 test_repart_sh,
2614 args : exe.full_path())
2615 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002616endif
2617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002618if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002619 executable(
2620 'systemd-vconsole-setup',
2621 'src/vconsole/vconsole-setup.c',
2622 include_directories : includes,
2623 link_with : [libshared],
2624 install_rpath : rootlibexecdir,
2625 install : true,
2626 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627endif
2628
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002629if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002630 executable(
2631 'systemd-random-seed',
2632 'src/random-seed/random-seed.c',
2633 include_directories : includes,
2634 link_with : [libshared],
2635 install_rpath : rootlibexecdir,
2636 install : true,
2637 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638endif
2639
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002640if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002641 executable(
2642 'systemd-firstboot',
2643 'src/firstboot/firstboot.c',
2644 include_directories : includes,
2645 link_with : [libshared],
2646 dependencies : [libcrypt],
2647 install_rpath : rootlibexecdir,
2648 install : true,
2649 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650endif
2651
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002652executable(
2653 'systemd-remount-fs',
2654 'src/remount-fs/remount-fs.c',
2655 include_directories : includes,
2656 link_with : [libcore_shared,
2657 libshared],
2658 install_rpath : rootlibexecdir,
2659 install : true,
2660 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002662executable(
2663 'systemd-machine-id-setup',
2664 'src/machine-id-setup/machine-id-setup-main.c',
2665 include_directories : includes,
2666 link_with : [libcore_shared,
2667 libshared],
2668 install_rpath : rootlibexecdir,
2669 install : true,
2670 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002672executable(
2673 'systemd-fsck',
2674 'src/fsck/fsck.c',
2675 include_directories : includes,
2676 link_with : [libshared],
2677 install_rpath : rootlibexecdir,
2678 install : true,
2679 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002681executable('systemd-growfs',
2682 'src/partition/growfs.c',
2683 include_directories : includes,
2684 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002685 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002686 install_rpath : rootlibexecdir,
2687 install : true,
2688 install_dir : rootlibexecdir)
2689
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002690executable(
2691 'systemd-makefs',
2692 'src/partition/makefs.c',
2693 include_directories : includes,
2694 link_with : [libshared],
2695 install_rpath : rootlibexecdir,
2696 install : true,
2697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002698
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002699executable(
2700 'systemd-sleep',
2701 'src/sleep/sleep.c',
2702 include_directories : includes,
2703 link_with : [libshared],
2704 install_rpath : rootlibexecdir,
2705 install : true,
2706 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002707
Yu Watanabed25e1272019-01-03 02:32:57 +09002708install_data('src/sleep/sleep.conf',
2709 install_dir : pkgsysconfdir)
2710
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002711public_programs += executable(
2712 'systemd-sysctl',
2713 'src/sysctl/sysctl.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 +02002720executable(
2721 'systemd-ac-power',
2722 'src/ac-power/ac-power.c',
2723 include_directories : includes,
2724 link_with : [libshared],
2725 install_rpath : rootlibexecdir,
2726 install : true,
2727 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002729public_programs += executable(
2730 'systemd-detect-virt',
2731 'src/detect-virt/detect-virt.c',
2732 include_directories : includes,
2733 link_with : [libshared],
2734 install_rpath : rootlibexecdir,
2735 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002736
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002737public_programs += executable(
2738 'systemd-delta',
2739 'src/delta/delta.c',
2740 include_directories : includes,
2741 link_with : [libshared],
2742 install_rpath : rootlibexecdir,
2743 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002744
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002745public_programs += executable(
2746 'systemd-escape',
2747 'src/escape/escape.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 +02002754public_programs += executable(
2755 'systemd-notify',
2756 'src/notify/notify.c',
2757 include_directories : includes,
2758 link_with : [libshared],
2759 install_rpath : rootlibexecdir,
2760 install : true,
2761 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002762
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002763executable(
2764 'systemd-volatile-root',
2765 'src/volatile-root/volatile-root.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 +02002772executable(
2773 'systemd-cgroups-agent',
2774 'src/cgroups-agent/cgroups-agent.c',
2775 include_directories : includes,
2776 link_with : [libshared],
2777 install_rpath : rootlibexecdir,
2778 install : true,
2779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002781public_programs += executable(
2782 'systemd-id128',
2783 'src/id128/id128.c',
2784 include_directories : includes,
2785 link_with : [libshared],
2786 install_rpath : rootlibexecdir,
2787 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002788
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002789public_programs += executable(
2790 'systemd-path',
2791 'src/path/path.c',
2792 include_directories : includes,
2793 link_with : [libshared],
2794 install_rpath : rootlibexecdir,
2795 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002796
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002797public_programs += executable(
2798 'systemd-ask-password',
2799 'src/ask-password/ask-password.c',
2800 include_directories : includes,
2801 link_with : [libshared],
2802 install_rpath : rootlibexecdir,
2803 install : true,
2804 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002805
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002806executable(
2807 'systemd-reply-password',
2808 'src/reply-password/reply-password.c',
2809 include_directories : includes,
2810 link_with : [libshared],
2811 install_rpath : rootlibexecdir,
2812 install : true,
2813 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002814
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002815public_programs += executable(
2816 'systemd-tty-ask-password-agent',
2817 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2818 include_directories : includes,
2819 link_with : [libshared],
2820 install_rpath : rootlibexecdir,
2821 install : true,
2822 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002824public_programs += executable(
2825 'systemd-cgls',
2826 'src/cgls/cgls.c',
2827 include_directories : includes,
2828 link_with : [libshared],
2829 install_rpath : rootlibexecdir,
2830 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002832public_programs += executable(
2833 'systemd-cgtop',
2834 'src/cgtop/cgtop.c',
2835 include_directories : includes,
2836 link_with : [libshared],
2837 install_rpath : rootlibexecdir,
2838 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002839
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002840executable(
2841 'systemd-initctl',
2842 'src/initctl/initctl.c',
2843 include_directories : includes,
2844 link_with : [libshared],
2845 install_rpath : rootlibexecdir,
2846 install : true,
2847 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002848
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002849public_programs += executable(
2850 'systemd-mount',
2851 'src/mount/mount-tool.c',
2852 include_directories : includes,
2853 link_with : [libshared],
2854 dependencies: [libmount],
2855 install_rpath : rootlibexecdir,
2856 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002857
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002858meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002859 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002860
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002861public_programs += executable(
2862 'systemd-run',
2863 'src/run/run.c',
2864 include_directories : includes,
2865 link_with : [libshared],
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 'systemd-stdio-bridge',
2871 'src/stdio-bridge/stdio-bridge.c',
2872 include_directories : includes,
2873 link_with : [libshared],
2874 dependencies : [versiondep],
2875 install_rpath : rootlibexecdir,
2876 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002877
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002878public_programs += executable(
2879 'busctl',
2880 'src/busctl/busctl.c',
2881 'src/busctl/busctl-introspect.c',
2882 'src/busctl/busctl-introspect.h',
2883 include_directories : includes,
2884 link_with : [libshared],
2885 install_rpath : rootlibexecdir,
2886 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002887
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002888if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002889 public_programs += executable(
2890 'systemd-sysusers',
2891 'src/sysusers/sysusers.c',
2892 include_directories : includes,
2893 link_with : [libshared],
2894 install_rpath : rootlibexecdir,
2895 install : true,
2896 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002897endif
2898
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002899if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002900 exe = executable(
2901 'systemd-tmpfiles',
2902 'src/tmpfiles/tmpfiles.c',
Lennart Poetteringa3451c22020-05-05 22:45:54 +02002903 'src/tmpfiles/offline-passwd.c',
2904 'src/tmpfiles/offline-passwd.h',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002905 include_directories : includes,
2906 link_with : [libshared],
2907 dependencies : [libacl],
2908 install_rpath : rootlibexecdir,
2909 install : true,
2910 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002911 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002912
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002913 if want_tests != 'false'
2914 test('test-systemd-tmpfiles',
2915 test_systemd_tmpfiles_py,
2916 # https://github.com/mesonbuild/meson/issues/2681
2917 args : exe.full_path())
2918 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002919endif
2920
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002921if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002922 public_programs += executable(
2923 'systemd-hwdb',
2924 'src/hwdb/hwdb.c',
2925 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2926 include_directories : includes,
2927 link_with : [libudev_static],
2928 install_rpath : udev_rpath,
2929 install : true,
2930 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002931endif
2932
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002933if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002934 executable(
2935 'systemd-quotacheck',
2936 'src/quotacheck/quotacheck.c',
2937 include_directories : includes,
2938 link_with : [libshared],
2939 install_rpath : rootlibexecdir,
2940 install : true,
2941 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942endif
2943
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002944public_programs += executable(
2945 'systemd-socket-proxyd',
2946 'src/socket-proxy/socket-proxyd.c',
2947 include_directories : includes,
2948 link_with : [libshared],
2949 dependencies : [threads],
2950 install_rpath : rootlibexecdir,
2951 install : true,
2952 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002953
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002954public_programs += executable(
2955 'systemd-udevd',
2956 systemd_udevd_sources,
2957 include_directories : includes,
2958 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2959 link_with : [libudev_core,
2960 libsystemd_network,
2961 libudev_static],
2962 dependencies : [versiondep,
2963 threads,
2964 libkmod,
2965 libidn,
2966 libacl,
2967 libblkid],
2968 install_rpath : udev_rpath,
2969 install : true,
2970 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002971
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002972public_programs += executable(
2973 'udevadm',
2974 udevadm_sources,
2975 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2976 include_directories : includes,
2977 link_with : [libudev_core,
2978 libsystemd_network,
2979 libudev_static],
2980 dependencies : [versiondep,
2981 threads,
2982 libkmod,
2983 libidn,
2984 libacl,
2985 libblkid],
2986 install_rpath : udev_rpath,
2987 install : true,
2988 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002989
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002990executable(
2991 'systemd-shutdown',
2992 systemd_shutdown_sources,
2993 include_directories : includes,
2994 link_with : [libcore_shared,
2995 libshared],
2996 dependencies : [libmount],
2997 install_rpath : rootlibexecdir,
2998 install : true,
2999 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003000
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003001executable(
3002 'systemd-update-done',
3003 'src/update-done/update-done.c',
3004 include_directories : includes,
3005 link_with : [libshared],
3006 install_rpath : rootlibexecdir,
3007 install : true,
3008 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003009
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003010executable(
3011 'systemd-update-utmp',
3012 'src/update-utmp/update-utmp.c',
3013 include_directories : includes,
3014 link_with : [libshared],
3015 dependencies : [libaudit],
3016 install_rpath : rootlibexecdir,
3017 install : true,
3018 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003019
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003020if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003021 executable(
3022 'systemd-modules-load',
3023 'src/modules-load/modules-load.c',
3024 include_directories : includes,
3025 link_with : [libshared],
3026 dependencies : [libkmod],
3027 install_rpath : rootlibexecdir,
3028 install : true,
3029 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003030
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003031 meson.add_install_script('sh', '-c',
3032 mkdir_p.format(modulesloaddir))
3033 meson.add_install_script('sh', '-c',
3034 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003035endif
3036
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003037public_programs += executable(
3038 'systemd-nspawn',
3039 systemd_nspawn_sources,
3040 include_directories : includes,
3041 link_with : [libcore_shared,
3042 libnspawn_core,
3043 libshared],
3044 dependencies : [libblkid,
3045 libseccomp],
3046 install_rpath : rootlibexecdir,
3047 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003048
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003049if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003050 executable(
3051 'systemd-networkd',
3052 systemd_networkd_sources,
3053 include_directories : network_include_dir,
3054 link_with : [libnetworkd_core,
3055 libsystemd_network,
3056 libudev_static,
3057 networkd_link_with],
3058 dependencies : [threads],
3059 install_rpath : rootlibexecdir,
3060 install : true,
3061 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003062
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003063 executable(
3064 'systemd-networkd-wait-online',
3065 systemd_networkd_wait_online_sources,
3066 include_directories : includes,
3067 link_with : [libnetworkd_core,
3068 networkd_link_with],
3069 install_rpath : rootlibexecdir,
3070 install : true,
3071 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003072
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003073 public_programs += executable(
3074 'networkctl',
3075 networkctl_sources,
3076 include_directories : includes,
3077 link_with : [libsystemd_network,
3078 networkd_link_with],
3079 install_rpath : rootlibexecdir,
3080 install : true,
3081 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003082
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003083 exe = executable(
3084 'systemd-network-generator',
3085 network_generator_sources,
3086 include_directories : includes,
3087 link_with : [networkd_link_with],
3088 install_rpath : rootlibexecdir,
3089 install : true,
3090 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003091
3092 if want_tests != 'false'
3093 test('test-network-generator-conversion',
3094 test_network_generator_conversion_sh,
3095 # https://github.com/mesonbuild/meson/issues/2681
3096 args : exe.full_path())
3097 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003098endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003099
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003100executable(
3101 'systemd-sulogin-shell',
3102 ['src/sulogin-shell/sulogin-shell.c'],
3103 include_directories : includes,
3104 link_with : [libshared],
3105 install_rpath : rootlibexecdir,
3106 install : true,
3107 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003108
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003109############################################################
3110
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003111custom_target(
3112 'systemd-runtest.env',
3113 output : 'systemd-runtest.env',
3114 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003115 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003116 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003117 '} >@OUTPUT@'],
3118 build_by_default : true)
3119
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003120foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003121 sources = tuple[0]
3122 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3123 dependencies = tuple[2]
3124 condition = tuple.length() >= 4 ? tuple[3] : ''
3125 type = tuple.length() >= 5 ? tuple[4] : ''
3126 defs = tuple.length() >= 6 ? tuple[5] : []
3127 incs = tuple.length() >= 7 ? tuple[6] : includes
3128 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003129
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003130 name = sources[0].split('/')[-1].split('.')[0]
3131 if type.startswith('timeout=')
3132 timeout = type.split('=')[1].to_int()
3133 type = ''
3134 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003135
3136 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003137 exe = executable(
3138 name,
3139 sources,
3140 include_directories : incs,
3141 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003142 dependencies : [versiondep,
3143 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003144 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003145 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003146 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003147 install : install_tests,
3148 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003149
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003150 if type == 'manual'
3151 message('@0@ is a manual test'.format(name))
3152 elif type == 'unsafe' and want_tests != 'unsafe'
3153 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003154 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003155 test(name, exe,
3156 env : test_env,
3157 timeout : timeout)
3158 endif
3159 else
3160 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3161 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003162endforeach
3163
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003164exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003165 'test-libsystemd-sym',
3166 test_libsystemd_sym_c,
3167 include_directories : includes,
3168 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003169 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003170 install : install_tests,
3171 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003172if want_tests != 'false'
3173 test('test-libsystemd-sym', exe)
3174endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003175
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003176exe = executable(
3177 'test-libsystemd-static-sym',
3178 test_libsystemd_sym_c,
3179 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003180 link_with : [install_libsystemd_static],
3181 dependencies : [threads], # threads is already included in dependencies on the library,
3182 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003183 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003184 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003185 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003186if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003187 test('test-libsystemd-static-sym', exe)
3188endif
3189
3190exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003191 'test-libudev-sym',
3192 test_libudev_sym_c,
3193 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003194 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003195 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003196 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003197 install : install_tests,
3198 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003199if want_tests != 'false'
3200 test('test-libudev-sym', exe)
3201endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003202
3203exe = executable(
3204 'test-libudev-static-sym',
3205 test_libudev_sym_c,
3206 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003207 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003208 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003209 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003210 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003211 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003212if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003213 test('test-libudev-static-sym', exe)
3214endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003215
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003216############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003217
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003218fuzzer_exes = []
3219
Michael Olbrich59967402018-11-11 11:27:35 +01003220if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003221 foreach tuple : fuzzers
3222 sources = tuple[0]
3223 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3224 dependencies = tuple[2]
3225 defs = tuple.length() >= 4 ? tuple[3] : []
3226 incs = tuple.length() >= 5 ? tuple[4] : includes
3227 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003228
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003229 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003230 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003231 elif want_libfuzzer
3232 if fuzzing_engine.found()
3233 dependencies += fuzzing_engine
3234 else
3235 link_args += ['-fsanitize=fuzzer']
3236 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003237 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003238 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003239 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003240
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003241 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003242
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003243 fuzzer_exes += executable(
3244 name,
3245 sources,
3246 include_directories : [incs, include_directories('src/fuzz')],
3247 link_with : link_with,
3248 dependencies : dependencies,
3249 c_args : defs,
3250 link_args: link_args,
3251 install : false)
3252 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003253endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003254
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003255run_target(
3256 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003257 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003258 command : ['true'])
3259
3260############################################################
3261
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003262make_directive_index_py = find_program('tools/make-directive-index.py')
3263make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003264xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003265hwdb_update_sh = find_program('tools/hwdb-update.sh')
3266autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003267
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003268subdir('sysctl.d')
3269subdir('sysusers.d')
3270subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003271subdir('hwdb.d')
3272subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003273subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003274subdir('network')
3275subdir('man')
3276subdir('shell-completion/bash')
3277subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003278subdir('docs/sysvinit')
3279subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003280
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003281install_subdir('factory/etc',
3282 install_dir : factorydir)
3283
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003284install_data('xorg/50-systemd-user.sh',
3285 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003286install_data('modprobe.d/systemd.conf',
3287 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003288install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003289 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003290 'NEWS',
3291 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303292 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003293 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003294 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003295 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003296 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003297 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003298 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003299 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3300 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003301
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003302meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3303meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3304
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003305############################################################
3306
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003307check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003308
3309foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003310 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003311 if want_tests != 'false'
3312 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003313 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003314 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003315 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003316endforeach
3317
3318############################################################
3319
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003320check_directives_sh = find_program('tools/check-directives.sh')
3321
3322if want_tests != 'false'
3323 test('check-directives',
3324 check_directives_sh,
3325 args : project_source_root)
3326endif
3327
3328############################################################
3329
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003330# Enable tests for all supported sanitizers
3331foreach tuple : sanitizers
3332 sanitizer = tuple[0]
3333 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003334
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003335 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003336 prev = ''
3337 foreach p : fuzz_regression_tests
3338 b = p.split('/')[-2]
3339 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003340
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003341 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003342
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003343 if name != prev
3344 if want_tests == 'false'
3345 message('Not compiling @0@ because tests is set to false'.format(name))
3346 elif slow_tests
3347 exe = custom_target(
3348 name,
3349 output : name,
3350 depends : build,
3351 command : [env, 'ln', '-fs',
3352 join_paths(build.full_path(), b),
3353 '@OUTPUT@'],
3354 build_by_default : true)
3355 else
3356 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3357 endif
3358 endif
3359 prev = name
3360
3361 if want_tests != 'false' and slow_tests
3362 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3363 env,
3364 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003365 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003366 endif
3367 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003368 endif
3369endforeach
3370
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003371
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003372############################################################
3373
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003374if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003375 all_files = run_command(
3376 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003377 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003378 'ls-files',
3379 ':/*.[ch]'])
3380 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003381
userwithuide85a6902017-08-09 13:41:44 +00003382 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003383 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003384 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003385 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003386 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003387 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003388 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003389endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003390
3391if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003392 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003393 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003394 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003395 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003396endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003397
3398if git.found()
3399 git_head = run_command(
3400 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003401 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003402 'rev-parse', 'HEAD']).stdout().strip()
3403 git_head_short = run_command(
3404 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003405 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003406 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3407
3408 run_target(
3409 'git-snapshot',
3410 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003411 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003412 git_head_short),
3413 '--prefix', 'systemd-@0@/'.format(git_head),
3414 'HEAD'])
3415endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003416
3417############################################################
3418
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003419check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003420run_target(
3421 'check-api-docs',
3422 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003423 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003424
3425############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003426watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003427
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003428status = [
3429 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3430
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003431 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003432 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003433 'prefix directory: @0@'.format(prefixdir),
3434 'rootprefix directory: @0@'.format(rootprefixdir),
3435 'sysconf directory: @0@'.format(sysconfdir),
3436 'include directory: @0@'.format(includedir),
3437 'lib directory: @0@'.format(libdir),
3438 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003439 'SysV init scripts: @0@'.format(sysvinit_path),
3440 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003441 'PAM modules directory: @0@'.format(pamlibdir),
3442 'PAM configuration directory: @0@'.format(pamconfdir),
3443 'RPM macros directory: @0@'.format(rpmmacrosdir),
3444 'modprobe.d directory: @0@'.format(modprobedir),
3445 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3446 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3447 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3448 'bash completions directory: @0@'.format(bashcompletiondir),
3449 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003451 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3452 get_option('debug-tty')),
3453 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003454 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003455 'maximum system UID: @0@'.format(system_uid_max),
3456 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003457 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3458 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3459 'minimum container UID base: @0@'.format(container_uid_base_min),
3460 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003461 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003462 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003463 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003464 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003465 'nobody user name: @0@'.format(nobody_user),
3466 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003467 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003468 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003469
3470 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003471 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003472 'default mDNS mode: @0@'.format(default_mdns),
3473 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003474 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003475 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003476 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003477 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003478 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003479 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003480
3481alt_dns_servers = '\n '.join(dns_servers.split(' '))
3482alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3483status += [
3484 'default DNS servers: @0@'.format(alt_dns_servers),
3485 'default NTP servers: @0@'.format(alt_ntp_servers)]
3486
3487alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3488 '@@0@'.format(time_epoch)).stdout().strip()
3489status += [
3490 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3491
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003492status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003493 'static libsystemd: @0@'.format(static_libsystemd),
3494 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003495
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003496# TODO:
3497# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3498# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3499# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3500
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003501if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003502 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003503
3504 if have_gnu_efi
3505 status += [
3506 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003507 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003508 'EFI lds: @0@'.format(efi_lds),
3509 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003510 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003511 endif
3512endif
3513
3514found = []
3515missing = []
3516
3517foreach tuple : [
3518 ['libcryptsetup'],
3519 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003520 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003521 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003522 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003523 ['AUDIT'],
3524 ['IMA'],
3525 ['AppArmor'],
3526 ['SELinux'],
3527 ['SECCOMP'],
3528 ['SMACK'],
3529 ['zlib'],
3530 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003531 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003532 ['lz4'],
3533 ['bzip2'],
3534 ['ACL'],
3535 ['gcrypt'],
3536 ['qrencode'],
3537 ['microhttpd'],
3538 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003539 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003540 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003541 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003542 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003543 ['libidn'],
3544 ['libiptc'],
3545 ['elfutils'],
3546 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003547 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003548 ['vconsole'],
3549 ['quotacheck'],
3550 ['tmpfiles'],
3551 ['environment.d'],
3552 ['sysusers'],
3553 ['firstboot'],
3554 ['randomseed'],
3555 ['backlight'],
3556 ['rfkill'],
3557 ['logind'],
3558 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003559 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003560 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003561 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003562 ['importd'],
3563 ['hostnamed'],
3564 ['timedated'],
3565 ['timesyncd'],
3566 ['localed'],
3567 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003568 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003569 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3570 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003571 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003572 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003573 ['polkit'],
3574 ['legacy pkla', install_polkit_pkla],
3575 ['efi'],
3576 ['gnu-efi', have_gnu_efi],
3577 ['kmod'],
3578 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003579 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003580 ['blkid'],
3581 ['dbus'],
3582 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003583 ['nss-myhostname'],
3584 ['nss-mymachines'],
3585 ['nss-resolve'],
3586 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003587 ['hwdb'],
3588 ['tpm'],
3589 ['man pages', want_man],
3590 ['html pages', want_html],
3591 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003592 ['SysV compat'],
3593 ['utmp'],
3594 ['ldconfig'],
3595 ['hibernate'],
3596 ['adm group', get_option('adm-group')],
3597 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003598 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003599 ['debug hashmap'],
3600 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003601 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003602 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003603 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003604 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003605 ['link-udev-shared', get_option('link-udev-shared')],
3606 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003607 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003608 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003609 ['kernel-install', get_option('kernel-install')],
3610 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003611]
3612
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003613 if tuple.length() >= 2
3614 cond = tuple[1]
3615 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003616 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3617 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003618 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003619 endif
3620 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003621 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003622 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003623 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003624 endif
3625endforeach
3626
3627status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003628 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003629 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003630 '',
3631 'disabled features: @0@'.format(', '.join(missing)),
3632 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003633message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003634
3635if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003636 warning('\n' +
3637 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3638 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3639 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003640endif