blob: 28494c9af23ba58b136dc6bf82de9d04662c1702 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek384db812020-02-05 09:51:59 +01004 version : '245',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek827ca902019-11-10 11:39:15 +010011 'warning_level=2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040012 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090013 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040014 )
15
Zbigniew Jędrzejewski-Szmek384db812020-02-05 09:51:59 +010016libsystemd_version = '0.28.0'
17libudev_version = '1.6.17'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020018
Yu Watanabe348b4432018-05-07 18:17:35 +090019# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# Also, for hysterical reasons, we use different variable
21# names, sometimes. Not all variables are included in every
22# set. Ugh, ugh, ugh!
23conf = configuration_data()
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010024conf.set('PROJECT_VERSION', meson.project_version(),
25 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026
27substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010028substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010029substs.set('PROJECT_VERSION', meson.project_version(),
30 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040031
Davide Cavalca1485aac2019-02-27 11:19:07 -050032# This is to be used instead of meson.source_root(), as the latter will return
33# the wrong result when systemd is being built as a meson subproject
34project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +020035project_build_root = meson.current_build_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020036relative_source_path = run_command('realpath',
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +020037 '--relative-to=@0@'.format(project_build_root),
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020038 project_source_root).stdout().strip()
39conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050040
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020041want_ossfuzz = get_option('oss-fuzz')
42want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000043if want_ossfuzz + want_libfuzzer > 1
44 error('only one of oss-fuzz or llvm-fuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020045endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000046
47skip_deps = want_ossfuzz or want_libfuzzer
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000048fuzzer_build = want_ossfuzz or want_libfuzzer
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020049
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040050#####################################################################
51
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052# Try to install the git pre-commit hook
Zbigniew Jędrzejewski-Szmeke2d612a2020-03-28 09:30:51 +010053add_git_hook_sh = find_program('tools/add-git-hook.sh', required : false)
54if add_git_hook_sh.found()
55 git_hook = run_command(add_git_hook_sh)
56 if git_hook.returncode() == 0
57 message(git_hook.stdout().strip())
58 endif
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040059endif
60
61#####################################################################
62
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010063if get_option('split-usr') == 'auto'
64 split_usr = run_command('test', '-L', '/bin').returncode() != 0
65else
66 split_usr = get_option('split-usr') == 'true'
67endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010068conf.set10('HAVE_SPLIT_USR', split_usr,
69 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010070
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010071if get_option('split-bin') == 'auto'
72 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
73else
74 split_bin = get_option('split-bin') == 'true'
75endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010076conf.set10('HAVE_SPLIT_BIN', split_bin,
77 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010078
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010080# Unusual rootprefixdir values are used by some distros
81# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010082rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010083if rootprefixdir == ''
84 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010085endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010086rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
88sysvinit_path = get_option('sysvinit-path')
89sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090090conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020091 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020093conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
94conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010095conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020096
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010097# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040098# encountered, so this should canonicalize various paths when they are
99# absolute or relative.
100prefixdir = get_option('prefix')
101if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400102 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400103endif
104bindir = join_paths(prefixdir, get_option('bindir'))
105libdir = join_paths(prefixdir, get_option('libdir'))
106sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
107includedir = join_paths(prefixdir, get_option('includedir'))
108datadir = join_paths(prefixdir, get_option('datadir'))
109localstatedir = join_paths('/', get_option('localstatedir'))
110
111rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100112rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400113rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
114
115rootlibdir = get_option('rootlibdir')
116if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400117 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400118endif
119
120# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200121pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
122pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400123polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
124polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
125polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400126xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900127rpmmacrosdir = get_option('rpmmacrosdir')
128if rpmmacrosdir != 'no'
129 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
130endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200131modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400132
133# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134pkgdatadir = join_paths(datadir, 'systemd')
135environmentdir = join_paths(prefixdir, 'lib/environment.d')
136pkgsysconfdir = join_paths(sysconfdir, 'systemd')
137userunitdir = join_paths(prefixdir, 'lib/systemd/user')
138userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
139tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
140sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
141sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
142binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
143modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
144networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
145pkgincludedir = join_paths(includedir, 'systemd')
146systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
147usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
148systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
149userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
150systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
151systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
152systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
153systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
154udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400155udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
156udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
157catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
158kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
159factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400160bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
161testsdir = join_paths(prefixdir, 'lib/systemd/tests')
162systemdstatedir = join_paths(localstatedir, 'lib/systemd')
163catalogstatedir = join_paths(systemdstatedir, 'catalog')
164randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200165profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200166ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167
tblume75aaade2018-02-01 22:46:15 +0100168docdir = get_option('docdir')
169if docdir == ''
170 docdir = join_paths(datadir, 'doc/systemd')
171endif
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173dbuspolicydir = get_option('dbuspolicydir')
174if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178dbussessionservicedir = get_option('dbussessionservicedir')
179if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183dbussystemservicedir = get_option('dbussystemservicedir')
184if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
188pamlibdir = get_option('pamlibdir')
189if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400190 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191endif
192
193pamconfdir = get_option('pamconfdir')
194if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400195 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196endif
197
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100198memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200199status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100202conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400203conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
204conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
205conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400206conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100207
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100208conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100209
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100210conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
211conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
214conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
215conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
216conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100217conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100218conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
221conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
222conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100223conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400224conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400225conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
226conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100227conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
228conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
229conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
230conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400231conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
232conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
234conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700235conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700236conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400238conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400239conf.set_quoted('LIBDIR', libdir)
240conf.set_quoted('ROOTLIBDIR', rootlibdir)
241conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
242conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400243conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
244conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200245conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400246conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
247conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
248conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
249conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200250conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200251conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200252conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100253conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200254conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100257substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100258substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400259substs.set('exec_prefix', prefixdir)
260substs.set('libdir', libdir)
261substs.set('rootlibdir', rootlibdir)
262substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100263substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400264substs.set('bindir', bindir)
265substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266substs.set('rootlibexecdir', rootlibexecdir)
267substs.set('systemunitdir', systemunitdir)
268substs.set('userunitdir', userunitdir)
269substs.set('systempresetdir', systempresetdir)
270substs.set('userpresetdir', userpresetdir)
271substs.set('udevhwdbdir', udevhwdbdir)
272substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400273substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200274substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275substs.set('catalogdir', catalogdir)
276substs.set('tmpfilesdir', tmpfilesdir)
277substs.set('sysusersdir', sysusersdir)
278substs.set('sysctldir', sysctldir)
279substs.set('binfmtdir', binfmtdir)
280substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200281substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282substs.set('systemgeneratordir', systemgeneratordir)
283substs.set('usergeneratordir', usergeneratordir)
284substs.set('systemenvgeneratordir', systemenvgeneratordir)
285substs.set('userenvgeneratordir', userenvgeneratordir)
286substs.set('systemshutdowndir', systemshutdowndir)
287substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400288substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400289substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400290substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
291substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
292substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100293substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200294substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200295substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +0200296substs.set('BUILD_ROOT', project_build_root)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400297
298#####################################################################
299
300cc = meson.get_compiler('c')
301pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +0200302check_compilation_sh = find_program('tools/check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100303meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400304
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200305want_tests = get_option('tests')
306slow_tests = want_tests != 'false' and get_option('slow-tests')
307install_tests = get_option('install-tests')
308
James Hilliard46e63a22018-12-27 09:16:20 +0800309if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200310 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100311 cxx = meson.get_compiler('cpp')
312 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200313else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200314 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400315endif
316
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500317if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200318 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
319 if fuzzing_engine.found()
320 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
321 elif cc.has_argument('-fsanitize=fuzzer-no-link')
322 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
323 else
324 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
325 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200326elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500327 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
328endif
329
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100330# Those generate many false positives, and we do not want to change the code to
331# avoid them.
332basic_disabled_warnings = [
333 '-Wno-unused-parameter',
334 '-Wno-missing-field-initializers',
335 '-Wno-unused-result',
336 '-Wno-format-signedness',
337]
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100338
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900339possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900340 '-Werror=undef',
341 '-Wlogical-op',
342 '-Wmissing-include-dirs',
343 '-Wold-style-definition',
344 '-Wpointer-arith',
345 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-Wfloat-equal',
347 '-Wsuggest-attribute=noreturn',
348 '-Werror=missing-prototypes',
349 '-Werror=implicit-function-declaration',
350 '-Werror=missing-declarations',
351 '-Werror=return-type',
352 '-Werror=incompatible-pointer-types',
353 '-Werror=format=2',
354 '-Wstrict-prototypes',
355 '-Wredundant-decls',
356 '-Wmissing-noreturn',
357 '-Wimplicit-fallthrough=5',
358 '-Wshadow',
359 '-Wendif-labels',
360 '-Wstrict-aliasing=2',
361 '-Wwrite-strings',
362 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200363 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200364 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365 '-Wdate-time',
366 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700367
368 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100369 '-Wno-error=#warnings', # clang
370 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700371
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700372 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
373 # optimizations enabled, producing essentially false positives.
374 '-Wno-maybe-uninitialized',
375
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900376 '-ffast-math',
377 '-fno-common',
378 '-fdiagnostics-show-option',
379 '-fno-strict-aliasing',
380 '-fvisibility=hidden',
381 '-fstack-protector',
382 '-fstack-protector-strong',
383 '--param=ssp-buffer-size=4',
384]
385
386# --as-needed and --no-undefined are provided by meson by default,
387# run mesonconf to see what is enabled
388possible_link_flags = [
389 '-Wl,-z,relro',
390 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200391 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900392]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394if cc.get_id() == 'clang'
395 possible_cc_flags += [
396 '-Wno-typedef-redefinition',
397 '-Wno-gnu-variable-sized-type-not-at-end',
398 ]
399endif
400
401if get_option('buildtype') != 'debug'
402 possible_cc_flags += [
403 '-ffunction-sections',
404 '-fdata-sections',
405 ]
406
407 possible_link_flags += '-Wl,--gc-sections'
408endif
409
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100410add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900411add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900412add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900413
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800414if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415 #include <time.h>
416 #include <inttypes.h>
417 typedef uint64_t usec_t;
418 usec_t now(clockid_t clock);
419 int main(void) {
420 struct timespec now;
421 return 0;
422 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100423''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400424 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425endif
426
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100427if cxx_cmd != ''
428 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
429endif
430
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200431cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400432
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200433has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
434
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435#####################################################################
436# compilation result tests
437
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400438conf.set('_GNU_SOURCE', true)
439conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200440conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
445conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
446
447decl_headers = '''
448#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100449#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451
452foreach decl : ['char16_t',
453 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100454 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400456
457 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200458 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
459
460 if decl == 'struct statx'
461 if have
462 want_linux_stat_h = false
463 else
464 have = cc.sizeof(decl,
465 prefix : decl_headers + '#include <linux/stat.h>',
466 args : '-D_GNU_SOURCE') > 0
467 want_linux_stat_h = have
468 endif
469 endif
470
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200471 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472endforeach
473
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200474conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700475
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200477 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400478endforeach
479
480foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100482 ['gettid', '''#include <sys/types.h>
483 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100484 ['pivot_root', '''#include <stdlib.h>
485 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 #include <sys/stat.h>
488 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100490 ['renameat2', '''#include <stdio.h>
491 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400492 ['kcmp', '''#include <linux/kcmp.h>'''],
493 ['keyctl', '''#include <sys/types.h>
494 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200497 ['bpf', '''#include <sys/syscall.h>
498 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100499 ['statx', '''#include <sys/types.h>
500 #include <sys/stat.h>
501 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100502 ['explicit_bzero' , '''#include <string.h>'''],
503 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100504 ['set_mempolicy', '''#include <stdlib.h>
505 #include <unistd.h>'''],
506 ['get_mempolicy', '''#include <stdlib.h>
507 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200508 ['pidfd_send_signal', '''#include <stdlib.h>
509 #include <unistd.h>
510 #include <signal.h>
511 #include <sys/wait.h>'''],
512 ['pidfd_open', '''#include <stdlib.h>
513 #include <unistd.h>
514 #include <signal.h>
515 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100516 ['rt_sigqueueinfo', '''#include <stdlib.h>
517 #include <unistd.h>
518 #include <signal.h>
519 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521
Lennart Poettering85db59b2017-12-25 12:01:14 +0100522 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200523 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524endforeach
525
Lennart Poettering85db59b2017-12-25 12:01:14 +0100526if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200527 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200528 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400529else
530 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200531 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200532 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400533endif
534
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535#####################################################################
536
Davide Cavalca1485aac2019-02-27 11:19:07 -0500537vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
538 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100539 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100540 meson.project_version()]
541
Louis Taylord1084aa2019-01-21 21:45:36 +0000542version_h = vcs_tag(
543 input : 'src/version/version.h.in',
544 output : 'version.h',
545 command: vcs_tagger)
546
547versiondep = declare_dependency(sources: version_h)
548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400551m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400553git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100554env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100555perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556
Davide Cavalca1485aac2019-02-27 11:19:07 -0500557meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400558mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400559test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
560splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
563# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500564progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566 ['kmod', '/usr/bin/kmod' ],
567 ['kexec', '/usr/sbin/kexec' ],
568 ['sulogin', '/usr/sbin/sulogin' ],
569 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
570 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
571 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
572 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200573 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 ]
575foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 path = get_option(prog[0] + '-path')
577 if path != ''
578 message('Using @1@ for @0@'.format(prog[0], path))
579 else
580 exe = find_program(prog[0],
581 '/usr/sbin/' + prog[0],
582 '/sbin/' + prog[0],
583 required: false)
584 path = exe.found() ? exe.path() : prog[1]
585 endif
586 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
587 conf.set_quoted(name, path)
588 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589endforeach
590
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500591conf.set_quoted('TELINIT', get_option('telinit-path'))
592
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400593if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100594 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400595endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596
597############################################################
598
599gperf = find_program('gperf')
600
601gperf_test_format = '''
602#include <string.h>
603const char * in_word_set(const char *, @0@);
604@1@
605'''
606gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
607gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
608gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
609if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400610 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
613 if cc.compiles(gperf_test)
614 gperf_len_type = 'unsigned'
615 else
616 error('unable to determine gperf len type')
617 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618endif
619message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620conf.set('GPERF_LEN_TYPE', gperf_len_type,
621 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622
623############################################################
624
625if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100628foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629 'linux/memfd.h',
630 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200631 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632 'valgrind/memcheck.h',
633 'valgrind/valgrind.h',
634 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200636 conf.set10('HAVE_' + header.underscorify().to_upper(),
637 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endforeach
639
640############################################################
641
642conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400643conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
644gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645
646default_hierarchy = get_option('default-hierarchy')
647conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
648 description : 'default cgroup hierarchy as string')
649if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100657default_net_naming_scheme = get_option('default-net-naming-scheme')
658conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
659
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900661if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400662 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900663 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665conf.set('TIME_EPOCH', time_epoch)
666
667system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900668if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_uid_max = run_command(
670 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
672 '/etc/login.defs').stdout().strip()
673 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900674 system_uid_max = 999
675 else
676 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800677 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679conf.set('SYSTEM_UID_MAX', system_uid_max)
680substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900683if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400684 system_gid_max = run_command(
685 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800686 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
687 '/etc/login.defs').stdout().strip()
688 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900689 system_gid_max = 999
690 else
691 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800692 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694conf.set('SYSTEM_GID_MAX', system_gid_max)
695substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696
Yu Watanabeac093402018-05-10 16:04:16 +0900697dynamic_uid_min = get_option('dynamic-uid-min')
698dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100699conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
700conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
701substs.set('dynamicuidmin', dynamic_uid_min)
702substs.set('dynamicuidmax', dynamic_uid_max)
703
Yu Watanabeac093402018-05-10 16:04:16 +0900704container_uid_base_min = get_option('container-uid-base-min')
705container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100706conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
707conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
708substs.set('containeruidbasemin', container_uid_base_min)
709substs.set('containeruidbasemax', container_uid_base_max)
710
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711nobody_user = get_option('nobody-user')
712nobody_group = get_option('nobody-group')
713
Chen Qi2484bff2018-07-23 14:53:09 +0800714if not meson.is_cross_build()
715 getent_result = run_command('getent', 'passwd', '65534')
716 if getent_result.returncode() == 0
717 name = getent_result.stdout().split(':')[0]
718 if name != nobody_user
719 warning('\n' +
720 '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) +
721 'Your build will result in an user table setup that is incompatible with the local system.')
722 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800724 id_result = run_command('id', '-u', nobody_user)
725 if id_result.returncode() == 0
726 id = id_result.stdout().to_int()
727 if id != 65534
728 warning('\n' +
729 '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) +
730 'Your build will result in an user table setup that is incompatible with the local system.')
731 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100732 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100733
Chen Qi2484bff2018-07-23 14:53:09 +0800734 getent_result = run_command('getent', 'group', '65534')
735 if getent_result.returncode() == 0
736 name = getent_result.stdout().split(':')[0]
737 if name != nobody_group
738 warning('\n' +
739 '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) +
740 'Your build will result in an group table setup that is incompatible with the local system.')
741 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100742 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800743 id_result = run_command('id', '-g', nobody_group)
744 if id_result.returncode() == 0
745 id = id_result.stdout().to_int()
746 if id != 65534
747 warning('\n' +
748 '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) +
749 'Your build will result in an group table setup that is incompatible with the local system.')
750 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100751 endif
752endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900753if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900754 warning('\n' +
755 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
756 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900757endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100758
759conf.set_quoted('NOBODY_USER_NAME', nobody_user)
760conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900761substs.set('NOBODY_USER_NAME', nobody_user)
762substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100763
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764tty_gid = get_option('tty-gid')
765conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400766substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
Ikey Doherty84786b82017-12-03 12:28:23 +0000768# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900769users_gid = get_option('users-gid')
770substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000771
Yu Watanabe348b4432018-05-07 18:17:35 +0900772conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
773conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Michael Bieblace5e312018-07-13 23:36:13 +0200775dev_kvm_mode = get_option('dev-kvm-mode')
776substs.set('DEV_KVM_MODE', dev_kvm_mode)
777conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100778group_render_mode = get_option('group-render-mode')
779substs.set('GROUP_RENDER_MODE', group_render_mode)
780conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400782kill_user_processes = get_option('default-kill-user-processes')
783conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100784conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400785substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400787dns_servers = get_option('dns-servers')
788conf.set_quoted('DNS_SERVERS', dns_servers)
789substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400790
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400791ntp_servers = get_option('ntp-servers')
792conf.set_quoted('NTP_SERVERS', ntp_servers)
793substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Dave Reisner8ca9e922018-12-28 07:38:36 -0500795default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900796if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800797 if not meson.is_cross_build()
798 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
799 default_locale = run_command(choose_default_locale_sh).stdout().strip()
800 else
801 default_locale = 'C.UTF-8'
802 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900803endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500804conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
807
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200808service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700809watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
810substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200811
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400812substs.set('SUSHELL', get_option('debug-shell'))
813substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200814conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816enable_debug_hashmap = false
817enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900818enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200819foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900820 if name == 'hashmap'
821 enable_debug_hashmap = true
822 elif name == 'mmap-cache'
823 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900824 elif name == 'siphash'
825 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900826 else
827 message('unknown debug option "@0@", ignoring'.format(name))
828 endif
829endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
831conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900832conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400833
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200834conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200835conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200836
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100837default_user_path = get_option('user-path')
838if default_user_path != ''
839 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100840 default_user_path_display = default_user_path
841else
842 # meson 0.49 fails when ?: is used in .format()
843 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100844endif
845
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100846
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847#####################################################################
848
849threads = dependency('threads')
850librt = cc.find_library('rt')
851libm = cc.find_library('m')
852libdl = cc.find_library('dl')
853libcrypt = cc.find_library('crypt')
854
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400855libcap = dependency('libcap', required : false)
856if not libcap.found()
857 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
858 libcap = cc.find_library('cap')
859endif
860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100862 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100864want_libfdisk = get_option('fdisk')
865if want_libfdisk != 'false' and not skip_deps
866 libfdisk = dependency('fdisk',
867 required : want_libfdisk == 'true')
868 have = libfdisk.found()
869else
870 have = false
871 libfdisk = []
872endif
873conf.set10('HAVE_LIBFDISK', have)
874
Lennart Poettering70a5db52019-07-04 18:35:39 +0200875want_pwquality = get_option('pwquality')
876if want_pwquality != 'false' and not skip_deps
877 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
878 have = libpwquality.found()
879else
880 have = false
881 libpwquality = []
882endif
883conf.set10('HAVE_PWQUALITY', have)
884
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000886if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400888 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896
897want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000898if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libselinux = dependency('libselinux',
900 version : '>= 2.1.9',
901 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000910if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libapparmor = dependency('libapparmor',
912 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920smack_run_label = get_option('smack-run-label')
921if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923endif
924
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400925want_polkit = get_option('polkit')
926install_polkit = false
927install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000928if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400930
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libpolkit = dependency('polkit-gobject-1',
932 required : false)
933 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
934 message('Old polkit detected, will install pkla files')
935 install_polkit_pkla = true
936 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400937endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400939
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400940want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000941if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400942 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400944else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400946 libacl = []
947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400949
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000951if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000961if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libblkid.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 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969
970want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000971if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libkmod = dependency('libkmod',
973 version : '>= 15',
974 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981
982want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000983if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libpam = cc.find_library('pam', required : want_pam == 'true')
985 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libpam = []
990 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993
994want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000995if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400996 libmicrohttpd = dependency('libmicrohttpd',
997 version : '>= 0.9.33',
998 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005
1006want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001007if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001009 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001012
1013 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1014 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001022if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libcurl = dependency('libcurl',
1024 version : '>= 7.32.0',
1025 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001034want_libidn2 = get_option('libidn2')
1035if want_libidn == 'true' and want_libidn2 == 'true'
1036 error('libidn and libidn2 cannot be requested simultaneously')
1037endif
1038
Yu Watanabe1b931392019-06-29 03:13:30 +09001039if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001040 libidn = dependency('libidn2',
1041 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = libidn.found()
1043else
1044 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001045 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001048if not have and want_libidn != 'false' and not skip_deps
1049 # libidn is used for both libidn and libidn2 objects
1050 libidn = dependency('libidn',
1051 required : want_libidn == 'true')
1052 have = libidn.found()
1053else
1054 have = false
1055endif
1056conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057
1058want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001059if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 libiptc = dependency('libiptc',
1061 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001070if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libqrencode = dependency('libqrencode',
1072 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001081if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001082 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1083 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
1087endif
1088if not have
1089 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001090 libgcrypt = []
1091 libgpg_error = []
1092endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001096if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libgnutls = dependency('gnutls',
1098 version : '>= 3.1.4',
1099 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001107want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001108if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001109 libopenssl = dependency('openssl',
1110 version : '>= 1.1.0',
1111 required : want_openssl == 'true')
1112 have = libopenssl.found()
1113else
1114 have = false
1115 libopenssl = []
1116endif
1117conf.set10('HAVE_OPENSSL', have)
1118
Lennart Poettering839fddb2019-11-05 11:49:27 +01001119want_p11kit = get_option('p11kit')
1120if want_p11kit != 'false' and not skip_deps
1121 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001122 version : '>= 0.23.3',
1123 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001124 have = libp11kit.found()
1125else
1126 have = false
1127 libp11kit = []
1128endif
1129conf.set10('HAVE_P11KIT', have)
1130
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001132if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdw = dependency('libdw',
1134 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141
1142want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001143if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libz = dependency('zlib',
1145 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001154if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libbzip2 = cc.find_library('bz2',
1156 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001165if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libxz = dependency('liblzma',
1167 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
1175want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001176if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001178 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186
Norbert Langeef5924a2020-04-12 01:09:05 +02001187want_zstd = get_option('zstd')
1188if want_zstd != 'false' and not skip_deps
1189 libzstd = dependency('libzstd',
1190 required : want_zstd == 'true',
1191 version : '>= 1.4.0')
1192 have = libzstd.found()
1193else
1194 have = false
1195 libzstd = []
1196endif
1197conf.set10('HAVE_ZSTD', have)
1198
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001199want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001200if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001201 libxkbcommon = dependency('xkbcommon',
1202 version : '>= 0.3.0',
1203 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001205else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001207 libxkbcommon = []
1208endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001210
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001211want_pcre2 = get_option('pcre2')
1212if want_pcre2 != 'false'
1213 libpcre2 = dependency('libpcre2-8',
1214 required : want_pcre2 == 'true')
1215 have = libpcre2.found()
1216else
1217 have = false
1218 libpcre2 = []
1219endif
1220conf.set10('HAVE_PCRE2', have)
1221
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001222want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001223if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 libglib = dependency('glib-2.0',
1225 version : '>= 2.22.0',
1226 required : want_glib == 'true')
1227 libgobject = dependency('gobject-2.0',
1228 version : '>= 2.22.0',
1229 required : want_glib == 'true')
1230 libgio = dependency('gio-2.0',
1231 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001232 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 libglib = []
1236 libgobject = []
1237 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240
1241want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001242if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 libdbus = dependency('dbus-1',
1244 version : '>= 1.3.2',
1245 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001247else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001248 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001250endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001252
Yu Watanabe42303dc2017-06-18 05:22:32 +09001253default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001254if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001255 default_dnssec = 'no'
1256endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001257if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001258 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1259 default_dnssec = 'no'
1260endif
1261conf.set('DEFAULT_DNSSEC_MODE',
1262 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1263substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1264
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001265dns_over_tls = get_option('dns-over-tls')
1266if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001267 if dns_over_tls == 'openssl'
1268 have_gnutls = false
1269 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001270 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001271 if dns_over_tls == 'gnutls' and not have_gnutls
1272 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1273 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001274 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001275 if dns_over_tls == 'gnutls' or have_gnutls
1276 have_openssl = false
1277 else
1278 have_openssl = conf.get('HAVE_OPENSSL') == 1
1279 if dns_over_tls != 'auto' and not have_openssl
1280 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001281 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001282 endif
1283 endif
1284 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001286 have = false
1287 have_gnutls = false
1288 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001289endif
1290conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001291conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1292conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001293
Iwan Timmerc9299be2018-06-13 20:26:24 +02001294default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001295if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001296 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001297endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001298if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001299 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 +02001300 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001301endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001302conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1303 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1304substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001305
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001306default_mdns = get_option('default-mdns')
1307conf.set('DEFAULT_MDNS_MODE',
1308 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1309substs.set('DEFAULT_MDNS_MODE', default_mdns)
1310
1311default_llmnr = get_option('default-llmnr')
1312conf.set('DEFAULT_LLMNR_MODE',
1313 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1314substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1315
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001316want_repart = get_option('repart')
1317if want_repart != 'false'
1318 have = (conf.get('HAVE_OPENSSL') == 1 and
1319 conf.get('HAVE_LIBFDISK') == 1)
1320 if want_repart == 'true' and not have
1321 error('repart support was requested, but dependencies are not available')
1322 endif
1323else
1324 have = false
1325endif
1326conf.set10('ENABLE_REPART', have)
1327
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001329if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001330 have = (conf.get('HAVE_LIBCURL') == 1 and
1331 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001332 conf.get('HAVE_XZ') == 1 and
1333 conf.get('HAVE_GCRYPT') == 1)
1334 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 error('importd support was requested, but dependencies are not available')
1336 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001337else
1338 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001340conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341
Lennart Poettering70a5db52019-07-04 18:35:39 +02001342want_homed = get_option('homed')
1343if want_homed != 'false'
1344 have = (conf.get('HAVE_OPENSSL') == 1 and
1345 conf.get('HAVE_LIBFDISK') == 1 and
1346 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1347 if want_homed == 'true' and not have
1348 error('homed support was requested, but dependencies are not available')
1349 endif
1350else
1351 have = false
1352endif
1353conf.set10('ENABLE_HOMED', have)
1354
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001355have = have and conf.get('HAVE_PAM') == 1
1356conf.set10('ENABLE_PAM_HOME', have)
1357
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001359if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001360 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1361 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001362 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1363 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001364 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001365 # config should be installed when any of the programs are built.
1366 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1367 error('remote support was requested, but dependencies are not available')
1368 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001369 have = have_deps[0] or have_deps[1]
1370else
1371 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001373conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001375foreach term : ['utmp',
1376 'hibernate',
1377 'environment-d',
1378 'binfmt',
1379 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001380 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001381 'resolve',
1382 'logind',
1383 'hostnamed',
1384 'localed',
1385 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001386 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001387 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001388 'networkd',
1389 'timedated',
1390 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001391 'firstboot',
1392 'randomseed',
1393 'backlight',
1394 'vconsole',
1395 'quotacheck',
1396 'sysusers',
1397 'tmpfiles',
1398 'hwdb',
1399 'rfkill',
1400 'ldconfig',
1401 'efi',
1402 'tpm',
1403 'ima',
1404 'smack',
1405 'gshadow',
1406 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001407 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001408 'nss-systemd']
1409 have = get_option(term)
1410 name = 'ENABLE_' + term.underscorify().to_upper()
1411 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412endforeach
1413
Yu Watanabe08540a92018-07-18 09:25:57 +09001414foreach tuple : [['nss-mymachines', 'machined'],
1415 ['nss-resolve', 'resolve']]
1416 want = get_option(tuple[0])
1417 if want != 'false'
1418 have = get_option(tuple[1])
1419 if want == 'true' and not have
1420 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1421 endif
1422 else
1423 have = false
1424 endif
1425 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1426 conf.set10(name, have)
1427endforeach
1428
1429enable_nss = false
1430foreach term : ['ENABLE_NSS_MYHOSTNAME',
1431 'ENABLE_NSS_MYMACHINES',
1432 'ENABLE_NSS_RESOLVE',
1433 'ENABLE_NSS_SYSTEMD']
1434 if conf.get(term) == 1
1435 enable_nss = true
1436 endif
1437endforeach
1438conf.set10('ENABLE_NSS', enable_nss)
1439
Yu Watanabe348b4432018-05-07 18:17:35 +09001440conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001441
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001442tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001443fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001444
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001445conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001446
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447#####################################################################
1448
1449if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001451
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001452 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001453 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001454 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001455 elif efi_arch == 'x86_64'
1456 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001457 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 elif efi_arch == 'arm'
1459 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001460 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001461 elif efi_arch == 'aarch64'
1462 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001463 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 else
1465 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001466 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001469 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001471
Yu Watanabeac093402018-05-10 16:04:16 +09001472 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001473else
1474 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001476conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
1478#####################################################################
1479
1480config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 output : 'config.h',
1482 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483
Yu Watanabe348b4432018-05-07 18:17:35 +09001484meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1485
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001487 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488 'src/shared',
1489 'src/systemd',
1490 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001491 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001492 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493 'src/resolve',
1494 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001495 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 'src/login',
1497 'src/udev',
1498 'src/libudev',
1499 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001500 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501 'src/libsystemd/sd-bus',
1502 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001503 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 'src/libsystemd/sd-hwdb',
1505 'src/libsystemd/sd-id128',
1506 'src/libsystemd/sd-netlink',
1507 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001508 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001510 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511
1512add_project_arguments('-include', 'config.h', language : 'c')
1513
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001514generate_gperfs = find_program('tools/generate-gperfs.py')
1515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516subdir('po')
1517subdir('catalog')
1518subdir('src/systemd')
1519subdir('src/basic')
1520subdir('src/libsystemd')
1521subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524
1525libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 'journal-core',
1527 libjournal_core_sources,
1528 journald_gperf_c,
1529 include_directories : includes,
1530 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
Davide Cavalca1485aac2019-02-27 11:19:07 -05001532libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001535 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001536 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 include_directories : includes,
1538 link_args : ['-shared',
1539 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001540 link_with : [libbasic,
1541 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001542 link_whole : [libsystemd_static,
1543 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 dependencies : [threads,
1545 librt,
1546 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001547 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 liblz4],
1549 link_depends : libsystemd_sym,
1550 install : true,
1551 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
Davide Cavalca70848ec2018-04-09 02:43:35 -07001553static_libsystemd = get_option('static-libsystemd')
1554static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1555
1556install_libsystemd_static = static_library(
1557 'systemd',
1558 libsystemd_sources,
1559 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001560 basic_sources,
1561 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001562 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001563 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001564 build_by_default : static_libsystemd != 'false',
1565 install : static_libsystemd != 'false',
1566 install_dir : rootlibdir,
1567 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1568 dependencies : [threads,
1569 librt,
1570 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001571 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001572 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001573 libcap,
1574 libblkid,
1575 libmount,
1576 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001577 libgcrypt],
1578 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1579
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001580# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001581make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1582
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001583############################################################
1584
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001585# binaries that have --help and are intended for use by humans,
1586# usually, but not always, installed in /bin.
1587public_programs = []
1588
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001589subdir('src/libudev')
1590subdir('src/shared')
1591subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001592subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593subdir('src/udev')
1594subdir('src/network')
1595
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001596subdir('src/analyze')
1597subdir('src/journal-remote')
1598subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001599subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001600subdir('src/hostname')
1601subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001602subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001603subdir('src/kernel-install')
1604subdir('src/locale')
1605subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001606subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001607subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001608subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001609subdir('src/nspawn')
1610subdir('src/resolve')
1611subdir('src/timedate')
1612subdir('src/timesync')
1613subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001614subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001615
1616subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001617subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001618subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001619subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001620
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001621############################################################
1622
1623# only static linking apart from libdl, to make sure that the
1624# module is linked to all libraries that it uses.
1625test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 'test-dlopen',
1627 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001628 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 include_directories : includes,
1630 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001631 dependencies : [libdl],
1632 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001633
Yu Watanabe08540a92018-07-18 09:25:57 +09001634foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001635 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001636 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1637 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001638
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001639 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 if condition
1641 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001642
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001644 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001645
Lennart Poettering1684c562019-07-04 18:31:11 +02001646 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1647 if tuple.length() > 2
1648 sources += tuple[2].split()
1649 endif
1650
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 nss = shared_library(
1652 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001653 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001654 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 version : '2',
1656 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001657 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1658 link_args : ['-Wl,-z,nodelete',
1659 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001660 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001661 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001662 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 libbasic],
1664 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001665 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 link_depends : sym,
1667 install : true,
1668 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001669
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 # We cannot use shared_module because it does not support version suffix.
1671 # Unfortunately shared_library insists on creating the symlink…
1672 meson.add_install_script('sh', '-c',
1673 'rm $DESTDIR@0@/libnss_@1@.so'
1674 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001675
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001676 if want_tests != 'false'
1677 test('dlopen-nss_' + module,
1678 test_dlopen,
1679 # path to dlopen must include a slash
1680 args : nss.full_path())
1681 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001683endforeach
1684
1685############################################################
1686
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001687executable(
1688 'systemd',
1689 systemd_sources,
1690 include_directories : includes,
1691 link_with : [libcore,
1692 libshared],
1693 dependencies : [versiondep,
1694 threads,
1695 librt,
1696 libseccomp,
1697 libselinux,
1698 libmount,
1699 libblkid],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001704meson.add_install_script(meson_make_symlink,
1705 join_paths(rootlibexecdir, 'systemd'),
1706 join_paths(rootsbindir, 'init'))
1707
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001708public_programs += executable(
1709 'systemd-analyze',
1710 systemd_analyze_sources,
1711 include_directories : includes,
1712 link_with : [libcore,
1713 libshared],
1714 dependencies : [versiondep,
1715 threads,
1716 librt,
1717 libseccomp,
1718 libselinux,
1719 libmount,
1720 libblkid],
1721 install_rpath : rootlibexecdir,
1722 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001724executable(
1725 'systemd-journald',
1726 systemd_journald_sources,
1727 include_directories : includes,
1728 link_with : [libjournal_core,
1729 libshared],
1730 dependencies : [threads,
1731 libxz,
1732 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001733 libselinux,
1734 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001738
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001739public_programs += executable(
1740 'systemd-cat',
1741 systemd_cat_sources,
1742 include_directories : includes,
1743 link_with : [libjournal_core,
1744 libshared],
1745 dependencies : [threads],
1746 install_rpath : rootlibexecdir,
1747 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001749public_programs += executable(
1750 'journalctl',
1751 journalctl_sources,
1752 include_directories : includes,
1753 link_with : [libshared],
1754 dependencies : [threads,
1755 libqrencode,
1756 libxz,
1757 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001758 libpcre2,
1759 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001760 install_rpath : rootlibexecdir,
1761 install : true,
1762 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001764executable(
1765 'systemd-getty-generator',
1766 'src/getty-generator/getty-generator.c',
1767 include_directories : includes,
1768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001773executable(
1774 'systemd-debug-generator',
1775 'src/debug-generator/debug-generator.c',
1776 include_directories : includes,
1777 link_with : [libshared],
1778 install_rpath : rootlibexecdir,
1779 install : true,
1780 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001782executable(
1783 'systemd-run-generator',
1784 'src/run-generator/run-generator.c',
1785 include_directories : includes,
1786 link_with : [libshared],
1787 install_rpath : rootlibexecdir,
1788 install : true,
1789 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001790
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001791executable(
1792 'systemd-fstab-generator',
1793 'src/fstab-generator/fstab-generator.c',
1794 include_directories : includes,
1795 link_with : [libcore_shared,
1796 libshared],
1797 install_rpath : rootlibexecdir,
1798 install : true,
1799 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001800
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001801if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001802 executable(
1803 '30-systemd-environment-d-generator',
1804 'src/environment-d-generator/environment-d-generator.c',
1805 include_directories : includes,
1806 link_with : [libshared],
1807 install_rpath : rootlibexecdir,
1808 install : true,
1809 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001810
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 meson.add_install_script(meson_make_symlink,
1812 join_paths(sysconfdir, 'environment'),
1813 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814endif
1815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001816if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001817 executable(
1818 'systemd-hibernate-resume-generator',
1819 'src/hibernate-resume/hibernate-resume-generator.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001826 executable(
1827 'systemd-hibernate-resume',
1828 'src/hibernate-resume/hibernate-resume.c',
1829 include_directories : includes,
1830 link_with : [libshared],
1831 install_rpath : rootlibexecdir,
1832 install : true,
1833 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834endif
1835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001836if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001837 executable(
1838 'systemd-gpt-auto-generator',
1839 'src/gpt-auto-generator/gpt-auto-generator.c',
1840 'src/shared/blkid-util.h',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 dependencies : libblkid,
1844 install_rpath : rootlibexecdir,
1845 install : true,
1846 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001848 public_programs += executable(
1849 'systemd-dissect',
1850 'src/dissect/dissect.c',
1851 include_directories : includes,
1852 link_with : [libshared],
1853 install_rpath : rootlibexecdir,
1854 install : true,
1855 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001856endif
1857
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001858if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001859 executable(
1860 'systemd-resolved',
1861 systemd_resolved_sources,
1862 include_directories : includes,
1863 link_with : [libshared,
1864 libbasic_gcrypt,
1865 libsystemd_resolve_core],
1866 dependencies : systemd_resolved_dependencies,
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001871 public_programs += executable(
1872 'resolvectl',
1873 resolvectl_sources,
1874 include_directories : includes,
1875 link_with : [libshared,
1876 libbasic_gcrypt,
1877 libsystemd_resolve_core],
1878 dependencies : [threads,
1879 libgpg_error,
1880 libm,
1881 libidn],
1882 install_rpath : rootlibexecdir,
1883 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001884
1885 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001886 join_paths(bindir, 'resolvectl'),
1887 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001888
1889 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001890 join_paths(bindir, 'resolvectl'),
1891 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001892endif
1893
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001894if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001895 executable(
1896 'systemd-logind',
1897 systemd_logind_sources,
1898 include_directories : includes,
1899 link_with : [liblogind_core,
1900 libshared],
1901 dependencies : [threads,
1902 libacl],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001907 public_programs += executable(
1908 'loginctl',
1909 loginctl_sources,
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [threads,
1913 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001914 libxz,
1915 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001920 public_programs += executable(
1921 'systemd-inhibit',
1922 'src/login/inhibit.c',
1923 include_directories : includes,
1924 link_with : [libshared],
1925 install_rpath : rootlibexecdir,
1926 install : true,
1927 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001928
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001929 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001930 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 pam_systemd = shared_library(
1932 'pam_systemd',
1933 pam_systemd_c,
1934 name_prefix : '',
1935 include_directories : includes,
1936 link_args : ['-shared',
1937 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001938 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 libshared_static],
1940 dependencies : [threads,
1941 libpam,
1942 libpam_misc],
1943 link_depends : pam_systemd_sym,
1944 install : true,
1945 install_dir : pamlibdir)
1946
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001947 if want_tests != 'false'
1948 test('dlopen-pam_systemd',
1949 test_dlopen,
1950 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001951 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001952 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001955 executable(
1956 'systemd-user-runtime-dir',
1957 user_runtime_dir_sources,
1958 include_directories : includes,
1959 link_with : [libshared],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001963endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001964
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001965if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001966 executable(
1967 'systemd-user-sessions',
1968 'src/user-sessions/user-sessions.c',
1969 include_directories : includes,
1970 link_with : [libshared],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974endif
1975
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001976if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001977 public_programs += executable(
1978 'bootctl',
1979 'src/boot/bootctl.c',
1980 include_directories : includes,
1981 link_with : [libshared],
1982 dependencies : [libblkid],
1983 install_rpath : rootlibexecdir,
1984 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02001985
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001986 public_programs += executable(
1987 'systemd-bless-boot',
1988 'src/boot/bless-boot.c',
1989 include_directories : includes,
1990 link_with : [libshared],
1991 dependencies : [libblkid],
1992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001995
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001996 executable(
1997 'systemd-bless-boot-generator',
1998 'src/boot/bless-boot-generator.c',
1999 include_directories : includes,
2000 link_with : [libshared],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002004endif
2005
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002006executable(
2007 'systemd-boot-check-no-failures',
2008 'src/boot/boot-check-no-failures.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 dependencies : [libblkid],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002015
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002016public_programs += executable(
2017 'systemd-socket-activate',
2018 'src/activate/activate.c',
2019 include_directories : includes,
2020 link_with : [libshared],
2021 dependencies : [threads],
2022 install_rpath : rootlibexecdir,
2023 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002024
2025if get_option('link-systemctl-shared')
2026 systemctl_link_with = [libshared]
2027else
2028 systemctl_link_with = [libsystemd_static,
2029 libshared_static,
2030 libjournal_client,
2031 libbasic_gcrypt]
2032endif
2033
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002034public_programs += executable(
2035 'systemctl',
2036 'src/systemctl/systemctl.c',
2037 'src/systemctl/sysv-compat.h',
2038 'src/systemctl/sysv-compat.c',
2039 include_directories : includes,
2040 link_with : systemctl_link_with,
2041 dependencies : [threads,
2042 libcap,
2043 libselinux,
2044 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002045 liblz4,
2046 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050
Lennart Poettering61d05782018-04-16 21:41:40 +02002051if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002052 executable(
2053 'systemd-portabled',
2054 systemd_portabled_sources,
2055 include_directories : includes,
2056 link_with : [libshared],
2057 dependencies : [threads],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002061
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002062 public_programs += executable(
2063 'portablectl',
2064 'src/portable/portablectl.c',
2065 include_directories : includes,
2066 link_with : [libshared],
2067 dependencies : [threads],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002071endif
2072
Lennart Poetteringd093b622019-07-04 18:33:30 +02002073if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002074 executable(
2075 'systemd-userwork',
2076 systemd_userwork_sources,
2077 include_directories : includes,
2078 link_with : [libshared],
2079 dependencies : [threads],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002083
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002084 executable(
2085 'systemd-userdbd',
2086 systemd_userdbd_sources,
2087 include_directories : includes,
2088 link_with : [libshared],
2089 dependencies : [threads],
2090 install_rpath : rootlibexecdir,
2091 install : true,
2092 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002093
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002094 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002095 'userdbctl',
2096 userdbctl_sources,
2097 include_directories : includes,
2098 link_with : [libshared],
2099 dependencies : [threads],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002103endif
2104
Lennart Poettering70a5db52019-07-04 18:35:39 +02002105if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002106 executable(
2107 'systemd-homework',
2108 systemd_homework_sources,
2109 include_directories : includes,
2110 link_with : [libshared],
2111 dependencies : [threads,
2112 libcryptsetup,
2113 libblkid,
2114 libcrypt,
2115 libopenssl,
2116 libfdisk,
2117 libp11kit],
2118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002121
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002122 executable(
2123 'systemd-homed',
2124 systemd_homed_sources,
2125 include_directories : includes,
2126 link_with : [libshared],
2127 dependencies : [threads,
2128 libcrypt,
2129 libopenssl,
2130 libpwquality],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002134
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002135 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002136 'homectl',
2137 homectl_sources,
2138 include_directories : includes,
2139 link_with : [libshared],
2140 dependencies : [threads,
2141 libcrypt,
2142 libopenssl,
2143 libp11kit,
2144 libpwquality],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002148
2149 if conf.get('HAVE_PAM') == 1
2150 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2151 pam_systemd = shared_library(
2152 'pam_systemd_home',
2153 pam_systemd_home_c,
2154 name_prefix : '',
2155 include_directories : includes,
2156 link_args : ['-shared',
2157 '-Wl,--version-script=' + version_script_arg],
2158 link_with : [libsystemd_static,
2159 libshared_static],
2160 dependencies : [threads,
2161 libpam,
2162 libpam_misc,
2163 libcrypt],
2164 link_depends : pam_systemd_home_sym,
2165 install : true,
2166 install_dir : pamlibdir)
2167 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002168endif
2169
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002170foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2171 meson.add_install_script(meson_make_symlink,
2172 join_paths(rootbindir, 'systemctl'),
2173 join_paths(rootsbindir, alias))
2174endforeach
2175
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002176if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002177 executable(
2178 'systemd-backlight',
2179 'src/backlight/backlight.c',
2180 include_directories : includes,
2181 link_with : [libshared],
2182 install_rpath : rootlibexecdir,
2183 install : true,
2184 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002185endif
2186
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002187if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002188 executable(
2189 'systemd-rfkill',
2190 'src/rfkill/rfkill.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-Szmek6164ec42020-04-28 09:08:04 +02002198executable(
2199 'systemd-system-update-generator',
2200 'src/system-update-generator/system-update-generator.c',
2201 include_directories : includes,
2202 link_with : [libshared],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002207if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002208 systemd_cryptsetup_sources = files('''
2209 src/cryptsetup/cryptsetup.c
2210 src/cryptsetup/cryptsetup-pkcs11.h
2211'''.split())
2212
2213 if conf.get('HAVE_P11KIT') == 1
2214 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2215 endif
2216
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002217 executable(
2218 'systemd-cryptsetup',
2219 systemd_cryptsetup_sources,
2220 include_directories : includes,
2221 link_with : [libshared],
2222 dependencies : [libcryptsetup,
2223 libp11kit],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002228 executable(
2229 'systemd-cryptsetup-generator',
2230 'src/cryptsetup/cryptsetup-generator.c',
2231 include_directories : includes,
2232 link_with : [libshared],
2233 dependencies : [libcryptsetup],
2234 install_rpath : rootlibexecdir,
2235 install : true,
2236 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002238 executable(
2239 'systemd-veritysetup',
2240 'src/veritysetup/veritysetup.c',
2241 include_directories : includes,
2242 link_with : [libshared],
2243 dependencies : [libcryptsetup],
2244 install_rpath : rootlibexecdir,
2245 install : true,
2246 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002248 executable(
2249 'systemd-veritysetup-generator',
2250 'src/veritysetup/veritysetup-generator.c',
2251 include_directories : includes,
2252 link_with : [libshared],
2253 dependencies : [libcryptsetup],
2254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257endif
2258
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002259if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002260 executable(
2261 'systemd-sysv-generator',
2262 'src/sysv-generator/sysv-generator.c',
2263 include_directories : includes,
2264 link_with : [libshared],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002269 executable(
2270 'systemd-rc-local-generator',
2271 'src/rc-local-generator/rc-local-generator.c',
2272 include_directories : includes,
2273 link_with : [libshared],
2274 install_rpath : rootlibexecdir,
2275 install : true,
2276 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002277endif
2278
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002279if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002280 executable(
2281 'systemd-hostnamed',
2282 'src/hostname/hostnamed.c',
2283 include_directories : includes,
2284 link_with : [libshared],
2285 install_rpath : rootlibexecdir,
2286 install : true,
2287 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002289 public_programs += executable(
2290 'hostnamectl',
2291 'src/hostname/hostnamectl.c',
2292 include_directories : includes,
2293 link_with : [libshared],
2294 install_rpath : rootlibexecdir,
2295 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296endif
2297
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002298if conf.get('ENABLE_LOCALED') == 1
2299 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 # logind will load libxkbcommon.so dynamically on its own
2301 deps = [libdl]
2302 else
2303 deps = []
2304 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002305
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002306 executable(
2307 'systemd-localed',
2308 systemd_localed_sources,
2309 include_directories : includes,
2310 link_with : [libshared],
2311 dependencies : deps,
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002316 public_programs += executable(
2317 'localectl',
2318 localectl_sources,
2319 include_directories : includes,
2320 link_with : [libshared],
2321 install_rpath : rootlibexecdir,
2322 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323endif
2324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002326 executable(
2327 'systemd-timedated',
2328 'src/timedate/timedated.c',
2329 include_directories : includes,
2330 link_with : [libshared],
2331 install_rpath : rootlibexecdir,
2332 install : true,
2333 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002334endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002335
Yu Watanabe6129ec82018-05-03 18:07:43 +09002336if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002337 public_programs += executable(
2338 'timedatectl',
2339 'src/timedate/timedatectl.c',
2340 include_directories : includes,
2341 install_rpath : rootlibexecdir,
2342 link_with : [libshared],
2343 dependencies : [libm],
2344 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345endif
2346
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002347if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002348 if get_option('link-timesyncd-shared')
2349 timesyncd_link_with = [libshared]
2350 else
2351 timesyncd_link_with = [libsystemd_static,
2352 libshared_static,
2353 libjournal_client,
2354 libbasic_gcrypt]
2355 endif
2356
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002357 executable(
2358 'systemd-timesyncd',
2359 systemd_timesyncd_sources,
2360 include_directories : includes,
2361 link_with : [timesyncd_link_with],
2362 dependencies : [threads,
2363 libm],
2364 install_rpath : rootlibexecdir,
2365 install : true,
2366 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002367
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002368 executable(
2369 'systemd-time-wait-sync',
2370 'src/time-wait-sync/time-wait-sync.c',
2371 include_directories : includes,
2372 link_with : [timesyncd_link_with],
2373 install_rpath : rootlibexecdir,
2374 install : true,
2375 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376endif
2377
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002378if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002379 executable(
2380 'systemd-machined',
2381 systemd_machined_sources,
2382 include_directories : includes,
2383 link_with : [libmachine_core,
2384 libshared],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002388
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002389 public_programs += executable(
2390 'machinectl',
2391 'src/machine/machinectl.c',
2392 include_directories : includes,
2393 link_with : [libshared],
2394 dependencies : [threads,
2395 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002396 liblz4,
2397 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002398 install_rpath : rootlibexecdir,
2399 install : true,
2400 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401endif
2402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002403if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002404 executable(
2405 'systemd-importd',
2406 systemd_importd_sources,
2407 include_directories : includes,
2408 link_with : [libshared],
2409 dependencies : [threads],
2410 install_rpath : rootlibexecdir,
2411 install : true,
2412 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002414 systemd_pull = executable(
2415 'systemd-pull',
2416 systemd_pull_sources,
2417 include_directories : includes,
2418 link_with : [libshared],
2419 dependencies : [versiondep,
2420 libcurl,
2421 libz,
2422 libbzip2,
2423 libxz,
2424 libgcrypt],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002428
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002429 systemd_import = executable(
2430 'systemd-import',
2431 systemd_import_sources,
2432 include_directories : includes,
2433 link_with : [libshared],
2434 dependencies : [libcurl,
2435 libz,
2436 libbzip2,
2437 libxz],
2438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002442 systemd_import_fs = executable(
2443 'systemd-import-fs',
2444 systemd_import_fs_sources,
2445 include_directories : includes,
2446 link_with : [libshared],
2447 install_rpath : rootlibexecdir,
2448 install : true,
2449 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002450
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002451 systemd_export = executable(
2452 'systemd-export',
2453 systemd_export_sources,
2454 include_directories : includes,
2455 link_with : [libshared],
2456 dependencies : [libcurl,
2457 libz,
2458 libbzip2,
2459 libxz],
2460 install_rpath : rootlibexecdir,
2461 install : true,
2462 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002463
2464 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465endif
2466
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002467if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002468 public_programs += executable(
2469 'systemd-journal-upload',
2470 systemd_journal_upload_sources,
2471 include_directories : includes,
2472 link_with : [libshared],
2473 dependencies : [versiondep,
2474 threads,
2475 libcurl,
2476 libgnutls,
2477 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002478 liblz4,
2479 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002480 install_rpath : rootlibexecdir,
2481 install : true,
2482 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483endif
2484
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002485if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002486 public_programs += executable(
2487 'systemd-journal-remote',
2488 systemd_journal_remote_sources,
2489 include_directories : includes,
2490 link_with : [libshared,
2491 libsystemd_journal_remote],
2492 dependencies : [threads,
2493 libmicrohttpd,
2494 libgnutls,
2495 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002496 liblz4,
2497 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002502 public_programs += executable(
2503 'systemd-journal-gatewayd',
2504 systemd_journal_gatewayd_sources,
2505 include_directories : includes,
2506 link_with : [libshared],
2507 dependencies : [threads,
2508 libmicrohttpd,
2509 libgnutls,
2510 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002511 liblz4,
2512 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002513 install_rpath : rootlibexecdir,
2514 install : true,
2515 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002516endif
2517
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002518if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002519 executable(
2520 'systemd-coredump',
2521 systemd_coredump_sources,
2522 include_directories : includes,
2523 link_with : [libshared],
2524 dependencies : [threads,
2525 libacl,
2526 libdw,
2527 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002528 liblz4,
2529 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002530 install_rpath : rootlibexecdir,
2531 install : true,
2532 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002534 public_programs += executable(
2535 'coredumpctl',
2536 coredumpctl_sources,
2537 include_directories : includes,
2538 link_with : [libshared],
2539 dependencies : [threads,
2540 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002541 liblz4,
2542 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002543 install_rpath : rootlibexecdir,
2544 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545endif
2546
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002547if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002548 executable(
2549 'systemd-pstore',
2550 systemd_pstore_sources,
2551 include_directories : includes,
2552 link_with : [libshared],
2553 dependencies : [threads,
2554 libacl,
2555 libdw,
2556 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002557 liblz4,
2558 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002559 install_rpath : rootlibexecdir,
2560 install : true,
2561 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002562endif
2563
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002564if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002565 public_programs += executable(
2566 'systemd-binfmt',
2567 'src/binfmt/binfmt.c',
2568 include_directories : includes,
2569 link_with : [libshared],
2570 install_rpath : rootlibexecdir,
2571 install : true,
2572 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002573
2574 meson.add_install_script('sh', '-c',
2575 mkdir_p.format(binfmtdir))
2576 meson.add_install_script('sh', '-c',
2577 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2578endif
2579
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002580if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002581 exe = executable(
2582 'systemd-repart',
2583 systemd_repart_sources,
2584 include_directories : includes,
2585 link_with : [libshared],
2586 dependencies : [threads,
2587 libcryptsetup,
2588 libblkid,
2589 libfdisk,
2590 libopenssl],
2591 install_rpath : rootlibexecdir,
2592 install : true,
2593 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002594
2595 if want_tests != 'false'
2596 test('test-repart',
2597 test_repart_sh,
2598 args : exe.full_path())
2599 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002600endif
2601
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002602if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002603 executable(
2604 'systemd-vconsole-setup',
2605 'src/vconsole/vconsole-setup.c',
2606 include_directories : includes,
2607 link_with : [libshared],
2608 install_rpath : rootlibexecdir,
2609 install : true,
2610 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611endif
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002614 executable(
2615 'systemd-random-seed',
2616 'src/random-seed/random-seed.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_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002625 executable(
2626 'systemd-firstboot',
2627 'src/firstboot/firstboot.c',
2628 include_directories : includes,
2629 link_with : [libshared],
2630 dependencies : [libcrypt],
2631 install_rpath : rootlibexecdir,
2632 install : true,
2633 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634endif
2635
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002636executable(
2637 'systemd-remount-fs',
2638 'src/remount-fs/remount-fs.c',
2639 include_directories : includes,
2640 link_with : [libcore_shared,
2641 libshared],
2642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002646executable(
2647 'systemd-machine-id-setup',
2648 'src/machine-id-setup/machine-id-setup-main.c',
2649 include_directories : includes,
2650 link_with : [libcore_shared,
2651 libshared],
2652 install_rpath : rootlibexecdir,
2653 install : true,
2654 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002656executable(
2657 'systemd-fsck',
2658 'src/fsck/fsck.c',
2659 include_directories : includes,
2660 link_with : [libshared],
2661 install_rpath : rootlibexecdir,
2662 install : true,
2663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002664
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002665executable('systemd-growfs',
2666 'src/partition/growfs.c',
2667 include_directories : includes,
2668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002669 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002670 install_rpath : rootlibexecdir,
2671 install : true,
2672 install_dir : rootlibexecdir)
2673
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002674executable(
2675 'systemd-makefs',
2676 'src/partition/makefs.c',
2677 include_directories : includes,
2678 link_with : [libshared],
2679 install_rpath : rootlibexecdir,
2680 install : true,
2681 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002682
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002683executable(
2684 'systemd-sleep',
2685 'src/sleep/sleep.c',
2686 include_directories : includes,
2687 link_with : [libshared],
2688 install_rpath : rootlibexecdir,
2689 install : true,
2690 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691
Yu Watanabed25e1272019-01-03 02:32:57 +09002692install_data('src/sleep/sleep.conf',
2693 install_dir : pkgsysconfdir)
2694
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002695public_programs += executable(
2696 'systemd-sysctl',
2697 'src/sysctl/sysctl.c',
2698 include_directories : includes,
2699 link_with : [libshared],
2700 install_rpath : rootlibexecdir,
2701 install : true,
2702 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002703
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002704executable(
2705 'systemd-ac-power',
2706 'src/ac-power/ac-power.c',
2707 include_directories : includes,
2708 link_with : [libshared],
2709 install_rpath : rootlibexecdir,
2710 install : true,
2711 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002712
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002713public_programs += executable(
2714 'systemd-detect-virt',
2715 'src/detect-virt/detect-virt.c',
2716 include_directories : includes,
2717 link_with : [libshared],
2718 install_rpath : rootlibexecdir,
2719 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002720
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002721public_programs += executable(
2722 'systemd-delta',
2723 'src/delta/delta.c',
2724 include_directories : includes,
2725 link_with : [libshared],
2726 install_rpath : rootlibexecdir,
2727 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002729public_programs += executable(
2730 'systemd-escape',
2731 'src/escape/escape.c',
2732 include_directories : includes,
2733 link_with : [libshared],
2734 install_rpath : rootlibexecdir,
2735 install : true,
2736 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002737
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002738public_programs += executable(
2739 'systemd-notify',
2740 'src/notify/notify.c',
2741 include_directories : includes,
2742 link_with : [libshared],
2743 install_rpath : rootlibexecdir,
2744 install : true,
2745 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002746
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002747executable(
2748 'systemd-volatile-root',
2749 'src/volatile-root/volatile-root.c',
2750 include_directories : includes,
2751 link_with : [libshared],
2752 install_rpath : rootlibexecdir,
2753 install : true,
2754 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002755
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002756executable(
2757 'systemd-cgroups-agent',
2758 'src/cgroups-agent/cgroups-agent.c',
2759 include_directories : includes,
2760 link_with : [libshared],
2761 install_rpath : rootlibexecdir,
2762 install : true,
2763 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002764
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002765public_programs += executable(
2766 'systemd-id128',
2767 'src/id128/id128.c',
2768 include_directories : includes,
2769 link_with : [libshared],
2770 install_rpath : rootlibexecdir,
2771 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002772
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002773public_programs += executable(
2774 'systemd-path',
2775 'src/path/path.c',
2776 include_directories : includes,
2777 link_with : [libshared],
2778 install_rpath : rootlibexecdir,
2779 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002781public_programs += executable(
2782 'systemd-ask-password',
2783 'src/ask-password/ask-password.c',
2784 include_directories : includes,
2785 link_with : [libshared],
2786 install_rpath : rootlibexecdir,
2787 install : true,
2788 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002789
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002790executable(
2791 'systemd-reply-password',
2792 'src/reply-password/reply-password.c',
2793 include_directories : includes,
2794 link_with : [libshared],
2795 install_rpath : rootlibexecdir,
2796 install : true,
2797 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002798
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002799public_programs += executable(
2800 'systemd-tty-ask-password-agent',
2801 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2802 include_directories : includes,
2803 link_with : [libshared],
2804 install_rpath : rootlibexecdir,
2805 install : true,
2806 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002807
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002808public_programs += executable(
2809 'systemd-cgls',
2810 'src/cgls/cgls.c',
2811 include_directories : includes,
2812 link_with : [libshared],
2813 install_rpath : rootlibexecdir,
2814 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002815
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002816public_programs += executable(
2817 'systemd-cgtop',
2818 'src/cgtop/cgtop.c',
2819 include_directories : includes,
2820 link_with : [libshared],
2821 install_rpath : rootlibexecdir,
2822 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002824executable(
2825 'systemd-initctl',
2826 'src/initctl/initctl.c',
2827 include_directories : includes,
2828 link_with : [libshared],
2829 install_rpath : rootlibexecdir,
2830 install : true,
2831 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002832
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002833public_programs += executable(
2834 'systemd-mount',
2835 'src/mount/mount-tool.c',
2836 include_directories : includes,
2837 link_with : [libshared],
2838 dependencies: [libmount],
2839 install_rpath : rootlibexecdir,
2840 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002841
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002842meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002843 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002844
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002845public_programs += executable(
2846 'systemd-run',
2847 'src/run/run.c',
2848 include_directories : includes,
2849 link_with : [libshared],
2850 install_rpath : rootlibexecdir,
2851 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002852
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002853public_programs += executable(
2854 'systemd-stdio-bridge',
2855 'src/stdio-bridge/stdio-bridge.c',
2856 include_directories : includes,
2857 link_with : [libshared],
2858 dependencies : [versiondep],
2859 install_rpath : rootlibexecdir,
2860 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002861
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002862public_programs += executable(
2863 'busctl',
2864 'src/busctl/busctl.c',
2865 'src/busctl/busctl-introspect.c',
2866 'src/busctl/busctl-introspect.h',
2867 include_directories : includes,
2868 link_with : [libshared],
2869 install_rpath : rootlibexecdir,
2870 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002871
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002872if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002873 public_programs += executable(
2874 'systemd-sysusers',
2875 'src/sysusers/sysusers.c',
2876 include_directories : includes,
2877 link_with : [libshared],
2878 install_rpath : rootlibexecdir,
2879 install : true,
2880 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002881endif
2882
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002883if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002884 exe = executable(
2885 'systemd-tmpfiles',
2886 'src/tmpfiles/tmpfiles.c',
2887 include_directories : includes,
2888 link_with : [libshared],
2889 dependencies : [libacl],
2890 install_rpath : rootlibexecdir,
2891 install : true,
2892 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002893 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002894
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002895 if want_tests != 'false'
2896 test('test-systemd-tmpfiles',
2897 test_systemd_tmpfiles_py,
2898 # https://github.com/mesonbuild/meson/issues/2681
2899 args : exe.full_path())
2900 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002901endif
2902
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002903if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002904 public_programs += executable(
2905 'systemd-hwdb',
2906 'src/hwdb/hwdb.c',
2907 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2908 include_directories : includes,
2909 link_with : [libudev_static],
2910 install_rpath : udev_rpath,
2911 install : true,
2912 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002913endif
2914
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002915if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002916 executable(
2917 'systemd-quotacheck',
2918 'src/quotacheck/quotacheck.c',
2919 include_directories : includes,
2920 link_with : [libshared],
2921 install_rpath : rootlibexecdir,
2922 install : true,
2923 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924endif
2925
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002926public_programs += executable(
2927 'systemd-socket-proxyd',
2928 'src/socket-proxy/socket-proxyd.c',
2929 include_directories : includes,
2930 link_with : [libshared],
2931 dependencies : [threads],
2932 install_rpath : rootlibexecdir,
2933 install : true,
2934 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002936public_programs += executable(
2937 'systemd-udevd',
2938 systemd_udevd_sources,
2939 include_directories : includes,
2940 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2941 link_with : [libudev_core,
2942 libsystemd_network,
2943 libudev_static],
2944 dependencies : [versiondep,
2945 threads,
2946 libkmod,
2947 libidn,
2948 libacl,
2949 libblkid],
2950 install_rpath : udev_rpath,
2951 install : true,
2952 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002953
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002954public_programs += executable(
2955 'udevadm',
2956 udevadm_sources,
2957 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2958 include_directories : includes,
2959 link_with : [libudev_core,
2960 libsystemd_network,
2961 libudev_static],
2962 dependencies : [versiondep,
2963 threads,
2964 libkmod,
2965 libidn,
2966 libacl,
2967 libblkid],
2968 install_rpath : udev_rpath,
2969 install : true,
2970 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002971
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002972executable(
2973 'systemd-shutdown',
2974 systemd_shutdown_sources,
2975 include_directories : includes,
2976 link_with : [libcore_shared,
2977 libshared],
2978 dependencies : [libmount],
2979 install_rpath : rootlibexecdir,
2980 install : true,
2981 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002982
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002983executable(
2984 'systemd-update-done',
2985 'src/update-done/update-done.c',
2986 include_directories : includes,
2987 link_with : [libshared],
2988 install_rpath : rootlibexecdir,
2989 install : true,
2990 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002991
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002992executable(
2993 'systemd-update-utmp',
2994 'src/update-utmp/update-utmp.c',
2995 include_directories : includes,
2996 link_with : [libshared],
2997 dependencies : [libaudit],
2998 install_rpath : rootlibexecdir,
2999 install : true,
3000 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003001
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003002if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003003 executable(
3004 'systemd-modules-load',
3005 'src/modules-load/modules-load.c',
3006 include_directories : includes,
3007 link_with : [libshared],
3008 dependencies : [libkmod],
3009 install_rpath : rootlibexecdir,
3010 install : true,
3011 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003012
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003013 meson.add_install_script('sh', '-c',
3014 mkdir_p.format(modulesloaddir))
3015 meson.add_install_script('sh', '-c',
3016 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003017endif
3018
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003019public_programs += executable(
3020 'systemd-nspawn',
3021 systemd_nspawn_sources,
3022 include_directories : includes,
3023 link_with : [libcore_shared,
3024 libnspawn_core,
3025 libshared],
3026 dependencies : [libblkid,
3027 libseccomp],
3028 install_rpath : rootlibexecdir,
3029 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003030
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003031if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003032 executable(
3033 'systemd-networkd',
3034 systemd_networkd_sources,
3035 include_directories : network_include_dir,
3036 link_with : [libnetworkd_core,
3037 libsystemd_network,
3038 libudev_static,
3039 networkd_link_with],
3040 dependencies : [threads],
3041 install_rpath : rootlibexecdir,
3042 install : true,
3043 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003044
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003045 executable(
3046 'systemd-networkd-wait-online',
3047 systemd_networkd_wait_online_sources,
3048 include_directories : includes,
3049 link_with : [libnetworkd_core,
3050 networkd_link_with],
3051 install_rpath : rootlibexecdir,
3052 install : true,
3053 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003054
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003055 public_programs += executable(
3056 'networkctl',
3057 networkctl_sources,
3058 include_directories : includes,
3059 link_with : [libsystemd_network,
3060 networkd_link_with],
3061 install_rpath : rootlibexecdir,
3062 install : true,
3063 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003064
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003065 exe = executable(
3066 'systemd-network-generator',
3067 network_generator_sources,
3068 include_directories : includes,
3069 link_with : [networkd_link_with],
3070 install_rpath : rootlibexecdir,
3071 install : true,
3072 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003073
3074 if want_tests != 'false'
3075 test('test-network-generator-conversion',
3076 test_network_generator_conversion_sh,
3077 # https://github.com/mesonbuild/meson/issues/2681
3078 args : exe.full_path())
3079 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003080endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003081
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003082executable(
3083 'systemd-sulogin-shell',
3084 ['src/sulogin-shell/sulogin-shell.c'],
3085 include_directories : includes,
3086 link_with : [libshared],
3087 install_rpath : rootlibexecdir,
3088 install : true,
3089 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003090
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003091############################################################
3092
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003093custom_target(
3094 'systemd-runtest.env',
3095 output : 'systemd-runtest.env',
3096 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003097 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003098 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003099 '} >@OUTPUT@'],
3100 build_by_default : true)
3101
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003102foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003103 sources = tuple[0]
3104 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3105 dependencies = tuple[2]
3106 condition = tuple.length() >= 4 ? tuple[3] : ''
3107 type = tuple.length() >= 5 ? tuple[4] : ''
3108 defs = tuple.length() >= 6 ? tuple[5] : []
3109 incs = tuple.length() >= 7 ? tuple[6] : includes
3110 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003111
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003112 name = sources[0].split('/')[-1].split('.')[0]
3113 if type.startswith('timeout=')
3114 timeout = type.split('=')[1].to_int()
3115 type = ''
3116 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003117
3118 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003119 exe = executable(
3120 name,
3121 sources,
3122 include_directories : incs,
3123 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003124 dependencies : [versiondep,
3125 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003126 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003127 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003128 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003129 install : install_tests,
3130 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003131
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003132 if type == 'manual'
3133 message('@0@ is a manual test'.format(name))
3134 elif type == 'unsafe' and want_tests != 'unsafe'
3135 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003136 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003137 test(name, exe,
3138 env : test_env,
3139 timeout : timeout)
3140 endif
3141 else
3142 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3143 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003144endforeach
3145
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003146exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003147 'test-libsystemd-sym',
3148 test_libsystemd_sym_c,
3149 include_directories : includes,
3150 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003151 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003152 install : install_tests,
3153 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003154if want_tests != 'false'
3155 test('test-libsystemd-sym', exe)
3156endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003157
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003158exe = executable(
3159 'test-libsystemd-static-sym',
3160 test_libsystemd_sym_c,
3161 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003162 link_with : [install_libsystemd_static],
3163 dependencies : [threads], # threads is already included in dependencies on the library,
3164 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003165 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003166 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003167 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003168if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003169 test('test-libsystemd-static-sym', exe)
3170endif
3171
3172exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003173 'test-libudev-sym',
3174 test_libudev_sym_c,
3175 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003176 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003177 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003178 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003179 install : install_tests,
3180 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003181if want_tests != 'false'
3182 test('test-libudev-sym', exe)
3183endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003184
3185exe = executable(
3186 'test-libudev-static-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-Szmek0632b4c2018-04-23 13:49:27 +02003190 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003191 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003192 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003193 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003194if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003195 test('test-libudev-static-sym', exe)
3196endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003197
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003198############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003199
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003200fuzzer_exes = []
3201
Michael Olbrich59967402018-11-11 11:27:35 +01003202if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003203 foreach tuple : fuzzers
3204 sources = tuple[0]
3205 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3206 dependencies = tuple[2]
3207 defs = tuple.length() >= 4 ? tuple[3] : []
3208 incs = tuple.length() >= 5 ? tuple[4] : includes
3209 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003210
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003211 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003212 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003213 elif want_libfuzzer
3214 if fuzzing_engine.found()
3215 dependencies += fuzzing_engine
3216 else
3217 link_args += ['-fsanitize=fuzzer']
3218 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003219 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003220 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003221 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003222
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003223 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003224
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003225 fuzzer_exes += executable(
3226 name,
3227 sources,
3228 include_directories : [incs, include_directories('src/fuzz')],
3229 link_with : link_with,
3230 dependencies : dependencies,
3231 c_args : defs,
3232 link_args: link_args,
3233 install : false)
3234 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003235endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003236
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003237run_target(
3238 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003239 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003240 command : ['true'])
3241
3242############################################################
3243
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003244make_directive_index_py = find_program('tools/make-directive-index.py')
3245make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003246xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003247hwdb_update_sh = find_program('tools/hwdb-update.sh')
3248autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003249
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003250subdir('sysctl.d')
3251subdir('sysusers.d')
3252subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003253subdir('hwdb.d')
3254subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003255subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003256subdir('network')
3257subdir('man')
3258subdir('shell-completion/bash')
3259subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003260subdir('docs/sysvinit')
3261subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003262
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003263install_subdir('factory/etc',
3264 install_dir : factorydir)
3265
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003266install_data('xorg/50-systemd-user.sh',
3267 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003268install_data('modprobe.d/systemd.conf',
3269 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003270install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003271 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003272 'NEWS',
3273 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303274 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003275 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003276 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003277 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003278 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003279 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003280 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003281 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3282 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003283
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003284meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3285meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3286
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003287############################################################
3288
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003289check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003290
3291foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003292 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003293 if want_tests != 'false'
3294 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003295 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003296 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003297 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003298endforeach
3299
3300############################################################
3301
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003302check_directives_sh = find_program('tools/check-directives.sh')
3303
3304if want_tests != 'false'
3305 test('check-directives',
3306 check_directives_sh,
3307 args : project_source_root)
3308endif
3309
3310############################################################
3311
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003312# Enable tests for all supported sanitizers
3313foreach tuple : sanitizers
3314 sanitizer = tuple[0]
3315 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003316
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003317 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003318 prev = ''
3319 foreach p : fuzz_regression_tests
3320 b = p.split('/')[-2]
3321 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003322
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003323 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003324
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003325 if name != prev
3326 if want_tests == 'false'
3327 message('Not compiling @0@ because tests is set to false'.format(name))
3328 elif slow_tests
3329 exe = custom_target(
3330 name,
3331 output : name,
3332 depends : build,
3333 command : [env, 'ln', '-fs',
3334 join_paths(build.full_path(), b),
3335 '@OUTPUT@'],
3336 build_by_default : true)
3337 else
3338 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3339 endif
3340 endif
3341 prev = name
3342
3343 if want_tests != 'false' and slow_tests
3344 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3345 env,
3346 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003347 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003348 endif
3349 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003350 endif
3351endforeach
3352
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003353
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003354############################################################
3355
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003356if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003357 all_files = run_command(
3358 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003359 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003360 'ls-files',
3361 ':/*.[ch]'])
3362 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003363
userwithuide85a6902017-08-09 13:41:44 +00003364 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003365 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003366 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003367 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003368 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003369 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003370 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003371endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003372
3373if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003374 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003375 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003376 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003377 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003378endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003379
3380if git.found()
3381 git_head = run_command(
3382 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003383 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003384 'rev-parse', 'HEAD']).stdout().strip()
3385 git_head_short = run_command(
3386 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003387 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003388 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3389
3390 run_target(
3391 'git-snapshot',
3392 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003393 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003394 git_head_short),
3395 '--prefix', 'systemd-@0@/'.format(git_head),
3396 'HEAD'])
3397endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003398
3399############################################################
3400
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003401check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003402run_target(
3403 'check-api-docs',
3404 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003405 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003406
3407############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003408watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003409
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003410status = [
3411 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3412
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003413 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003414 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003415 'prefix directory: @0@'.format(prefixdir),
3416 'rootprefix directory: @0@'.format(rootprefixdir),
3417 'sysconf directory: @0@'.format(sysconfdir),
3418 'include directory: @0@'.format(includedir),
3419 'lib directory: @0@'.format(libdir),
3420 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003421 'SysV init scripts: @0@'.format(sysvinit_path),
3422 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003423 'PAM modules directory: @0@'.format(pamlibdir),
3424 'PAM configuration directory: @0@'.format(pamconfdir),
3425 'RPM macros directory: @0@'.format(rpmmacrosdir),
3426 'modprobe.d directory: @0@'.format(modprobedir),
3427 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3428 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3429 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3430 'bash completions directory: @0@'.format(bashcompletiondir),
3431 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003432 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003433 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3434 get_option('debug-tty')),
3435 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003436 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437 'maximum system UID: @0@'.format(system_uid_max),
3438 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003439 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3440 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3441 'minimum container UID base: @0@'.format(container_uid_base_min),
3442 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003443 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003444 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003445 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003446 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003447 'nobody user name: @0@'.format(nobody_user),
3448 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003449 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003450 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003451
3452 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003453 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003454 'default mDNS mode: @0@'.format(default_mdns),
3455 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003456 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003457 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003458 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003459 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003460 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003461 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003462
3463alt_dns_servers = '\n '.join(dns_servers.split(' '))
3464alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3465status += [
3466 'default DNS servers: @0@'.format(alt_dns_servers),
3467 'default NTP servers: @0@'.format(alt_ntp_servers)]
3468
3469alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3470 '@@0@'.format(time_epoch)).stdout().strip()
3471status += [
3472 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3473
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003474status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003475 'static libsystemd: @0@'.format(static_libsystemd),
3476 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003477
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003478# TODO:
3479# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3480# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3481# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003483if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003484 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003485
3486 if have_gnu_efi
3487 status += [
3488 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003489 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003490 'EFI lds: @0@'.format(efi_lds),
3491 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003492 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003493 endif
3494endif
3495
3496found = []
3497missing = []
3498
3499foreach tuple : [
3500 ['libcryptsetup'],
3501 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003502 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003503 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003504 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003505 ['AUDIT'],
3506 ['IMA'],
3507 ['AppArmor'],
3508 ['SELinux'],
3509 ['SECCOMP'],
3510 ['SMACK'],
3511 ['zlib'],
3512 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003513 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003514 ['lz4'],
3515 ['bzip2'],
3516 ['ACL'],
3517 ['gcrypt'],
3518 ['qrencode'],
3519 ['microhttpd'],
3520 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003521 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003522 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003523 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003524 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003525 ['libidn'],
3526 ['libiptc'],
3527 ['elfutils'],
3528 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003529 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003530 ['vconsole'],
3531 ['quotacheck'],
3532 ['tmpfiles'],
3533 ['environment.d'],
3534 ['sysusers'],
3535 ['firstboot'],
3536 ['randomseed'],
3537 ['backlight'],
3538 ['rfkill'],
3539 ['logind'],
3540 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003541 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003542 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003543 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003544 ['importd'],
3545 ['hostnamed'],
3546 ['timedated'],
3547 ['timesyncd'],
3548 ['localed'],
3549 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003550 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003551 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3552 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003553 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003554 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003555 ['polkit'],
3556 ['legacy pkla', install_polkit_pkla],
3557 ['efi'],
3558 ['gnu-efi', have_gnu_efi],
3559 ['kmod'],
3560 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003561 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003562 ['blkid'],
3563 ['dbus'],
3564 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003565 ['nss-myhostname'],
3566 ['nss-mymachines'],
3567 ['nss-resolve'],
3568 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003569 ['hwdb'],
3570 ['tpm'],
3571 ['man pages', want_man],
3572 ['html pages', want_html],
3573 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003574 ['SysV compat'],
3575 ['utmp'],
3576 ['ldconfig'],
3577 ['hibernate'],
3578 ['adm group', get_option('adm-group')],
3579 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003580 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003581 ['debug hashmap'],
3582 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003583 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003584 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003585 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003586 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003587 ['link-udev-shared', get_option('link-udev-shared')],
3588 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003589 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003590 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003591 ['kernel-install', get_option('kernel-install')],
3592 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003593]
3594
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003595 if tuple.length() >= 2
3596 cond = tuple[1]
3597 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003598 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3599 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003600 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003601 endif
3602 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003603 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003604 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003605 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003606 endif
3607endforeach
3608
3609status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003610 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003611 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003612 '',
3613 'disabled features: @0@'.format(', '.join(missing)),
3614 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003615message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003616
3617if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003618 warning('\n' +
3619 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3620 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3621 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003622endif