blob: 580d5126fae71178165da41d0264a664b06203c8 [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
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400672 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900673 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675conf.set('TIME_EPOCH', time_epoch)
676
677system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900678if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400679 system_uid_max = run_command(
680 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800681 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
682 '/etc/login.defs').stdout().strip()
683 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900684 system_uid_max = 999
685 else
686 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800687 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689conf.set('SYSTEM_UID_MAX', system_uid_max)
690substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900693if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 system_gid_max = run_command(
695 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800696 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
697 '/etc/login.defs').stdout().strip()
698 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900699 system_gid_max = 999
700 else
701 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800702 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704conf.set('SYSTEM_GID_MAX', system_gid_max)
705substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706
Yu Watanabeac093402018-05-10 16:04:16 +0900707dynamic_uid_min = get_option('dynamic-uid-min')
708dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100709conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
710conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
711substs.set('dynamicuidmin', dynamic_uid_min)
712substs.set('dynamicuidmax', dynamic_uid_max)
713
Yu Watanabeac093402018-05-10 16:04:16 +0900714container_uid_base_min = get_option('container-uid-base-min')
715container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100716conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
717conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
718substs.set('containeruidbasemin', container_uid_base_min)
719substs.set('containeruidbasemax', container_uid_base_max)
720
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721nobody_user = get_option('nobody-user')
722nobody_group = get_option('nobody-group')
723
Chen Qi2484bff2018-07-23 14:53:09 +0800724if not meson.is_cross_build()
725 getent_result = run_command('getent', 'passwd', '65534')
726 if getent_result.returncode() == 0
727 name = getent_result.stdout().split(':')[0]
728 if name != nobody_user
729 warning('\n' +
730 '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) +
731 'Your build will result in an user table setup that is incompatible with the local system.')
732 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100733 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800734 id_result = run_command('id', '-u', nobody_user)
735 if id_result.returncode() == 0
736 id = id_result.stdout().to_int()
737 if id != 65534
738 warning('\n' +
739 '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) +
740 'Your build will result in an user table setup that is incompatible with the local system.')
741 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100742 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743
Chen Qi2484bff2018-07-23 14:53:09 +0800744 getent_result = run_command('getent', 'group', '65534')
745 if getent_result.returncode() == 0
746 name = getent_result.stdout().split(':')[0]
747 if name != nobody_group
748 warning('\n' +
749 '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) +
750 'Your build will result in an group table setup that is incompatible with the local system.')
751 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100752 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800753 id_result = run_command('id', '-g', nobody_group)
754 if id_result.returncode() == 0
755 id = id_result.stdout().to_int()
756 if id != 65534
757 warning('\n' +
758 '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) +
759 'Your build will result in an group table setup that is incompatible with the local system.')
760 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100761 endif
762endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900763if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900764 warning('\n' +
765 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
766 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900767endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100768
769conf.set_quoted('NOBODY_USER_NAME', nobody_user)
770conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900771substs.set('NOBODY_USER_NAME', nobody_user)
772substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100773
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774tty_gid = get_option('tty-gid')
775conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400776substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
Ikey Doherty84786b82017-12-03 12:28:23 +0000778# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900779users_gid = get_option('users-gid')
780substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000781
Yu Watanabe348b4432018-05-07 18:17:35 +0900782conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
783conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784
Michael Bieblace5e312018-07-13 23:36:13 +0200785dev_kvm_mode = get_option('dev-kvm-mode')
786substs.set('DEV_KVM_MODE', dev_kvm_mode)
787conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100788group_render_mode = get_option('group-render-mode')
789substs.set('GROUP_RENDER_MODE', group_render_mode)
790conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400792kill_user_processes = get_option('default-kill-user-processes')
793conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100794conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400795substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400797dns_servers = get_option('dns-servers')
798conf.set_quoted('DNS_SERVERS', dns_servers)
799substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400801ntp_servers = get_option('ntp-servers')
802conf.set_quoted('NTP_SERVERS', ntp_servers)
803substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804
Dave Reisner8ca9e922018-12-28 07:38:36 -0500805default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900806if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800807 if not meson.is_cross_build()
808 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
809 default_locale = run_command(choose_default_locale_sh).stdout().strip()
810 else
811 default_locale = 'C.UTF-8'
812 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900813endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500814conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
815
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
817
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200818service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700819watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
820substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200821
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400822substs.set('SUSHELL', get_option('debug-shell'))
823substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200824conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826enable_debug_hashmap = false
827enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900828enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200829foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900830 if name == 'hashmap'
831 enable_debug_hashmap = true
832 elif name == 'mmap-cache'
833 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900834 elif name == 'siphash'
835 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900836 else
837 message('unknown debug option "@0@", ignoring'.format(name))
838 endif
839endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
841conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900842conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400843
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200844conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200845conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200846
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100847default_user_path = get_option('user-path')
848if default_user_path != ''
849 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100850 default_user_path_display = default_user_path
851else
852 # meson 0.49 fails when ?: is used in .format()
853 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100854endif
855
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100856
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857#####################################################################
858
859threads = dependency('threads')
860librt = cc.find_library('rt')
861libm = cc.find_library('m')
862libdl = cc.find_library('dl')
863libcrypt = cc.find_library('crypt')
864
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400865libcap = dependency('libcap', required : false)
866if not libcap.found()
867 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
868 libcap = cc.find_library('cap')
869endif
870
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100872 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100874want_libfdisk = get_option('fdisk')
875if want_libfdisk != 'false' and not skip_deps
876 libfdisk = dependency('fdisk',
877 required : want_libfdisk == 'true')
878 have = libfdisk.found()
879else
880 have = false
881 libfdisk = []
882endif
883conf.set10('HAVE_LIBFDISK', have)
884
Lennart Poettering70a5db52019-07-04 18:35:39 +0200885want_pwquality = get_option('pwquality')
886if want_pwquality != 'false' and not skip_deps
887 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
888 have = libpwquality.found()
889else
890 have = false
891 libpwquality = []
892endif
893conf.set10('HAVE_PWQUALITY', have)
894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000896if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400898 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
907want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000908if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libselinux = dependency('libselinux',
910 version : '>= 2.1.9',
911 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
919want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000920if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libapparmor = dependency('libapparmor',
922 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930smack_run_label = get_option('smack-run-label')
931if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
934
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400935want_polkit = get_option('polkit')
936install_polkit = false
937install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000938if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400940
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 libpolkit = dependency('polkit-gobject-1',
942 required : false)
943 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
944 message('Old polkit detected, will install pkla files')
945 install_polkit_pkla = true
946 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400949
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000951if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400956 libacl = []
957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000961if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969
970want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000971if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000981if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libkmod = dependency('libkmod',
983 version : '>= 15',
984 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991
992want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000993if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libpam = cc.find_library('pam', required : want_pam == 'true')
995 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libpam = []
1000 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003
1004want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001005if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libmicrohttpd = dependency('libmicrohttpd',
1007 version : '>= 0.9.33',
1008 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015
1016want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001017if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001019 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001022
1023 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1024 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
1031want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001032if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libcurl = dependency('libcurl',
1034 version : '>= 7.32.0',
1035 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042
1043want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001044want_libidn2 = get_option('libidn2')
1045if want_libidn == 'true' and want_libidn2 == 'true'
1046 error('libidn and libidn2 cannot be requested simultaneously')
1047endif
1048
Yu Watanabe1b931392019-06-29 03:13:30 +09001049if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001050 libidn = dependency('libidn2',
1051 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libidn.found()
1053else
1054 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001055 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001058if not have and want_libidn != 'false' and not skip_deps
1059 # libidn is used for both libidn and libidn2 objects
1060 libidn = dependency('libidn',
1061 required : want_libidn == 'true')
1062 have = libidn.found()
1063else
1064 have = false
1065endif
1066conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
1068want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001069if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libiptc = dependency('libiptc',
1071 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
1079want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001080if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libqrencode = dependency('libqrencode',
1082 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001086 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001090want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001091if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1093 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001095else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = false
1097endif
1098if not have
1099 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100 libgcrypt = []
1101 libgpg_error = []
1102endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001106if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 libgnutls = dependency('gnutls',
1108 version : '>= 3.1.4',
1109 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001113 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001117want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001118if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001119 libopenssl = dependency('openssl',
1120 version : '>= 1.1.0',
1121 required : want_openssl == 'true')
1122 have = libopenssl.found()
1123else
1124 have = false
1125 libopenssl = []
1126endif
1127conf.set10('HAVE_OPENSSL', have)
1128
Lennart Poettering839fddb2019-11-05 11:49:27 +01001129want_p11kit = get_option('p11kit')
1130if want_p11kit != 'false' and not skip_deps
1131 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001132 version : '>= 0.23.3',
1133 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001134 have = libp11kit.found()
1135else
1136 have = false
1137 libp11kit = []
1138endif
1139conf.set10('HAVE_P11KIT', have)
1140
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001142if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libdw = dependency('libdw',
1144 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001153if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libz = dependency('zlib',
1155 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
1163want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001164if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libbzip2 = cc.find_library('bz2',
1166 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
1174want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001175if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 libxz = dependency('liblzma',
1177 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001181 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184
1185want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001186if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001187 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001188 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001191else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001195conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001196
Norbert Langeef5924a2020-04-12 01:09:05 +02001197want_zstd = get_option('zstd')
1198if want_zstd != 'false' and not skip_deps
1199 libzstd = dependency('libzstd',
1200 required : want_zstd == 'true',
1201 version : '>= 1.4.0')
1202 have = libzstd.found()
1203else
1204 have = false
1205 libzstd = []
1206endif
1207conf.set10('HAVE_ZSTD', have)
1208
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001209want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001210if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001211 libxkbcommon = dependency('xkbcommon',
1212 version : '>= 0.3.0',
1213 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001215else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001216 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001217 libxkbcommon = []
1218endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001220
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001221want_pcre2 = get_option('pcre2')
1222if want_pcre2 != 'false'
1223 libpcre2 = dependency('libpcre2-8',
1224 required : want_pcre2 == 'true')
1225 have = libpcre2.found()
1226else
1227 have = false
1228 libpcre2 = []
1229endif
1230conf.set10('HAVE_PCRE2', have)
1231
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001232want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001233if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 libglib = dependency('glib-2.0',
1235 version : '>= 2.22.0',
1236 required : want_glib == 'true')
1237 libgobject = dependency('gobject-2.0',
1238 version : '>= 2.22.0',
1239 required : want_glib == 'true')
1240 libgio = dependency('gio-2.0',
1241 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001242 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001243else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 libglib = []
1246 libgobject = []
1247 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001248endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001250
1251want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001252if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001253 libdbus = dependency('dbus-1',
1254 version : '>= 1.3.2',
1255 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001256 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001257else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001258 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001259 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001260endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001261conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001262
Yu Watanabe42303dc2017-06-18 05:22:32 +09001263default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001264if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001265 default_dnssec = 'no'
1266endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001267if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001268 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1269 default_dnssec = 'no'
1270endif
1271conf.set('DEFAULT_DNSSEC_MODE',
1272 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1273substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1274
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001275dns_over_tls = get_option('dns-over-tls')
1276if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001277 if dns_over_tls == 'openssl'
1278 have_gnutls = false
1279 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001280 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001281 if dns_over_tls == 'gnutls' and not have_gnutls
1282 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1283 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001284 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001285 if dns_over_tls == 'gnutls' or have_gnutls
1286 have_openssl = false
1287 else
1288 have_openssl = conf.get('HAVE_OPENSSL') == 1
1289 if dns_over_tls != 'auto' and not have_openssl
1290 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001291 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001292 endif
1293 endif
1294 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001295else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001296 have = false
1297 have_gnutls = false
1298 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001299endif
1300conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001301conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1302conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001303
Iwan Timmerc9299be2018-06-13 20:26:24 +02001304default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001305if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001306 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001307endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001308if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001309 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 +02001310 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001311endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001312conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1313 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1314substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001315
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001316default_mdns = get_option('default-mdns')
1317conf.set('DEFAULT_MDNS_MODE',
1318 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1319substs.set('DEFAULT_MDNS_MODE', default_mdns)
1320
1321default_llmnr = get_option('default-llmnr')
1322conf.set('DEFAULT_LLMNR_MODE',
1323 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1324substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1325
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001326want_repart = get_option('repart')
1327if want_repart != 'false'
1328 have = (conf.get('HAVE_OPENSSL') == 1 and
1329 conf.get('HAVE_LIBFDISK') == 1)
1330 if want_repart == 'true' and not have
1331 error('repart support was requested, but dependencies are not available')
1332 endif
1333else
1334 have = false
1335endif
1336conf.set10('ENABLE_REPART', have)
1337
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001339if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001340 have = (conf.get('HAVE_LIBCURL') == 1 and
1341 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001342 conf.get('HAVE_XZ') == 1 and
1343 conf.get('HAVE_GCRYPT') == 1)
1344 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 error('importd support was requested, but dependencies are not available')
1346 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001347else
1348 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001350conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351
Lennart Poettering70a5db52019-07-04 18:35:39 +02001352want_homed = get_option('homed')
1353if want_homed != 'false'
1354 have = (conf.get('HAVE_OPENSSL') == 1 and
1355 conf.get('HAVE_LIBFDISK') == 1 and
1356 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1357 if want_homed == 'true' and not have
1358 error('homed support was requested, but dependencies are not available')
1359 endif
1360else
1361 have = false
1362endif
1363conf.set10('ENABLE_HOMED', have)
1364
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001365have = have and conf.get('HAVE_PAM') == 1
1366conf.set10('ENABLE_PAM_HOME', have)
1367
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001369if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001370 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1371 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001372 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1373 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001374 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 # config should be installed when any of the programs are built.
1376 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1377 error('remote support was requested, but dependencies are not available')
1378 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001379 have = have_deps[0] or have_deps[1]
1380else
1381 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001383conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001385foreach term : ['utmp',
1386 'hibernate',
1387 'environment-d',
1388 'binfmt',
1389 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001390 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001391 'resolve',
1392 'logind',
1393 'hostnamed',
1394 'localed',
1395 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001396 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001397 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001398 'networkd',
1399 'timedated',
1400 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001401 'firstboot',
1402 'randomseed',
1403 'backlight',
1404 'vconsole',
1405 'quotacheck',
1406 'sysusers',
1407 'tmpfiles',
1408 'hwdb',
1409 'rfkill',
1410 'ldconfig',
1411 'efi',
1412 'tpm',
1413 'ima',
1414 'smack',
1415 'gshadow',
1416 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001417 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001418 'nss-systemd']
1419 have = get_option(term)
1420 name = 'ENABLE_' + term.underscorify().to_upper()
1421 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422endforeach
1423
Yu Watanabe08540a92018-07-18 09:25:57 +09001424foreach tuple : [['nss-mymachines', 'machined'],
1425 ['nss-resolve', 'resolve']]
1426 want = get_option(tuple[0])
1427 if want != 'false'
1428 have = get_option(tuple[1])
1429 if want == 'true' and not have
1430 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1431 endif
1432 else
1433 have = false
1434 endif
1435 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1436 conf.set10(name, have)
1437endforeach
1438
1439enable_nss = false
1440foreach term : ['ENABLE_NSS_MYHOSTNAME',
1441 'ENABLE_NSS_MYMACHINES',
1442 'ENABLE_NSS_RESOLVE',
1443 'ENABLE_NSS_SYSTEMD']
1444 if conf.get(term) == 1
1445 enable_nss = true
1446 endif
1447endforeach
1448conf.set10('ENABLE_NSS', enable_nss)
1449
Yu Watanabe348b4432018-05-07 18:17:35 +09001450conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001451
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001452tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001453fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001454
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001455conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001456
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457#####################################################################
1458
1459if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001460 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001461
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001462 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001463 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001464 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 elif efi_arch == 'x86_64'
1466 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001467 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 elif efi_arch == 'arm'
1469 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001470 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001471 elif efi_arch == 'aarch64'
1472 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001473 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001474 else
1475 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001476 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001479 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001481
Yu Watanabeac093402018-05-10 16:04:16 +09001482 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001483else
1484 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001486conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487
1488#####################################################################
1489
1490config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 output : 'config.h',
1492 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493
Yu Watanabe348b4432018-05-07 18:17:35 +09001494meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1495
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001497 'src/boot',
Lennart Poetteringc76dd732020-05-05 09:57:04 +02001498 'src/home',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499 'src/shared',
1500 'src/systemd',
1501 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001502 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001503 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 'src/resolve',
1505 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001506 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507 'src/login',
1508 'src/udev',
1509 'src/libudev',
1510 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001511 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512 'src/libsystemd/sd-bus',
1513 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001514 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515 'src/libsystemd/sd-hwdb',
1516 'src/libsystemd/sd-id128',
1517 'src/libsystemd/sd-netlink',
1518 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001519 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001521 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522
1523add_project_arguments('-include', 'config.h', language : 'c')
1524
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001525generate_gperfs = find_program('tools/generate-gperfs.py')
1526
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527subdir('po')
1528subdir('catalog')
1529subdir('src/systemd')
1530subdir('src/basic')
1531subdir('src/libsystemd')
1532subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535
1536libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 'journal-core',
1538 libjournal_core_sources,
1539 journald_gperf_c,
1540 include_directories : includes,
1541 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542
Davide Cavalca1485aac2019-02-27 11:19:07 -05001543libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001546 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001547 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 include_directories : includes,
1549 link_args : ['-shared',
1550 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001551 link_with : [libbasic,
1552 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001553 link_whole : [libsystemd_static,
1554 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 dependencies : [threads,
1556 librt,
1557 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001558 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 liblz4],
1560 link_depends : libsystemd_sym,
1561 install : true,
1562 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001563
Davide Cavalca70848ec2018-04-09 02:43:35 -07001564static_libsystemd = get_option('static-libsystemd')
1565static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1566
1567install_libsystemd_static = static_library(
1568 'systemd',
1569 libsystemd_sources,
1570 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001571 basic_sources,
1572 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001573 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001574 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001575 build_by_default : static_libsystemd != 'false',
1576 install : static_libsystemd != 'false',
1577 install_dir : rootlibdir,
1578 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1579 dependencies : [threads,
1580 librt,
1581 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001582 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001583 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001584 libcap,
1585 libblkid,
1586 libmount,
1587 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001588 libgcrypt],
1589 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1590
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001591# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001592make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1593
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594############################################################
1595
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001596# binaries that have --help and are intended for use by humans,
1597# usually, but not always, installed in /bin.
1598public_programs = []
1599
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600subdir('src/libudev')
1601subdir('src/shared')
1602subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001603subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604subdir('src/udev')
1605subdir('src/network')
1606
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001607subdir('src/analyze')
1608subdir('src/journal-remote')
1609subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001610subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001611subdir('src/hostname')
1612subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001613subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001614subdir('src/kernel-install')
1615subdir('src/locale')
1616subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001617subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001618subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001619subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001620subdir('src/nspawn')
1621subdir('src/resolve')
1622subdir('src/timedate')
1623subdir('src/timesync')
1624subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001625subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001626
1627subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001628subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001629subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001630subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001631
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001632############################################################
1633
1634# only static linking apart from libdl, to make sure that the
1635# module is linked to all libraries that it uses.
1636test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 'test-dlopen',
1638 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001639 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 include_directories : includes,
1641 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001642 dependencies : [libdl],
1643 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001644
Yu Watanabe08540a92018-07-18 09:25:57 +09001645foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001646 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001647 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1648 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001650 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 if condition
1652 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001653
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001655 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001656
Lennart Poettering1684c562019-07-04 18:31:11 +02001657 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1658 if tuple.length() > 2
1659 sources += tuple[2].split()
1660 endif
1661
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 nss = shared_library(
1663 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001664 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001665 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 version : '2',
1667 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001668 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1669 link_args : ['-Wl,-z,nodelete',
1670 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001671 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001672 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001673 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 libbasic],
1675 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001676 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 link_depends : sym,
1678 install : true,
1679 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001680
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 # We cannot use shared_module because it does not support version suffix.
1682 # Unfortunately shared_library insists on creating the symlink…
1683 meson.add_install_script('sh', '-c',
1684 'rm $DESTDIR@0@/libnss_@1@.so'
1685 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001686
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001687 if want_tests != 'false'
1688 test('dlopen-nss_' + module,
1689 test_dlopen,
1690 # path to dlopen must include a slash
1691 args : nss.full_path())
1692 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001694endforeach
1695
1696############################################################
1697
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001698executable(
1699 'systemd',
1700 systemd_sources,
1701 include_directories : includes,
1702 link_with : [libcore,
1703 libshared],
1704 dependencies : [versiondep,
1705 threads,
1706 librt,
1707 libseccomp,
1708 libselinux,
1709 libmount,
1710 libblkid],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001715meson.add_install_script(meson_make_symlink,
1716 join_paths(rootlibexecdir, 'systemd'),
1717 join_paths(rootsbindir, 'init'))
1718
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001719public_programs += executable(
1720 'systemd-analyze',
1721 systemd_analyze_sources,
1722 include_directories : includes,
1723 link_with : [libcore,
1724 libshared],
1725 dependencies : [versiondep,
1726 threads,
1727 librt,
1728 libseccomp,
1729 libselinux,
1730 libmount,
1731 libblkid],
1732 install_rpath : rootlibexecdir,
1733 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001735executable(
1736 'systemd-journald',
1737 systemd_journald_sources,
1738 include_directories : includes,
1739 link_with : [libjournal_core,
1740 libshared],
1741 dependencies : [threads,
1742 libxz,
1743 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001744 libselinux,
1745 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001746 install_rpath : rootlibexecdir,
1747 install : true,
1748 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001750public_programs += executable(
1751 'systemd-cat',
1752 systemd_cat_sources,
1753 include_directories : includes,
1754 link_with : [libjournal_core,
1755 libshared],
1756 dependencies : [threads],
1757 install_rpath : rootlibexecdir,
1758 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001760public_programs += executable(
1761 'journalctl',
1762 journalctl_sources,
1763 include_directories : includes,
1764 link_with : [libshared],
1765 dependencies : [threads,
1766 libqrencode,
1767 libxz,
1768 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001769 libpcre2,
1770 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001775executable(
1776 'systemd-getty-generator',
1777 'src/getty-generator/getty-generator.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001784executable(
1785 'systemd-debug-generator',
1786 'src/debug-generator/debug-generator.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001793executable(
1794 'systemd-run-generator',
1795 'src/run-generator/run-generator.c',
1796 include_directories : includes,
1797 link_with : [libshared],
1798 install_rpath : rootlibexecdir,
1799 install : true,
1800 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001801
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001802executable(
1803 'systemd-fstab-generator',
1804 'src/fstab-generator/fstab-generator.c',
1805 include_directories : includes,
1806 link_with : [libcore_shared,
1807 libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001812if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001813 executable(
1814 '30-systemd-environment-d-generator',
1815 'src/environment-d-generator/environment-d-generator.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001821
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 meson.add_install_script(meson_make_symlink,
1823 join_paths(sysconfdir, 'environment'),
1824 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001828 executable(
1829 'systemd-hibernate-resume-generator',
1830 'src/hibernate-resume/hibernate-resume-generator.c',
1831 include_directories : includes,
1832 link_with : [libshared],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001837 executable(
1838 'systemd-hibernate-resume',
1839 'src/hibernate-resume/hibernate-resume.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845endif
1846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001847if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001848 executable(
1849 'systemd-gpt-auto-generator',
1850 'src/gpt-auto-generator/gpt-auto-generator.c',
1851 'src/shared/blkid-util.h',
1852 include_directories : includes,
1853 link_with : [libshared],
1854 dependencies : libblkid,
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001859 public_programs += executable(
1860 'systemd-dissect',
1861 'src/dissect/dissect.c',
1862 include_directories : includes,
1863 link_with : [libshared],
1864 install_rpath : rootlibexecdir,
1865 install : true,
1866 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867endif
1868
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001869if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001870 executable(
1871 'systemd-resolved',
1872 systemd_resolved_sources,
1873 include_directories : includes,
1874 link_with : [libshared,
1875 libbasic_gcrypt,
1876 libsystemd_resolve_core],
1877 dependencies : systemd_resolved_dependencies,
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001882 public_programs += executable(
1883 'resolvectl',
1884 resolvectl_sources,
1885 include_directories : includes,
1886 link_with : [libshared,
1887 libbasic_gcrypt,
1888 libsystemd_resolve_core],
1889 dependencies : [threads,
1890 libgpg_error,
1891 libm,
1892 libidn],
1893 install_rpath : rootlibexecdir,
1894 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001895
1896 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001897 join_paths(bindir, 'resolvectl'),
1898 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001899
1900 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001901 join_paths(bindir, 'resolvectl'),
1902 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001903endif
1904
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001905if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001906 executable(
1907 'systemd-logind',
1908 systemd_logind_sources,
1909 include_directories : includes,
1910 link_with : [liblogind_core,
1911 libshared],
1912 dependencies : [threads,
1913 libacl],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001918 public_programs += executable(
1919 'loginctl',
1920 loginctl_sources,
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [threads,
1924 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001925 libxz,
1926 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001927 install_rpath : rootlibexecdir,
1928 install : true,
1929 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001930
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001931 public_programs += executable(
1932 'systemd-inhibit',
1933 'src/login/inhibit.c',
1934 include_directories : includes,
1935 link_with : [libshared],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001939
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001940 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001941 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 pam_systemd = shared_library(
1943 'pam_systemd',
1944 pam_systemd_c,
1945 name_prefix : '',
1946 include_directories : includes,
1947 link_args : ['-shared',
1948 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001949 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 libshared_static],
1951 dependencies : [threads,
1952 libpam,
1953 libpam_misc],
1954 link_depends : pam_systemd_sym,
1955 install : true,
1956 install_dir : pamlibdir)
1957
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001958 if want_tests != 'false'
1959 test('dlopen-pam_systemd',
1960 test_dlopen,
1961 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001962 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001963 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001965
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001966 executable(
1967 'systemd-user-runtime-dir',
1968 user_runtime_dir_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001974endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001975
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001976if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001977 executable(
1978 'systemd-user-sessions',
1979 'src/user-sessions/user-sessions.c',
1980 include_directories : includes,
1981 link_with : [libshared],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001988 public_programs += executable(
1989 'bootctl',
1990 'src/boot/bootctl.c',
1991 include_directories : includes,
1992 link_with : [libshared],
1993 dependencies : [libblkid],
1994 install_rpath : rootlibexecdir,
1995 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02001996
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001997 public_programs += executable(
1998 'systemd-bless-boot',
1999 'src/boot/bless-boot.c',
2000 include_directories : includes,
2001 link_with : [libshared],
2002 dependencies : [libblkid],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002006
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002007 executable(
2008 'systemd-bless-boot-generator',
2009 'src/boot/bless-boot-generator.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002017executable(
2018 'systemd-boot-check-no-failures',
2019 'src/boot/boot-check-no-failures.c',
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [libblkid],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002026
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002027public_programs += executable(
2028 'systemd-socket-activate',
2029 'src/activate/activate.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [threads],
2033 install_rpath : rootlibexecdir,
2034 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002035
2036if get_option('link-systemctl-shared')
2037 systemctl_link_with = [libshared]
2038else
2039 systemctl_link_with = [libsystemd_static,
2040 libshared_static,
2041 libjournal_client,
2042 libbasic_gcrypt]
2043endif
2044
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002045public_programs += executable(
2046 'systemctl',
2047 'src/systemctl/systemctl.c',
2048 'src/systemctl/sysv-compat.h',
2049 'src/systemctl/sysv-compat.c',
2050 include_directories : includes,
2051 link_with : systemctl_link_with,
2052 dependencies : [threads,
2053 libcap,
2054 libselinux,
2055 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002056 liblz4,
2057 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061
Lennart Poettering61d05782018-04-16 21:41:40 +02002062if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002063 executable(
2064 'systemd-portabled',
2065 systemd_portabled_sources,
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [threads],
2069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002072
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002073 public_programs += executable(
2074 'portablectl',
2075 'src/portable/portablectl.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [threads],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002082endif
2083
Lennart Poetteringd093b622019-07-04 18:33:30 +02002084if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002085 executable(
2086 'systemd-userwork',
2087 systemd_userwork_sources,
2088 include_directories : includes,
2089 link_with : [libshared],
2090 dependencies : [threads],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002094
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002095 executable(
2096 'systemd-userdbd',
2097 systemd_userdbd_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 dependencies : [threads],
2101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002104
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002105 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002106 'userdbctl',
2107 userdbctl_sources,
2108 include_directories : includes,
2109 link_with : [libshared],
2110 dependencies : [threads],
2111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002114endif
2115
Lennart Poettering70a5db52019-07-04 18:35:39 +02002116if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002117 executable(
2118 'systemd-homework',
2119 systemd_homework_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
2122 dependencies : [threads,
2123 libcryptsetup,
2124 libblkid,
2125 libcrypt,
2126 libopenssl,
2127 libfdisk,
2128 libp11kit],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002132
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002133 executable(
2134 'systemd-homed',
2135 systemd_homed_sources,
2136 include_directories : includes,
2137 link_with : [libshared],
2138 dependencies : [threads,
2139 libcrypt,
2140 libopenssl,
2141 libpwquality],
2142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002145
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002146 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002147 'homectl',
2148 homectl_sources,
2149 include_directories : includes,
2150 link_with : [libshared],
2151 dependencies : [threads,
2152 libcrypt,
2153 libopenssl,
2154 libp11kit,
2155 libpwquality],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002159
2160 if conf.get('HAVE_PAM') == 1
2161 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2162 pam_systemd = shared_library(
2163 'pam_systemd_home',
2164 pam_systemd_home_c,
2165 name_prefix : '',
2166 include_directories : includes,
2167 link_args : ['-shared',
2168 '-Wl,--version-script=' + version_script_arg],
2169 link_with : [libsystemd_static,
2170 libshared_static],
2171 dependencies : [threads,
2172 libpam,
2173 libpam_misc,
2174 libcrypt],
2175 link_depends : pam_systemd_home_sym,
2176 install : true,
2177 install_dir : pamlibdir)
2178 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002179endif
2180
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002181foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2182 meson.add_install_script(meson_make_symlink,
2183 join_paths(rootbindir, 'systemctl'),
2184 join_paths(rootsbindir, alias))
2185endforeach
2186
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002187if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002188 executable(
2189 'systemd-backlight',
2190 'src/backlight/backlight.c',
2191 include_directories : includes,
2192 link_with : [libshared],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196endif
2197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002199 executable(
2200 'systemd-rfkill',
2201 'src/rfkill/rfkill.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207endif
2208
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002209executable(
2210 'systemd-system-update-generator',
2211 'src/system-update-generator/system-update-generator.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002219 systemd_cryptsetup_sources = files('''
2220 src/cryptsetup/cryptsetup.c
2221 src/cryptsetup/cryptsetup-pkcs11.h
2222'''.split())
2223
2224 if conf.get('HAVE_P11KIT') == 1
2225 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2226 endif
2227
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002228 executable(
2229 'systemd-cryptsetup',
2230 systemd_cryptsetup_sources,
2231 include_directories : includes,
2232 link_with : [libshared],
2233 dependencies : [libcryptsetup,
2234 libp11kit],
2235 install_rpath : rootlibexecdir,
2236 install : true,
2237 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002239 executable(
2240 'systemd-cryptsetup-generator',
2241 'src/cryptsetup/cryptsetup-generator.c',
2242 include_directories : includes,
2243 link_with : [libshared],
2244 dependencies : [libcryptsetup],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002249 executable(
2250 'systemd-veritysetup',
2251 'src/veritysetup/veritysetup.c',
2252 include_directories : includes,
2253 link_with : [libshared],
2254 dependencies : [libcryptsetup],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002259 executable(
2260 'systemd-veritysetup-generator',
2261 'src/veritysetup/veritysetup-generator.c',
2262 include_directories : includes,
2263 link_with : [libshared],
2264 dependencies : [libcryptsetup],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268endif
2269
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002270if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002271 executable(
2272 'systemd-sysv-generator',
2273 'src/sysv-generator/sysv-generator.c',
2274 include_directories : includes,
2275 link_with : [libshared],
2276 install_rpath : rootlibexecdir,
2277 install : true,
2278 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002280 executable(
2281 'systemd-rc-local-generator',
2282 'src/rc-local-generator/rc-local-generator.c',
2283 include_directories : includes,
2284 link_with : [libshared],
2285 install_rpath : rootlibexecdir,
2286 install : true,
2287 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288endif
2289
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002290if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002291 executable(
2292 'systemd-hostnamed',
2293 'src/hostname/hostnamed.c',
2294 include_directories : includes,
2295 link_with : [libshared],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002300 public_programs += executable(
2301 'hostnamectl',
2302 'src/hostname/hostnamectl.c',
2303 include_directories : includes,
2304 link_with : [libshared],
2305 install_rpath : rootlibexecdir,
2306 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307endif
2308
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002309if conf.get('ENABLE_LOCALED') == 1
2310 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 # logind will load libxkbcommon.so dynamically on its own
2312 deps = [libdl]
2313 else
2314 deps = []
2315 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002316
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002317 executable(
2318 'systemd-localed',
2319 systemd_localed_sources,
2320 include_directories : includes,
2321 link_with : [libshared],
2322 dependencies : deps,
2323 install_rpath : rootlibexecdir,
2324 install : true,
2325 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002327 public_programs += executable(
2328 'localectl',
2329 localectl_sources,
2330 include_directories : includes,
2331 link_with : [libshared],
2332 install_rpath : rootlibexecdir,
2333 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002336if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002337 executable(
2338 'systemd-timedated',
2339 'src/timedate/timedated.c',
2340 include_directories : includes,
2341 link_with : [libshared],
2342 install_rpath : rootlibexecdir,
2343 install : true,
2344 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002345endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346
Yu Watanabe6129ec82018-05-03 18:07:43 +09002347if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002348 public_programs += executable(
2349 'timedatectl',
2350 'src/timedate/timedatectl.c',
2351 include_directories : includes,
2352 install_rpath : rootlibexecdir,
2353 link_with : [libshared],
2354 dependencies : [libm],
2355 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356endif
2357
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002358if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002359 if get_option('link-timesyncd-shared')
2360 timesyncd_link_with = [libshared]
2361 else
2362 timesyncd_link_with = [libsystemd_static,
2363 libshared_static,
2364 libjournal_client,
2365 libbasic_gcrypt]
2366 endif
2367
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002368 executable(
2369 'systemd-timesyncd',
2370 systemd_timesyncd_sources,
2371 include_directories : includes,
2372 link_with : [timesyncd_link_with],
2373 dependencies : [threads,
2374 libm],
2375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002378
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002379 executable(
2380 'systemd-time-wait-sync',
2381 'src/time-wait-sync/time-wait-sync.c',
2382 include_directories : includes,
2383 link_with : [timesyncd_link_with],
2384 install_rpath : rootlibexecdir,
2385 install : true,
2386 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387endif
2388
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002389if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002390 executable(
2391 'systemd-machined',
2392 systemd_machined_sources,
2393 include_directories : includes,
2394 link_with : [libmachine_core,
2395 libshared],
2396 install_rpath : rootlibexecdir,
2397 install : true,
2398 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002400 public_programs += executable(
2401 'machinectl',
2402 'src/machine/machinectl.c',
2403 include_directories : includes,
2404 link_with : [libshared],
2405 dependencies : [threads,
2406 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002407 liblz4,
2408 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412endif
2413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002414if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002415 executable(
2416 'systemd-importd',
2417 systemd_importd_sources,
2418 include_directories : includes,
2419 link_with : [libshared],
2420 dependencies : [threads],
2421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002424
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002425 systemd_pull = executable(
2426 'systemd-pull',
2427 systemd_pull_sources,
2428 include_directories : includes,
2429 link_with : [libshared],
2430 dependencies : [versiondep,
2431 libcurl,
2432 libz,
2433 libbzip2,
2434 libxz,
2435 libgcrypt],
2436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002440 systemd_import = executable(
2441 'systemd-import',
2442 systemd_import_sources,
2443 include_directories : includes,
2444 link_with : [libshared],
2445 dependencies : [libcurl,
2446 libz,
2447 libbzip2,
2448 libxz],
2449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002453 systemd_import_fs = executable(
2454 'systemd-import-fs',
2455 systemd_import_fs_sources,
2456 include_directories : includes,
2457 link_with : [libshared],
2458 install_rpath : rootlibexecdir,
2459 install : true,
2460 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002461
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002462 systemd_export = executable(
2463 'systemd-export',
2464 systemd_export_sources,
2465 include_directories : includes,
2466 link_with : [libshared],
2467 dependencies : [libcurl,
2468 libz,
2469 libbzip2,
2470 libxz],
2471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002474
2475 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476endif
2477
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002478if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002479 public_programs += executable(
2480 'systemd-journal-upload',
2481 systemd_journal_upload_sources,
2482 include_directories : includes,
2483 link_with : [libshared],
2484 dependencies : [versiondep,
2485 threads,
2486 libcurl,
2487 libgnutls,
2488 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002489 liblz4,
2490 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002491 install_rpath : rootlibexecdir,
2492 install : true,
2493 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494endif
2495
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002496if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002497 public_programs += executable(
2498 'systemd-journal-remote',
2499 systemd_journal_remote_sources,
2500 include_directories : includes,
2501 link_with : [libshared,
2502 libsystemd_journal_remote],
2503 dependencies : [threads,
2504 libmicrohttpd,
2505 libgnutls,
2506 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002507 liblz4,
2508 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002509 install_rpath : rootlibexecdir,
2510 install : true,
2511 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002513 public_programs += executable(
2514 'systemd-journal-gatewayd',
2515 systemd_journal_gatewayd_sources,
2516 include_directories : includes,
2517 link_with : [libshared],
2518 dependencies : [threads,
2519 libmicrohttpd,
2520 libgnutls,
2521 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002522 liblz4,
2523 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002524 install_rpath : rootlibexecdir,
2525 install : true,
2526 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527endif
2528
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002529if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002530 executable(
2531 'systemd-coredump',
2532 systemd_coredump_sources,
2533 include_directories : includes,
2534 link_with : [libshared],
2535 dependencies : [threads,
2536 libacl,
2537 libdw,
2538 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002539 liblz4,
2540 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002541 install_rpath : rootlibexecdir,
2542 install : true,
2543 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002545 public_programs += executable(
2546 'coredumpctl',
2547 coredumpctl_sources,
2548 include_directories : includes,
2549 link_with : [libshared],
2550 dependencies : [threads,
2551 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002552 liblz4,
2553 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002554 install_rpath : rootlibexecdir,
2555 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556endif
2557
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002558if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002559 executable(
2560 'systemd-pstore',
2561 systemd_pstore_sources,
2562 include_directories : includes,
2563 link_with : [libshared],
2564 dependencies : [threads,
2565 libacl,
2566 libdw,
2567 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002568 liblz4,
2569 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002570 install_rpath : rootlibexecdir,
2571 install : true,
2572 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002573endif
2574
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002575if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002576 public_programs += executable(
2577 'systemd-binfmt',
2578 'src/binfmt/binfmt.c',
2579 include_directories : includes,
2580 link_with : [libshared],
2581 install_rpath : rootlibexecdir,
2582 install : true,
2583 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584
2585 meson.add_install_script('sh', '-c',
2586 mkdir_p.format(binfmtdir))
2587 meson.add_install_script('sh', '-c',
2588 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2589endif
2590
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002591if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002592 exe = executable(
2593 'systemd-repart',
2594 systemd_repart_sources,
2595 include_directories : includes,
2596 link_with : [libshared],
2597 dependencies : [threads,
2598 libcryptsetup,
2599 libblkid,
2600 libfdisk,
2601 libopenssl],
2602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002605
2606 if want_tests != 'false'
2607 test('test-repart',
2608 test_repart_sh,
2609 args : exe.full_path())
2610 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002611endif
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002614 executable(
2615 'systemd-vconsole-setup',
2616 'src/vconsole/vconsole-setup.c',
2617 include_directories : includes,
2618 link_with : [libshared],
2619 install_rpath : rootlibexecdir,
2620 install : true,
2621 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622endif
2623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002624if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002625 executable(
2626 'systemd-random-seed',
2627 'src/random-seed/random-seed.c',
2628 include_directories : includes,
2629 link_with : [libshared],
2630 install_rpath : rootlibexecdir,
2631 install : true,
2632 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633endif
2634
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002635if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002636 executable(
2637 'systemd-firstboot',
2638 'src/firstboot/firstboot.c',
2639 include_directories : includes,
2640 link_with : [libshared],
2641 dependencies : [libcrypt],
2642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645endif
2646
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002647executable(
2648 'systemd-remount-fs',
2649 'src/remount-fs/remount-fs.c',
2650 include_directories : includes,
2651 link_with : [libcore_shared,
2652 libshared],
2653 install_rpath : rootlibexecdir,
2654 install : true,
2655 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002657executable(
2658 'systemd-machine-id-setup',
2659 'src/machine-id-setup/machine-id-setup-main.c',
2660 include_directories : includes,
2661 link_with : [libcore_shared,
2662 libshared],
2663 install_rpath : rootlibexecdir,
2664 install : true,
2665 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002666
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002667executable(
2668 'systemd-fsck',
2669 'src/fsck/fsck.c',
2670 include_directories : includes,
2671 link_with : [libshared],
2672 install_rpath : rootlibexecdir,
2673 install : true,
2674 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002676executable('systemd-growfs',
2677 'src/partition/growfs.c',
2678 include_directories : includes,
2679 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002680 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002681 install_rpath : rootlibexecdir,
2682 install : true,
2683 install_dir : rootlibexecdir)
2684
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002685executable(
2686 'systemd-makefs',
2687 'src/partition/makefs.c',
2688 include_directories : includes,
2689 link_with : [libshared],
2690 install_rpath : rootlibexecdir,
2691 install : true,
2692 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002693
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002694executable(
2695 'systemd-sleep',
2696 'src/sleep/sleep.c',
2697 include_directories : includes,
2698 link_with : [libshared],
2699 install_rpath : rootlibexecdir,
2700 install : true,
2701 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702
Yu Watanabed25e1272019-01-03 02:32:57 +09002703install_data('src/sleep/sleep.conf',
2704 install_dir : pkgsysconfdir)
2705
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002706public_programs += executable(
2707 'systemd-sysctl',
2708 'src/sysctl/sysctl.c',
2709 include_directories : includes,
2710 link_with : [libshared],
2711 install_rpath : rootlibexecdir,
2712 install : true,
2713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002715executable(
2716 'systemd-ac-power',
2717 'src/ac-power/ac-power.c',
2718 include_directories : includes,
2719 link_with : [libshared],
2720 install_rpath : rootlibexecdir,
2721 install : true,
2722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002724public_programs += executable(
2725 'systemd-detect-virt',
2726 'src/detect-virt/detect-virt.c',
2727 include_directories : includes,
2728 link_with : [libshared],
2729 install_rpath : rootlibexecdir,
2730 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002731
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002732public_programs += executable(
2733 'systemd-delta',
2734 'src/delta/delta.c',
2735 include_directories : includes,
2736 link_with : [libshared],
2737 install_rpath : rootlibexecdir,
2738 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002739
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002740public_programs += executable(
2741 'systemd-escape',
2742 'src/escape/escape.c',
2743 include_directories : includes,
2744 link_with : [libshared],
2745 install_rpath : rootlibexecdir,
2746 install : true,
2747 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002748
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002749public_programs += executable(
2750 'systemd-notify',
2751 'src/notify/notify.c',
2752 include_directories : includes,
2753 link_with : [libshared],
2754 install_rpath : rootlibexecdir,
2755 install : true,
2756 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002757
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002758executable(
2759 'systemd-volatile-root',
2760 'src/volatile-root/volatile-root.c',
2761 include_directories : includes,
2762 link_with : [libshared],
2763 install_rpath : rootlibexecdir,
2764 install : true,
2765 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002767executable(
2768 'systemd-cgroups-agent',
2769 'src/cgroups-agent/cgroups-agent.c',
2770 include_directories : includes,
2771 link_with : [libshared],
2772 install_rpath : rootlibexecdir,
2773 install : true,
2774 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002775
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002776public_programs += executable(
2777 'systemd-id128',
2778 'src/id128/id128.c',
2779 include_directories : includes,
2780 link_with : [libshared],
2781 install_rpath : rootlibexecdir,
2782 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002783
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002784public_programs += executable(
2785 'systemd-path',
2786 'src/path/path.c',
2787 include_directories : includes,
2788 link_with : [libshared],
2789 install_rpath : rootlibexecdir,
2790 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002791
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002792public_programs += executable(
2793 'systemd-ask-password',
2794 'src/ask-password/ask-password.c',
2795 include_directories : includes,
2796 link_with : [libshared],
2797 install_rpath : rootlibexecdir,
2798 install : true,
2799 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002800
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002801executable(
2802 'systemd-reply-password',
2803 'src/reply-password/reply-password.c',
2804 include_directories : includes,
2805 link_with : [libshared],
2806 install_rpath : rootlibexecdir,
2807 install : true,
2808 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002809
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002810public_programs += executable(
2811 'systemd-tty-ask-password-agent',
2812 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2813 include_directories : includes,
2814 link_with : [libshared],
2815 install_rpath : rootlibexecdir,
2816 install : true,
2817 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002818
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002819public_programs += executable(
2820 'systemd-cgls',
2821 'src/cgls/cgls.c',
2822 include_directories : includes,
2823 link_with : [libshared],
2824 install_rpath : rootlibexecdir,
2825 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002826
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002827public_programs += executable(
2828 'systemd-cgtop',
2829 'src/cgtop/cgtop.c',
2830 include_directories : includes,
2831 link_with : [libshared],
2832 install_rpath : rootlibexecdir,
2833 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002835executable(
2836 'systemd-initctl',
2837 'src/initctl/initctl.c',
2838 include_directories : includes,
2839 link_with : [libshared],
2840 install_rpath : rootlibexecdir,
2841 install : true,
2842 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002843
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002844public_programs += executable(
2845 'systemd-mount',
2846 'src/mount/mount-tool.c',
2847 include_directories : includes,
2848 link_with : [libshared],
2849 dependencies: [libmount],
2850 install_rpath : rootlibexecdir,
2851 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002852
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002853meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002854 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002855
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002856public_programs += executable(
2857 'systemd-run',
2858 'src/run/run.c',
2859 include_directories : includes,
2860 link_with : [libshared],
2861 install_rpath : rootlibexecdir,
2862 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002863
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002864public_programs += executable(
2865 'systemd-stdio-bridge',
2866 'src/stdio-bridge/stdio-bridge.c',
2867 include_directories : includes,
2868 link_with : [libshared],
2869 dependencies : [versiondep],
2870 install_rpath : rootlibexecdir,
2871 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002872
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002873public_programs += executable(
2874 'busctl',
2875 'src/busctl/busctl.c',
2876 'src/busctl/busctl-introspect.c',
2877 'src/busctl/busctl-introspect.h',
2878 include_directories : includes,
2879 link_with : [libshared],
2880 install_rpath : rootlibexecdir,
2881 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002883if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002884 public_programs += executable(
2885 'systemd-sysusers',
2886 'src/sysusers/sysusers.c',
2887 include_directories : includes,
2888 link_with : [libshared],
2889 install_rpath : rootlibexecdir,
2890 install : true,
2891 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892endif
2893
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002894if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002895 exe = executable(
2896 'systemd-tmpfiles',
2897 'src/tmpfiles/tmpfiles.c',
Lennart Poetteringa3451c22020-05-05 22:45:54 +02002898 'src/tmpfiles/offline-passwd.c',
2899 'src/tmpfiles/offline-passwd.h',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002900 include_directories : includes,
2901 link_with : [libshared],
2902 dependencies : [libacl],
2903 install_rpath : rootlibexecdir,
2904 install : true,
2905 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002906 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002907
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002908 if want_tests != 'false'
2909 test('test-systemd-tmpfiles',
2910 test_systemd_tmpfiles_py,
2911 # https://github.com/mesonbuild/meson/issues/2681
2912 args : exe.full_path())
2913 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002914endif
2915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002916if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002917 public_programs += executable(
2918 'systemd-hwdb',
2919 'src/hwdb/hwdb.c',
2920 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2921 include_directories : includes,
2922 link_with : [libudev_static],
2923 install_rpath : udev_rpath,
2924 install : true,
2925 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002926endif
2927
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002928if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002929 executable(
2930 'systemd-quotacheck',
2931 'src/quotacheck/quotacheck.c',
2932 include_directories : includes,
2933 link_with : [libshared],
2934 install_rpath : rootlibexecdir,
2935 install : true,
2936 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002937endif
2938
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002939public_programs += executable(
2940 'systemd-socket-proxyd',
2941 'src/socket-proxy/socket-proxyd.c',
2942 include_directories : includes,
2943 link_with : [libshared],
2944 dependencies : [threads],
2945 install_rpath : rootlibexecdir,
2946 install : true,
2947 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002948
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002949public_programs += executable(
2950 'systemd-udevd',
2951 systemd_udevd_sources,
2952 include_directories : includes,
2953 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2954 link_with : [libudev_core,
2955 libsystemd_network,
2956 libudev_static],
2957 dependencies : [versiondep,
2958 threads,
2959 libkmod,
2960 libidn,
2961 libacl,
2962 libblkid],
2963 install_rpath : udev_rpath,
2964 install : true,
2965 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002966
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002967public_programs += executable(
2968 'udevadm',
2969 udevadm_sources,
2970 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2971 include_directories : includes,
2972 link_with : [libudev_core,
2973 libsystemd_network,
2974 libudev_static],
2975 dependencies : [versiondep,
2976 threads,
2977 libkmod,
2978 libidn,
2979 libacl,
2980 libblkid],
2981 install_rpath : udev_rpath,
2982 install : true,
2983 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002984
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002985executable(
2986 'systemd-shutdown',
2987 systemd_shutdown_sources,
2988 include_directories : includes,
2989 link_with : [libcore_shared,
2990 libshared],
2991 dependencies : [libmount],
2992 install_rpath : rootlibexecdir,
2993 install : true,
2994 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002995
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002996executable(
2997 'systemd-update-done',
2998 'src/update-done/update-done.c',
2999 include_directories : includes,
3000 link_with : [libshared],
3001 install_rpath : rootlibexecdir,
3002 install : true,
3003 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003004
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003005executable(
3006 'systemd-update-utmp',
3007 'src/update-utmp/update-utmp.c',
3008 include_directories : includes,
3009 link_with : [libshared],
3010 dependencies : [libaudit],
3011 install_rpath : rootlibexecdir,
3012 install : true,
3013 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003014
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003015if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003016 executable(
3017 'systemd-modules-load',
3018 'src/modules-load/modules-load.c',
3019 include_directories : includes,
3020 link_with : [libshared],
3021 dependencies : [libkmod],
3022 install_rpath : rootlibexecdir,
3023 install : true,
3024 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003025
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003026 meson.add_install_script('sh', '-c',
3027 mkdir_p.format(modulesloaddir))
3028 meson.add_install_script('sh', '-c',
3029 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003030endif
3031
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003032public_programs += executable(
3033 'systemd-nspawn',
3034 systemd_nspawn_sources,
3035 include_directories : includes,
3036 link_with : [libcore_shared,
3037 libnspawn_core,
3038 libshared],
3039 dependencies : [libblkid,
3040 libseccomp],
3041 install_rpath : rootlibexecdir,
3042 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003043
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003044if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003045 executable(
3046 'systemd-networkd',
3047 systemd_networkd_sources,
3048 include_directories : network_include_dir,
3049 link_with : [libnetworkd_core,
3050 libsystemd_network,
3051 libudev_static,
3052 networkd_link_with],
3053 dependencies : [threads],
3054 install_rpath : rootlibexecdir,
3055 install : true,
3056 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003057
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003058 executable(
3059 'systemd-networkd-wait-online',
3060 systemd_networkd_wait_online_sources,
3061 include_directories : includes,
3062 link_with : [libnetworkd_core,
3063 networkd_link_with],
3064 install_rpath : rootlibexecdir,
3065 install : true,
3066 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003067
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003068 public_programs += executable(
3069 'networkctl',
3070 networkctl_sources,
3071 include_directories : includes,
3072 link_with : [libsystemd_network,
3073 networkd_link_with],
3074 install_rpath : rootlibexecdir,
3075 install : true,
3076 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003077
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003078 exe = executable(
3079 'systemd-network-generator',
3080 network_generator_sources,
3081 include_directories : includes,
3082 link_with : [networkd_link_with],
3083 install_rpath : rootlibexecdir,
3084 install : true,
3085 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003086
3087 if want_tests != 'false'
3088 test('test-network-generator-conversion',
3089 test_network_generator_conversion_sh,
3090 # https://github.com/mesonbuild/meson/issues/2681
3091 args : exe.full_path())
3092 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003093endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003094
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003095executable(
3096 'systemd-sulogin-shell',
3097 ['src/sulogin-shell/sulogin-shell.c'],
3098 include_directories : includes,
3099 link_with : [libshared],
3100 install_rpath : rootlibexecdir,
3101 install : true,
3102 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003103
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003104############################################################
3105
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003106custom_target(
3107 'systemd-runtest.env',
3108 output : 'systemd-runtest.env',
3109 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003110 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003111 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003112 '} >@OUTPUT@'],
3113 build_by_default : true)
3114
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003115foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003116 sources = tuple[0]
3117 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3118 dependencies = tuple[2]
3119 condition = tuple.length() >= 4 ? tuple[3] : ''
3120 type = tuple.length() >= 5 ? tuple[4] : ''
3121 defs = tuple.length() >= 6 ? tuple[5] : []
3122 incs = tuple.length() >= 7 ? tuple[6] : includes
3123 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003124
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003125 name = sources[0].split('/')[-1].split('.')[0]
3126 if type.startswith('timeout=')
3127 timeout = type.split('=')[1].to_int()
3128 type = ''
3129 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003130
3131 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003132 exe = executable(
3133 name,
3134 sources,
3135 include_directories : incs,
3136 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003137 dependencies : [versiondep,
3138 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003139 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003140 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003141 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003142 install : install_tests,
3143 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003144
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003145 if type == 'manual'
3146 message('@0@ is a manual test'.format(name))
3147 elif type == 'unsafe' and want_tests != 'unsafe'
3148 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003149 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003150 test(name, exe,
3151 env : test_env,
3152 timeout : timeout)
3153 endif
3154 else
3155 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3156 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003157endforeach
3158
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003159exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003160 'test-libsystemd-sym',
3161 test_libsystemd_sym_c,
3162 include_directories : includes,
3163 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003164 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003165 install : install_tests,
3166 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003167if want_tests != 'false'
3168 test('test-libsystemd-sym', exe)
3169endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003170
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003171exe = executable(
3172 'test-libsystemd-static-sym',
3173 test_libsystemd_sym_c,
3174 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003175 link_with : [install_libsystemd_static],
3176 dependencies : [threads], # threads is already included in dependencies on the library,
3177 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003178 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003179 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003180 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003181if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003182 test('test-libsystemd-static-sym', exe)
3183endif
3184
3185exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003186 'test-libudev-sym',
3187 test_libudev_sym_c,
3188 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003189 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003190 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003191 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003192 install : install_tests,
3193 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003194if want_tests != 'false'
3195 test('test-libudev-sym', exe)
3196endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003197
3198exe = executable(
3199 'test-libudev-static-sym',
3200 test_libudev_sym_c,
3201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003202 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003203 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003204 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003205 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003206 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003207if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003208 test('test-libudev-static-sym', exe)
3209endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003210
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003211############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003212
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003213fuzzer_exes = []
3214
Michael Olbrich59967402018-11-11 11:27:35 +01003215if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003216 foreach tuple : fuzzers
3217 sources = tuple[0]
3218 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3219 dependencies = tuple[2]
3220 defs = tuple.length() >= 4 ? tuple[3] : []
3221 incs = tuple.length() >= 5 ? tuple[4] : includes
3222 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003223
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003224 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003225 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003226 elif want_libfuzzer
3227 if fuzzing_engine.found()
3228 dependencies += fuzzing_engine
3229 else
3230 link_args += ['-fsanitize=fuzzer']
3231 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003232 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003233 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003234 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003235
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003236 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003237
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003238 fuzzer_exes += executable(
3239 name,
3240 sources,
3241 include_directories : [incs, include_directories('src/fuzz')],
3242 link_with : link_with,
3243 dependencies : dependencies,
3244 c_args : defs,
3245 link_args: link_args,
3246 install : false)
3247 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003248endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003249
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003250run_target(
3251 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003252 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003253 command : ['true'])
3254
3255############################################################
3256
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003257make_directive_index_py = find_program('tools/make-directive-index.py')
3258make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003259xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003260hwdb_update_sh = find_program('tools/hwdb-update.sh')
3261autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003262
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003263subdir('sysctl.d')
3264subdir('sysusers.d')
3265subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003266subdir('hwdb.d')
3267subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003268subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003269subdir('network')
3270subdir('man')
3271subdir('shell-completion/bash')
3272subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003273subdir('docs/sysvinit')
3274subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003275
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003276install_subdir('factory/etc',
3277 install_dir : factorydir)
3278
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003279install_data('xorg/50-systemd-user.sh',
3280 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003281install_data('modprobe.d/systemd.conf',
3282 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003283install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003284 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003285 'NEWS',
3286 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303287 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003288 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003289 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003290 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003291 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003292 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003293 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003294 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3295 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003296
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003297meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3298meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3299
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003300############################################################
3301
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003302check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003303
3304foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003305 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003306 if want_tests != 'false'
3307 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003308 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003309 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003310 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003311endforeach
3312
3313############################################################
3314
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003315check_directives_sh = find_program('tools/check-directives.sh')
3316
3317if want_tests != 'false'
3318 test('check-directives',
3319 check_directives_sh,
3320 args : project_source_root)
3321endif
3322
3323############################################################
3324
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003325# Enable tests for all supported sanitizers
3326foreach tuple : sanitizers
3327 sanitizer = tuple[0]
3328 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003329
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003330 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003331 prev = ''
3332 foreach p : fuzz_regression_tests
3333 b = p.split('/')[-2]
3334 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003335
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003336 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003337
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003338 if name != prev
3339 if want_tests == 'false'
3340 message('Not compiling @0@ because tests is set to false'.format(name))
3341 elif slow_tests
3342 exe = custom_target(
3343 name,
3344 output : name,
3345 depends : build,
3346 command : [env, 'ln', '-fs',
3347 join_paths(build.full_path(), b),
3348 '@OUTPUT@'],
3349 build_by_default : true)
3350 else
3351 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3352 endif
3353 endif
3354 prev = name
3355
3356 if want_tests != 'false' and slow_tests
3357 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3358 env,
3359 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003360 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003361 endif
3362 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003363 endif
3364endforeach
3365
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003366
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003367############################################################
3368
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003369if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003370 all_files = run_command(
3371 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003372 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003373 'ls-files',
3374 ':/*.[ch]'])
3375 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003376
userwithuide85a6902017-08-09 13:41:44 +00003377 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003378 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003379 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003380 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003381 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003382 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003383 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003384endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003385
3386if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003387 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003388 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003389 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003390 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003391endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003392
3393if git.found()
3394 git_head = run_command(
3395 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003396 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003397 'rev-parse', 'HEAD']).stdout().strip()
3398 git_head_short = run_command(
3399 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003400 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003401 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3402
3403 run_target(
3404 'git-snapshot',
3405 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003406 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003407 git_head_short),
3408 '--prefix', 'systemd-@0@/'.format(git_head),
3409 'HEAD'])
3410endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003411
3412############################################################
3413
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003414check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003415run_target(
3416 'check-api-docs',
3417 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003418 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003419
3420############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003421watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003422
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003423status = [
3424 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3425
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003426 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003427 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003428 'prefix directory: @0@'.format(prefixdir),
3429 'rootprefix directory: @0@'.format(rootprefixdir),
3430 'sysconf directory: @0@'.format(sysconfdir),
3431 'include directory: @0@'.format(includedir),
3432 'lib directory: @0@'.format(libdir),
3433 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003434 'SysV init scripts: @0@'.format(sysvinit_path),
3435 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003436 'PAM modules directory: @0@'.format(pamlibdir),
3437 'PAM configuration directory: @0@'.format(pamconfdir),
3438 'RPM macros directory: @0@'.format(rpmmacrosdir),
3439 'modprobe.d directory: @0@'.format(modprobedir),
3440 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3441 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3442 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3443 'bash completions directory: @0@'.format(bashcompletiondir),
3444 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003445 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003446 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3447 get_option('debug-tty')),
3448 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003449 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450 'maximum system UID: @0@'.format(system_uid_max),
3451 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003452 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3453 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3454 'minimum container UID base: @0@'.format(container_uid_base_min),
3455 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003456 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003457 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003458 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003459 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003460 'nobody user name: @0@'.format(nobody_user),
3461 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003462 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003463 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003464
3465 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003466 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003467 'default mDNS mode: @0@'.format(default_mdns),
3468 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003469 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003470 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003471 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003472 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003473 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003474 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003475
3476alt_dns_servers = '\n '.join(dns_servers.split(' '))
3477alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3478status += [
3479 'default DNS servers: @0@'.format(alt_dns_servers),
3480 'default NTP servers: @0@'.format(alt_ntp_servers)]
3481
3482alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3483 '@@0@'.format(time_epoch)).stdout().strip()
3484status += [
3485 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3486
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003487status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003488 'static libsystemd: @0@'.format(static_libsystemd),
3489 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003490
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003491# TODO:
3492# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3493# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3494# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3495
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003496if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003497 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003498
3499 if have_gnu_efi
3500 status += [
3501 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003502 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003503 'EFI lds: @0@'.format(efi_lds),
3504 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003505 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003506 endif
3507endif
3508
3509found = []
3510missing = []
3511
3512foreach tuple : [
3513 ['libcryptsetup'],
3514 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003515 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003516 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003517 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003518 ['AUDIT'],
3519 ['IMA'],
3520 ['AppArmor'],
3521 ['SELinux'],
3522 ['SECCOMP'],
3523 ['SMACK'],
3524 ['zlib'],
3525 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003526 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003527 ['lz4'],
3528 ['bzip2'],
3529 ['ACL'],
3530 ['gcrypt'],
3531 ['qrencode'],
3532 ['microhttpd'],
3533 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003534 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003535 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003536 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003537 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003538 ['libidn'],
3539 ['libiptc'],
3540 ['elfutils'],
3541 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003542 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003543 ['vconsole'],
3544 ['quotacheck'],
3545 ['tmpfiles'],
3546 ['environment.d'],
3547 ['sysusers'],
3548 ['firstboot'],
3549 ['randomseed'],
3550 ['backlight'],
3551 ['rfkill'],
3552 ['logind'],
3553 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003554 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003555 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003556 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003557 ['importd'],
3558 ['hostnamed'],
3559 ['timedated'],
3560 ['timesyncd'],
3561 ['localed'],
3562 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003563 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003564 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3565 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003566 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003567 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003568 ['polkit'],
3569 ['legacy pkla', install_polkit_pkla],
3570 ['efi'],
3571 ['gnu-efi', have_gnu_efi],
3572 ['kmod'],
3573 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003574 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003575 ['blkid'],
3576 ['dbus'],
3577 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003578 ['nss-myhostname'],
3579 ['nss-mymachines'],
3580 ['nss-resolve'],
3581 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003582 ['hwdb'],
3583 ['tpm'],
3584 ['man pages', want_man],
3585 ['html pages', want_html],
3586 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003587 ['SysV compat'],
3588 ['utmp'],
3589 ['ldconfig'],
3590 ['hibernate'],
3591 ['adm group', get_option('adm-group')],
3592 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003593 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003594 ['debug hashmap'],
3595 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003596 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003597 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003598 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003599 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003600 ['link-udev-shared', get_option('link-udev-shared')],
3601 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003602 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003603 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003604 ['kernel-install', get_option('kernel-install')],
3605 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003606]
3607
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003608 if tuple.length() >= 2
3609 cond = tuple[1]
3610 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003611 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3612 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003613 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003614 endif
3615 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003616 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003617 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003618 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003619 endif
3620endforeach
3621
3622status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003623 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003624 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003625 '',
3626 'disabled features: @0@'.format(', '.join(missing)),
3627 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003628message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003629
3630if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003631 warning('\n' +
3632 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3633 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3634 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003635endif