blob: 121148f8dd367b96178a6e185c0d9cd3e565b1b6 [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
Norbert Langecdf7ad32020-04-08 23:59:13 +020093if get_option('hibernate') and not get_option('initrd')
94 error('hibernate depends on initrd')
95endif
96
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020097conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
98conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010099conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +0200100
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100101# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400102# encountered, so this should canonicalize various paths when they are
103# absolute or relative.
104prefixdir = get_option('prefix')
105if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400106 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107endif
108bindir = join_paths(prefixdir, get_option('bindir'))
109libdir = join_paths(prefixdir, get_option('libdir'))
110sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
111includedir = join_paths(prefixdir, get_option('includedir'))
112datadir = join_paths(prefixdir, get_option('datadir'))
113localstatedir = join_paths('/', get_option('localstatedir'))
114
115rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100116rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400117rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
118
119rootlibdir = get_option('rootlibdir')
120if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400121 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400122endif
123
124# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200125pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
126pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400127polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
128polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
129polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400130xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900131rpmmacrosdir = get_option('rpmmacrosdir')
132if rpmmacrosdir != 'no'
133 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
134endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200135modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400136
137# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400138pkgdatadir = join_paths(datadir, 'systemd')
139environmentdir = join_paths(prefixdir, 'lib/environment.d')
140pkgsysconfdir = join_paths(sysconfdir, 'systemd')
141userunitdir = join_paths(prefixdir, 'lib/systemd/user')
142userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
143tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
144sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
145sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
146binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
147modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
148networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
149pkgincludedir = join_paths(includedir, 'systemd')
150systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
151usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
152systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
153userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
154systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
155systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
156systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
157systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
158udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400159udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
160udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
161catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
162kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
163factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400164bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
165testsdir = join_paths(prefixdir, 'lib/systemd/tests')
166systemdstatedir = join_paths(localstatedir, 'lib/systemd')
167catalogstatedir = join_paths(systemdstatedir, 'catalog')
168randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200169profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200170ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171
tblume75aaade2018-02-01 22:46:15 +0100172docdir = get_option('docdir')
173if docdir == ''
174 docdir = join_paths(datadir, 'doc/systemd')
175endif
176
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177dbuspolicydir = get_option('dbuspolicydir')
178if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182dbussessionservicedir = get_option('dbussessionservicedir')
183if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
187dbussystemservicedir = get_option('dbussystemservicedir')
188if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400189 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190endif
191
192pamlibdir = get_option('pamlibdir')
193if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400194 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195endif
196
197pamconfdir = get_option('pamconfdir')
198if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400199 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200endif
201
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100202memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200203status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100204
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400205conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100206conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400207conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
208conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
209conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400210conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100211
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100212conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100213
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100214conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
215conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400216conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
218conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
219conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
220conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100221conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100222conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400224conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
225conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
226conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100227conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400228conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400229conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
230conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100231conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
232conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
233conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
234conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
236conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400237conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
238conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700239conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700240conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400242conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243conf.set_quoted('LIBDIR', libdir)
244conf.set_quoted('ROOTLIBDIR', rootlibdir)
245conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
246conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400247conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
248conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200249conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400250conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
251conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
252conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
253conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200254conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200255conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200256conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100257conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200258conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400259
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100261substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100262substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400263substs.set('exec_prefix', prefixdir)
264substs.set('libdir', libdir)
265substs.set('rootlibdir', rootlibdir)
266substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100267substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400268substs.set('bindir', bindir)
269substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400270substs.set('rootlibexecdir', rootlibexecdir)
271substs.set('systemunitdir', systemunitdir)
272substs.set('userunitdir', userunitdir)
273substs.set('systempresetdir', systempresetdir)
274substs.set('userpresetdir', userpresetdir)
275substs.set('udevhwdbdir', udevhwdbdir)
276substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400277substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200278substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400279substs.set('catalogdir', catalogdir)
280substs.set('tmpfilesdir', tmpfilesdir)
281substs.set('sysusersdir', sysusersdir)
282substs.set('sysctldir', sysctldir)
283substs.set('binfmtdir', binfmtdir)
284substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200285substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400286substs.set('systemgeneratordir', systemgeneratordir)
287substs.set('usergeneratordir', usergeneratordir)
288substs.set('systemenvgeneratordir', systemenvgeneratordir)
289substs.set('userenvgeneratordir', userenvgeneratordir)
290substs.set('systemshutdowndir', systemshutdowndir)
291substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400292substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400293substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400294substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
295substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
296substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100297substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200298substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200299substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +0200300substs.set('BUILD_ROOT', project_build_root)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400301
302#####################################################################
303
304cc = meson.get_compiler('c')
305pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +0200306check_compilation_sh = find_program('tools/check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100307meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400308
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200309want_tests = get_option('tests')
310slow_tests = want_tests != 'false' and get_option('slow-tests')
311install_tests = get_option('install-tests')
312
James Hilliard46e63a22018-12-27 09:16:20 +0800313if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200314 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100315 cxx = meson.get_compiler('cpp')
316 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200317else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200318 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400319endif
320
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500321if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200322 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
323 if fuzzing_engine.found()
324 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
325 elif cc.has_argument('-fsanitize=fuzzer-no-link')
326 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
327 else
328 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
329 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200330elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500331 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
332endif
333
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100334# Those generate many false positives, and we do not want to change the code to
335# avoid them.
336basic_disabled_warnings = [
337 '-Wno-unused-parameter',
338 '-Wno-missing-field-initializers',
339 '-Wno-unused-result',
340 '-Wno-format-signedness',
341]
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100342
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900343possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 '-Werror=undef',
345 '-Wlogical-op',
346 '-Wmissing-include-dirs',
347 '-Wold-style-definition',
348 '-Wpointer-arith',
349 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900350 '-Wfloat-equal',
351 '-Wsuggest-attribute=noreturn',
352 '-Werror=missing-prototypes',
353 '-Werror=implicit-function-declaration',
354 '-Werror=missing-declarations',
355 '-Werror=return-type',
356 '-Werror=incompatible-pointer-types',
357 '-Werror=format=2',
358 '-Wstrict-prototypes',
359 '-Wredundant-decls',
360 '-Wmissing-noreturn',
361 '-Wimplicit-fallthrough=5',
362 '-Wshadow',
363 '-Wendif-labels',
364 '-Wstrict-aliasing=2',
365 '-Wwrite-strings',
366 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200367 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200368 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900369 '-Wdate-time',
370 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700371
372 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100373 '-Wno-error=#warnings', # clang
374 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700375
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700376 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
377 # optimizations enabled, producing essentially false positives.
378 '-Wno-maybe-uninitialized',
379
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900380 '-ffast-math',
381 '-fno-common',
382 '-fdiagnostics-show-option',
383 '-fno-strict-aliasing',
384 '-fvisibility=hidden',
385 '-fstack-protector',
386 '-fstack-protector-strong',
387 '--param=ssp-buffer-size=4',
388]
389
390# --as-needed and --no-undefined are provided by meson by default,
391# run mesonconf to see what is enabled
392possible_link_flags = [
393 '-Wl,-z,relro',
394 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200395 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900396]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400397
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900398if cc.get_id() == 'clang'
399 possible_cc_flags += [
400 '-Wno-typedef-redefinition',
401 '-Wno-gnu-variable-sized-type-not-at-end',
402 ]
403endif
404
405if get_option('buildtype') != 'debug'
406 possible_cc_flags += [
407 '-ffunction-sections',
408 '-fdata-sections',
409 ]
410
411 possible_link_flags += '-Wl,--gc-sections'
412endif
413
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100414add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900415add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900416add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900417
Zbigniew Jędrzejewski-Szmek94c0c5b2020-05-09 09:09:11 +0200418have = cc.has_argument('-Wzero-length-bounds')
419conf.set10('HAVE_ZERO_LENGTH_BOUNDS', have)
420
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800421if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422 #include <time.h>
423 #include <inttypes.h>
424 typedef uint64_t usec_t;
425 usec_t now(clockid_t clock);
426 int main(void) {
427 struct timespec now;
428 return 0;
429 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100430''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400431 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432endif
433
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100434if cxx_cmd != ''
435 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
436endif
437
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200438cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400439
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200440has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
441
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400442#####################################################################
443# compilation result tests
444
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400445conf.set('_GNU_SOURCE', true)
446conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200447conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
450conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
451conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
452conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
453
454decl_headers = '''
455#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100456#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458
459foreach decl : ['char16_t',
460 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100461 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400463
464 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200465 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
466
467 if decl == 'struct statx'
468 if have
469 want_linux_stat_h = false
470 else
471 have = cc.sizeof(decl,
472 prefix : decl_headers + '#include <linux/stat.h>',
473 args : '-D_GNU_SOURCE') > 0
474 want_linux_stat_h = have
475 endif
476 endif
477
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200478 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200481conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700482
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200484 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485endforeach
486
487foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100488 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100489 ['gettid', '''#include <sys/types.h>
490 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100491 ['pivot_root', '''#include <stdlib.h>
492 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494 #include <sys/stat.h>
495 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100497 ['renameat2', '''#include <stdio.h>
498 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499 ['kcmp', '''#include <linux/kcmp.h>'''],
500 ['keyctl', '''#include <sys/types.h>
501 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200504 ['bpf', '''#include <sys/syscall.h>
505 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100506 ['statx', '''#include <sys/types.h>
507 #include <sys/stat.h>
508 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100509 ['explicit_bzero' , '''#include <string.h>'''],
510 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100511 ['set_mempolicy', '''#include <stdlib.h>
512 #include <unistd.h>'''],
513 ['get_mempolicy', '''#include <stdlib.h>
514 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200515 ['pidfd_send_signal', '''#include <stdlib.h>
516 #include <unistd.h>
517 #include <signal.h>
518 #include <sys/wait.h>'''],
519 ['pidfd_open', '''#include <stdlib.h>
520 #include <unistd.h>
521 #include <signal.h>
522 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100523 ['rt_sigqueueinfo', '''#include <stdlib.h>
524 #include <unistd.h>
525 #include <signal.h>
526 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400527]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528
Lennart Poettering85db59b2017-12-25 12:01:14 +0100529 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200530 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Lennart Poettering85db59b2017-12-25 12:01:14 +0100533if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200534 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200535 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400536else
537 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200538 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200539 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400540endif
541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542#####################################################################
543
Davide Cavalca1485aac2019-02-27 11:19:07 -0500544vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
545 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100546 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100547 meson.project_version()]
548
Louis Taylord1084aa2019-01-21 21:45:36 +0000549version_h = vcs_tag(
550 input : 'src/version/version.h.in',
551 output : 'version.h',
552 command: vcs_tagger)
553
554versiondep = declare_dependency(sources: version_h)
555
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400556sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400558m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400560git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100561env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100562perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563
Davide Cavalca1485aac2019-02-27 11:19:07 -0500564meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400565mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400566test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
567splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400568
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
570# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500571progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573 ['kmod', '/usr/bin/kmod' ],
574 ['kexec', '/usr/sbin/kexec' ],
575 ['sulogin', '/usr/sbin/sulogin' ],
576 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
577 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
578 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
579 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200580 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400581 ]
582foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400583 path = get_option(prog[0] + '-path')
584 if path != ''
585 message('Using @1@ for @0@'.format(prog[0], path))
586 else
587 exe = find_program(prog[0],
588 '/usr/sbin/' + prog[0],
589 '/sbin/' + prog[0],
590 required: false)
591 path = exe.found() ? exe.path() : prog[1]
592 endif
593 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
594 conf.set_quoted(name, path)
595 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596endforeach
597
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500598conf.set_quoted('TELINIT', get_option('telinit-path'))
599
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400600if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100601 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400602endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603
604############################################################
605
606gperf = find_program('gperf')
607
608gperf_test_format = '''
609#include <string.h>
610const char * in_word_set(const char *, @0@);
611@1@
612'''
613gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
614gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
615gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
616if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
620 if cc.compiles(gperf_test)
621 gperf_len_type = 'unsigned'
622 else
623 error('unable to determine gperf len type')
624 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endif
626message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400627conf.set('GPERF_LEN_TYPE', gperf_len_type,
628 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629
630############################################################
631
632if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100635foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636 'linux/memfd.h',
637 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200638 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639 'valgrind/memcheck.h',
640 'valgrind/valgrind.h',
641 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400642
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200643 conf.set10('HAVE_' + header.underscorify().to_upper(),
644 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645endforeach
646
647############################################################
648
Zbigniew Jędrzejewski-Szmekeef4b802020-05-07 17:30:02 +0200649fallback_hostname = get_option('fallback-hostname')
650if fallback_hostname == '' or fallback_hostname[0] == '.' or fallback_hostname[0] == '-'
651 error('Invalid fallback-hostname configuration')
652 # A more extensive test is done in test-hostname-util. Let's catch
653 # the most obvious errors here so we don't fail with an assert later.
654endif
655conf.set_quoted('FALLBACK_HOSTNAME', fallback_hostname)
656
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400657conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
658gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660default_hierarchy = get_option('default-hierarchy')
661conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
662 description : 'default cgroup hierarchy as string')
663if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669endif
670
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100671default_net_naming_scheme = get_option('default-net-naming-scheme')
672conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
673
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900675if time_epoch == -1
Dimitri John Ledkov6dbf3522020-05-15 19:16:05 +0100676 source_date_epoch = run_command('sh', ['-c', 'echo "$SOURCE_DATE_EPOCH"']).stdout().strip()
677 if source_date_epoch != ''
678 time_epoch = source_date_epoch.to_int()
679 else
680 NEWS = files('NEWS')
681 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
682 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400684conf.set('TIME_EPOCH', time_epoch)
685
686system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900687if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400688 system_uid_max = run_command(
689 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800690 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
691 '/etc/login.defs').stdout().strip()
692 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900693 system_uid_max = 999
694 else
695 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800696 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698conf.set('SYSTEM_UID_MAX', system_uid_max)
699substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900702if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400703 system_gid_max = run_command(
704 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800705 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
706 '/etc/login.defs').stdout().strip()
707 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900708 system_gid_max = 999
709 else
710 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800711 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400712endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400713conf.set('SYSTEM_GID_MAX', system_gid_max)
714substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400715
Yu Watanabeac093402018-05-10 16:04:16 +0900716dynamic_uid_min = get_option('dynamic-uid-min')
717dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100718conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
719conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
720substs.set('dynamicuidmin', dynamic_uid_min)
721substs.set('dynamicuidmax', dynamic_uid_max)
722
Yu Watanabeac093402018-05-10 16:04:16 +0900723container_uid_base_min = get_option('container-uid-base-min')
724container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100725conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
726conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
727substs.set('containeruidbasemin', container_uid_base_min)
728substs.set('containeruidbasemax', container_uid_base_max)
729
Lennart Poetteringafde4572017-12-05 11:00:24 +0100730nobody_user = get_option('nobody-user')
731nobody_group = get_option('nobody-group')
732
Chen Qi2484bff2018-07-23 14:53:09 +0800733if not meson.is_cross_build()
734 getent_result = run_command('getent', 'passwd', '65534')
735 if getent_result.returncode() == 0
736 name = getent_result.stdout().split(':')[0]
737 if name != nobody_user
738 warning('\n' +
739 '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) +
740 'Your build will result in an user table setup that is incompatible with the local system.')
741 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100742 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800743 id_result = run_command('id', '-u', nobody_user)
744 if id_result.returncode() == 0
745 id = id_result.stdout().to_int()
746 if id != 65534
747 warning('\n' +
748 '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) +
749 'Your build will result in an user table setup that is incompatible with the local system.')
750 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100751 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100752
Chen Qi2484bff2018-07-23 14:53:09 +0800753 getent_result = run_command('getent', 'group', '65534')
754 if getent_result.returncode() == 0
755 name = getent_result.stdout().split(':')[0]
756 if name != nobody_group
757 warning('\n' +
758 '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) +
759 'Your build will result in an group table setup that is incompatible with the local system.')
760 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100761 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800762 id_result = run_command('id', '-g', nobody_group)
763 if id_result.returncode() == 0
764 id = id_result.stdout().to_int()
765 if id != 65534
766 warning('\n' +
767 '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) +
768 'Your build will result in an group table setup that is incompatible with the local system.')
769 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770 endif
771endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900772if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900773 warning('\n' +
774 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
775 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900776endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100777
778conf.set_quoted('NOBODY_USER_NAME', nobody_user)
779conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900780substs.set('NOBODY_USER_NAME', nobody_user)
781substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100782
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783tty_gid = get_option('tty-gid')
784conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400785substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400786
Ikey Doherty84786b82017-12-03 12:28:23 +0000787# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900788users_gid = get_option('users-gid')
789substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000790
Yu Watanabe348b4432018-05-07 18:17:35 +0900791conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
792conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
Michael Bieblace5e312018-07-13 23:36:13 +0200794dev_kvm_mode = get_option('dev-kvm-mode')
795substs.set('DEV_KVM_MODE', dev_kvm_mode)
796conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100797group_render_mode = get_option('group-render-mode')
798substs.set('GROUP_RENDER_MODE', group_render_mode)
799conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400801kill_user_processes = get_option('default-kill-user-processes')
802conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100803conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400804substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400806dns_servers = get_option('dns-servers')
807conf.set_quoted('DNS_SERVERS', dns_servers)
808substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400810ntp_servers = get_option('ntp-servers')
811conf.set_quoted('NTP_SERVERS', ntp_servers)
812substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400813
Dave Reisner8ca9e922018-12-28 07:38:36 -0500814default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900815if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800816 if not meson.is_cross_build()
817 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
818 default_locale = run_command(choose_default_locale_sh).stdout().strip()
819 else
820 default_locale = 'C.UTF-8'
821 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900822endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500823conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
824
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
826
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200827service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700828watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
829substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200830
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400831substs.set('SUSHELL', get_option('debug-shell'))
832substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200833conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400834
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200835enable_debug_hashmap = false
836enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900837enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200838foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900839 if name == 'hashmap'
840 enable_debug_hashmap = true
841 elif name == 'mmap-cache'
842 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900843 elif name == 'siphash'
844 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900845 else
846 message('unknown debug option "@0@", ignoring'.format(name))
847 endif
848endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
850conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900851conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400852
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200853conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200854conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200855
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100856default_user_path = get_option('user-path')
857if default_user_path != ''
858 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100859 default_user_path_display = default_user_path
860else
861 # meson 0.49 fails when ?: is used in .format()
862 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100863endif
864
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100865
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866#####################################################################
867
868threads = dependency('threads')
869librt = cc.find_library('rt')
870libm = cc.find_library('m')
871libdl = cc.find_library('dl')
872libcrypt = cc.find_library('crypt')
873
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400874libcap = dependency('libcap', required : false)
875if not libcap.found()
876 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
877 libcap = cc.find_library('cap')
878endif
879
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100881 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100883want_libfdisk = get_option('fdisk')
884if want_libfdisk != 'false' and not skip_deps
885 libfdisk = dependency('fdisk',
886 required : want_libfdisk == 'true')
887 have = libfdisk.found()
888else
889 have = false
890 libfdisk = []
891endif
892conf.set10('HAVE_LIBFDISK', have)
893
Lennart Poettering70a5db52019-07-04 18:35:39 +0200894want_pwquality = get_option('pwquality')
895if want_pwquality != 'false' and not skip_deps
896 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
897 have = libpwquality.found()
898else
899 have = false
900 libpwquality = []
901endif
902conf.set10('HAVE_PWQUALITY', have)
903
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000905if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400907 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
916want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000917if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 libselinux = dependency('libselinux',
919 version : '>= 2.1.9',
920 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927
928want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000929if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libapparmor = dependency('libapparmor',
931 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939smack_run_label = get_option('smack-run-label')
940if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400941 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942endif
943
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400944want_polkit = get_option('polkit')
945install_polkit = false
946install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000947if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400949
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libpolkit = dependency('polkit-gobject-1',
951 required : false)
952 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
953 message('Old polkit detected, will install pkla files')
954 install_polkit_pkla = true
955 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400958
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400959want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000960if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400961 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400965 libacl = []
966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400968
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000970if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000980if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000990if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libkmod = dependency('libkmod',
992 version : '>= 15',
993 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
1001want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001002if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libpam = cc.find_library('pam', required : want_pam == 'true')
1004 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libpam = []
1009 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001014if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libmicrohttpd = dependency('libmicrohttpd',
1016 version : '>= 0.9.33',
1017 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
1025want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001026if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001028 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001031
1032 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1033 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001041if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libcurl = dependency('libcurl',
1043 version : '>= 7.32.0',
1044 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001053want_libidn2 = get_option('libidn2')
1054if want_libidn == 'true' and want_libidn2 == 'true'
1055 error('libidn and libidn2 cannot be requested simultaneously')
1056endif
1057
Yu Watanabe1b931392019-06-29 03:13:30 +09001058if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001059 libidn = dependency('libidn2',
1060 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libidn.found()
1062else
1063 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001064 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001067if not have and want_libidn != 'false' and not skip_deps
1068 # libidn is used for both libidn and libidn2 objects
1069 libidn = dependency('libidn',
1070 required : want_libidn == 'true')
1071 have = libidn.found()
1072else
1073 have = false
1074endif
1075conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076
1077want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001078if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libiptc = dependency('libiptc',
1080 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087
1088want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001089if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libqrencode = dependency('libqrencode',
1091 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001099want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001100if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1102 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
1106endif
1107if not have
1108 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001109 libgcrypt = []
1110 libgpg_error = []
1111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001115if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libgnutls = dependency('gnutls',
1117 version : '>= 3.1.4',
1118 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001126want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001127if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001128 libopenssl = dependency('openssl',
1129 version : '>= 1.1.0',
1130 required : want_openssl == 'true')
1131 have = libopenssl.found()
1132else
1133 have = false
1134 libopenssl = []
1135endif
1136conf.set10('HAVE_OPENSSL', have)
1137
Lennart Poettering839fddb2019-11-05 11:49:27 +01001138want_p11kit = get_option('p11kit')
1139if want_p11kit != 'false' and not skip_deps
1140 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001141 version : '>= 0.23.3',
1142 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001143 have = libp11kit.found()
1144else
1145 have = false
1146 libp11kit = []
1147endif
1148conf.set10('HAVE_P11KIT', have)
1149
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001151if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libdw = dependency('libdw',
1153 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160
1161want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001162if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libz = dependency('zlib',
1164 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171
1172want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001173if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001174 libbzip2 = cc.find_library('bz2',
1175 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182
1183want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001184if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 libxz = dependency('liblzma',
1186 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001193
1194want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001195if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001197 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001198 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001201 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001204conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001205
Norbert Langeef5924a2020-04-12 01:09:05 +02001206want_zstd = get_option('zstd')
1207if want_zstd != 'false' and not skip_deps
1208 libzstd = dependency('libzstd',
1209 required : want_zstd == 'true',
1210 version : '>= 1.4.0')
1211 have = libzstd.found()
1212else
1213 have = false
1214 libzstd = []
1215endif
1216conf.set10('HAVE_ZSTD', have)
1217
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001218want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001219if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001220 libxkbcommon = dependency('xkbcommon',
1221 version : '>= 0.3.0',
1222 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001224else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001225 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001226 libxkbcommon = []
1227endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001229
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001230want_pcre2 = get_option('pcre2')
1231if want_pcre2 != 'false'
1232 libpcre2 = dependency('libpcre2-8',
1233 required : want_pcre2 == 'true')
1234 have = libpcre2.found()
1235else
1236 have = false
1237 libpcre2 = []
1238endif
1239conf.set10('HAVE_PCRE2', have)
1240
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001241want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001242if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 libglib = dependency('glib-2.0',
1244 version : '>= 2.22.0',
1245 required : want_glib == 'true')
1246 libgobject = dependency('gobject-2.0',
1247 version : '>= 2.22.0',
1248 required : want_glib == 'true')
1249 libgio = dependency('gio-2.0',
1250 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001251 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001252else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001253 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001254 libglib = []
1255 libgobject = []
1256 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001257endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001258conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001259
1260want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001261if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001262 libdbus = dependency('dbus-1',
1263 version : '>= 1.3.2',
1264 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001265 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001266else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001267 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001268 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001269endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001270conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001271
Yu Watanabe42303dc2017-06-18 05:22:32 +09001272default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001273if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001274 default_dnssec = 'no'
1275endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001276if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001277 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1278 default_dnssec = 'no'
1279endif
1280conf.set('DEFAULT_DNSSEC_MODE',
1281 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1282substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1283
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001284dns_over_tls = get_option('dns-over-tls')
1285if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001286 if dns_over_tls == 'openssl'
1287 have_gnutls = false
1288 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001289 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001290 if dns_over_tls == 'gnutls' and not have_gnutls
1291 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1292 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001293 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001294 if dns_over_tls == 'gnutls' or have_gnutls
1295 have_openssl = false
1296 else
1297 have_openssl = conf.get('HAVE_OPENSSL') == 1
1298 if dns_over_tls != 'auto' and not have_openssl
1299 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001300 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001301 endif
1302 endif
1303 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001304else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001305 have = false
1306 have_gnutls = false
1307 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001308endif
1309conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001310conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1311conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001312
Iwan Timmerc9299be2018-06-13 20:26:24 +02001313default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001314if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001315 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001316endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001317if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001318 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 +02001319 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001320endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001321conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1322 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1323substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001324
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001325default_mdns = get_option('default-mdns')
1326conf.set('DEFAULT_MDNS_MODE',
1327 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1328substs.set('DEFAULT_MDNS_MODE', default_mdns)
1329
1330default_llmnr = get_option('default-llmnr')
1331conf.set('DEFAULT_LLMNR_MODE',
1332 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1333substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1334
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001335want_repart = get_option('repart')
1336if want_repart != 'false'
1337 have = (conf.get('HAVE_OPENSSL') == 1 and
1338 conf.get('HAVE_LIBFDISK') == 1)
1339 if want_repart == 'true' and not have
1340 error('repart support was requested, but dependencies are not available')
1341 endif
1342else
1343 have = false
1344endif
1345conf.set10('ENABLE_REPART', have)
1346
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001348if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001349 have = (conf.get('HAVE_LIBCURL') == 1 and
1350 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001351 conf.get('HAVE_XZ') == 1 and
1352 conf.get('HAVE_GCRYPT') == 1)
1353 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 error('importd support was requested, but dependencies are not available')
1355 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001356else
1357 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001359conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360
Lennart Poettering70a5db52019-07-04 18:35:39 +02001361want_homed = get_option('homed')
1362if want_homed != 'false'
1363 have = (conf.get('HAVE_OPENSSL') == 1 and
1364 conf.get('HAVE_LIBFDISK') == 1 and
1365 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1366 if want_homed == 'true' and not have
1367 error('homed support was requested, but dependencies are not available')
1368 endif
1369else
1370 have = false
1371endif
1372conf.set10('ENABLE_HOMED', have)
1373
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001374have = have and conf.get('HAVE_PAM') == 1
1375conf.set10('ENABLE_PAM_HOME', have)
1376
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001378if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001379 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1380 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001381 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1382 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001383 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 # config should be installed when any of the programs are built.
1385 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1386 error('remote support was requested, but dependencies are not available')
1387 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001388 have = have_deps[0] or have_deps[1]
1389else
1390 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001392conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001394foreach term : ['utmp',
1395 'hibernate',
1396 'environment-d',
1397 'binfmt',
1398 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001399 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001400 'resolve',
1401 'logind',
1402 'hostnamed',
1403 'localed',
1404 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001405 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001406 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001407 'networkd',
1408 'timedated',
1409 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001410 'firstboot',
1411 'randomseed',
1412 'backlight',
1413 'vconsole',
1414 'quotacheck',
1415 'sysusers',
1416 'tmpfiles',
1417 'hwdb',
1418 'rfkill',
1419 'ldconfig',
1420 'efi',
1421 'tpm',
1422 'ima',
1423 'smack',
1424 'gshadow',
1425 'idn',
Norbert Langecdf7ad32020-04-08 23:59:13 +02001426 'initrd',
Yu Watanabe08540a92018-07-18 09:25:57 +09001427 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001428 'nss-systemd']
1429 have = get_option(term)
1430 name = 'ENABLE_' + term.underscorify().to_upper()
1431 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001432endforeach
1433
Yu Watanabe08540a92018-07-18 09:25:57 +09001434foreach tuple : [['nss-mymachines', 'machined'],
1435 ['nss-resolve', 'resolve']]
1436 want = get_option(tuple[0])
1437 if want != 'false'
1438 have = get_option(tuple[1])
1439 if want == 'true' and not have
1440 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1441 endif
1442 else
1443 have = false
1444 endif
1445 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1446 conf.set10(name, have)
1447endforeach
1448
1449enable_nss = false
1450foreach term : ['ENABLE_NSS_MYHOSTNAME',
1451 'ENABLE_NSS_MYMACHINES',
1452 'ENABLE_NSS_RESOLVE',
1453 'ENABLE_NSS_SYSTEMD']
1454 if conf.get(term) == 1
1455 enable_nss = true
1456 endif
1457endforeach
1458conf.set10('ENABLE_NSS', enable_nss)
1459
Yu Watanabe348b4432018-05-07 18:17:35 +09001460conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001461
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001462tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001463fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001464
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001465conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001466
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467#####################################################################
1468
1469if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001471
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001472 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001474 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 elif efi_arch == 'x86_64'
1476 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001477 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 elif efi_arch == 'arm'
1479 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001480 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 elif efi_arch == 'aarch64'
1482 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001483 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 else
1485 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001486 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001489 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001491
Yu Watanabeac093402018-05-10 16:04:16 +09001492 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001493else
1494 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001496conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
1498#####################################################################
1499
1500config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001501 output : 'config.h',
1502 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503
Yu Watanabe348b4432018-05-07 18:17:35 +09001504meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1505
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001507 'src/boot',
Lennart Poetteringc76dd732020-05-05 09:57:04 +02001508 'src/home',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509 'src/shared',
1510 'src/systemd',
1511 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001512 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001513 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514 'src/resolve',
1515 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001516 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517 'src/login',
1518 'src/udev',
1519 'src/libudev',
1520 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001521 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522 'src/libsystemd/sd-bus',
1523 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001524 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525 'src/libsystemd/sd-hwdb',
1526 'src/libsystemd/sd-id128',
1527 'src/libsystemd/sd-netlink',
1528 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001529 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001531 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532
1533add_project_arguments('-include', 'config.h', language : 'c')
1534
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001535generate_gperfs = find_program('tools/generate-gperfs.py')
1536
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537subdir('po')
1538subdir('catalog')
1539subdir('src/systemd')
1540subdir('src/basic')
1541subdir('src/libsystemd')
1542subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545
1546libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 'journal-core',
1548 libjournal_core_sources,
1549 journald_gperf_c,
1550 include_directories : includes,
1551 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552
Davide Cavalca1485aac2019-02-27 11:19:07 -05001553libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001556 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001557 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 include_directories : includes,
1559 link_args : ['-shared',
1560 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001561 link_with : [libbasic,
1562 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001563 link_whole : [libsystemd_static,
1564 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 dependencies : [threads,
1566 librt,
1567 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001568 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 liblz4],
1570 link_depends : libsystemd_sym,
1571 install : true,
1572 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573
Davide Cavalca70848ec2018-04-09 02:43:35 -07001574static_libsystemd = get_option('static-libsystemd')
1575static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1576
1577install_libsystemd_static = static_library(
1578 'systemd',
1579 libsystemd_sources,
1580 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001581 basic_sources,
1582 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001583 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001584 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001585 build_by_default : static_libsystemd != 'false',
1586 install : static_libsystemd != 'false',
1587 install_dir : rootlibdir,
1588 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1589 dependencies : [threads,
1590 librt,
1591 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001592 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001593 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001594 libcap,
1595 libblkid,
1596 libmount,
1597 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001598 libgcrypt],
1599 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1600
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001601# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001602make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1603
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604############################################################
1605
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001606# binaries that have --help and are intended for use by humans,
1607# usually, but not always, installed in /bin.
1608public_programs = []
1609
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610subdir('src/libudev')
1611subdir('src/shared')
1612subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001613subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614subdir('src/udev')
1615subdir('src/network')
1616
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001617subdir('src/analyze')
1618subdir('src/journal-remote')
1619subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001620subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001621subdir('src/hostname')
1622subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001623subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001624subdir('src/kernel-install')
1625subdir('src/locale')
1626subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001627subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001628subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001629subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001630subdir('src/nspawn')
1631subdir('src/resolve')
1632subdir('src/timedate')
1633subdir('src/timesync')
1634subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001635subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001636
1637subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001638subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001639subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001640subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001641
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001642############################################################
1643
1644# only static linking apart from libdl, to make sure that the
1645# module is linked to all libraries that it uses.
1646test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 'test-dlopen',
1648 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001649 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 include_directories : includes,
1651 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001652 dependencies : [libdl],
1653 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001654
Yu Watanabe08540a92018-07-18 09:25:57 +09001655foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001656 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001657 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1658 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001659
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001660 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 if condition
1662 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001663
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001665 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001666
Lennart Poettering1684c562019-07-04 18:31:11 +02001667 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1668 if tuple.length() > 2
1669 sources += tuple[2].split()
1670 endif
1671
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 nss = shared_library(
1673 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001674 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001675 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 version : '2',
1677 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001678 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1679 link_args : ['-Wl,-z,nodelete',
1680 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001681 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001682 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001683 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 libbasic],
1685 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001686 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 link_depends : sym,
1688 install : true,
1689 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001690
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 # We cannot use shared_module because it does not support version suffix.
1692 # Unfortunately shared_library insists on creating the symlink…
1693 meson.add_install_script('sh', '-c',
1694 'rm $DESTDIR@0@/libnss_@1@.so'
1695 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001696
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001697 if want_tests != 'false'
1698 test('dlopen-nss_' + module,
1699 test_dlopen,
1700 # path to dlopen must include a slash
1701 args : nss.full_path())
1702 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001703 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001704endforeach
1705
1706############################################################
1707
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001708executable(
1709 'systemd',
1710 systemd_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 : true,
1723 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001724
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001725meson.add_install_script(meson_make_symlink,
1726 join_paths(rootlibexecdir, 'systemd'),
1727 join_paths(rootsbindir, 'init'))
1728
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001729public_programs += executable(
1730 'systemd-analyze',
1731 systemd_analyze_sources,
1732 include_directories : includes,
1733 link_with : [libcore,
1734 libshared],
1735 dependencies : [versiondep,
1736 threads,
1737 librt,
1738 libseccomp,
1739 libselinux,
1740 libmount,
1741 libblkid],
1742 install_rpath : rootlibexecdir,
1743 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001745executable(
1746 'systemd-journald',
1747 systemd_journald_sources,
1748 include_directories : includes,
1749 link_with : [libjournal_core,
1750 libshared],
1751 dependencies : [threads,
1752 libxz,
1753 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001754 libselinux,
1755 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001756 install_rpath : rootlibexecdir,
1757 install : true,
1758 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001760public_programs += executable(
1761 'systemd-cat',
1762 systemd_cat_sources,
1763 include_directories : includes,
1764 link_with : [libjournal_core,
1765 libshared],
1766 dependencies : [threads],
1767 install_rpath : rootlibexecdir,
1768 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001770public_programs += executable(
1771 'journalctl',
1772 journalctl_sources,
1773 include_directories : includes,
1774 link_with : [libshared],
1775 dependencies : [threads,
1776 libqrencode,
1777 libxz,
1778 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001779 libpcre2,
1780 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001785executable(
1786 'systemd-getty-generator',
1787 'src/getty-generator/getty-generator.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001794executable(
1795 'systemd-debug-generator',
1796 'src/debug-generator/debug-generator.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 install_rpath : rootlibexecdir,
1800 install : true,
1801 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001803executable(
1804 'systemd-run-generator',
1805 'src/run-generator/run-generator.c',
1806 include_directories : includes,
1807 link_with : [libshared],
1808 install_rpath : rootlibexecdir,
1809 install : true,
1810 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001811
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001812executable(
1813 'systemd-fstab-generator',
1814 'src/fstab-generator/fstab-generator.c',
1815 include_directories : includes,
1816 link_with : [libcore_shared,
1817 libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001822if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001823 executable(
1824 '30-systemd-environment-d-generator',
1825 'src/environment-d-generator/environment-d-generator.c',
1826 include_directories : includes,
1827 link_with : [libshared],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001831
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 meson.add_install_script(meson_make_symlink,
1833 join_paths(sysconfdir, 'environment'),
1834 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001835endif
1836
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001837if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001838 executable(
1839 'systemd-hibernate-resume-generator',
1840 'src/hibernate-resume/hibernate-resume-generator.c',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 install_rpath : rootlibexecdir,
1844 install : true,
1845 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001846
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001847 executable(
1848 'systemd-hibernate-resume',
1849 'src/hibernate-resume/hibernate-resume.c',
1850 include_directories : includes,
1851 link_with : [libshared],
1852 install_rpath : rootlibexecdir,
1853 install : true,
1854 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001855endif
1856
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001857if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001858 executable(
1859 'systemd-gpt-auto-generator',
1860 'src/gpt-auto-generator/gpt-auto-generator.c',
1861 'src/shared/blkid-util.h',
1862 include_directories : includes,
1863 link_with : [libshared],
1864 dependencies : libblkid,
1865 install_rpath : rootlibexecdir,
1866 install : true,
1867 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001869 public_programs += executable(
1870 'systemd-dissect',
1871 'src/dissect/dissect.c',
1872 include_directories : includes,
1873 link_with : [libshared],
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001877endif
1878
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001879if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001880 executable(
1881 'systemd-resolved',
1882 systemd_resolved_sources,
1883 include_directories : includes,
1884 link_with : [libshared,
1885 libbasic_gcrypt,
1886 libsystemd_resolve_core],
1887 dependencies : systemd_resolved_dependencies,
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001892 public_programs += executable(
1893 'resolvectl',
1894 resolvectl_sources,
1895 include_directories : includes,
1896 link_with : [libshared,
1897 libbasic_gcrypt,
1898 libsystemd_resolve_core],
1899 dependencies : [threads,
1900 libgpg_error,
1901 libm,
1902 libidn],
1903 install_rpath : rootlibexecdir,
1904 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001905
1906 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001907 join_paths(bindir, 'resolvectl'),
1908 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001909
1910 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001911 join_paths(bindir, 'resolvectl'),
1912 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913endif
1914
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001915if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001916 executable(
1917 'systemd-logind',
1918 systemd_logind_sources,
1919 include_directories : includes,
1920 link_with : [liblogind_core,
1921 libshared],
1922 dependencies : [threads,
1923 libacl],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001928 public_programs += executable(
1929 'loginctl',
1930 loginctl_sources,
1931 include_directories : includes,
1932 link_with : [libshared],
1933 dependencies : [threads,
1934 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001935 libxz,
1936 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001941 public_programs += executable(
1942 'systemd-inhibit',
1943 'src/login/inhibit.c',
1944 include_directories : includes,
1945 link_with : [libshared],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001949
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001950 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001951 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 pam_systemd = shared_library(
1953 'pam_systemd',
1954 pam_systemd_c,
1955 name_prefix : '',
1956 include_directories : includes,
1957 link_args : ['-shared',
1958 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001959 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 libshared_static],
1961 dependencies : [threads,
1962 libpam,
1963 libpam_misc],
1964 link_depends : pam_systemd_sym,
1965 install : true,
1966 install_dir : pamlibdir)
1967
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001968 if want_tests != 'false'
1969 test('dlopen-pam_systemd',
1970 test_dlopen,
1971 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001972 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001973 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001976 executable(
1977 'systemd-user-runtime-dir',
1978 user_runtime_dir_sources,
1979 include_directories : includes,
1980 link_with : [libshared],
1981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001984endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001985
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001986if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001987 executable(
1988 'systemd-user-sessions',
1989 'src/user-sessions/user-sessions.c',
1990 include_directories : includes,
1991 link_with : [libshared],
1992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995endif
1996
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001997if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001998 public_programs += executable(
1999 'bootctl',
2000 'src/boot/bootctl.c',
2001 include_directories : includes,
2002 link_with : [libshared],
2003 dependencies : [libblkid],
2004 install_rpath : rootlibexecdir,
2005 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02002006
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002007 public_programs += executable(
2008 'systemd-bless-boot',
2009 'src/boot/bless-boot.c',
2010 include_directories : includes,
2011 link_with : [libshared],
2012 dependencies : [libblkid],
2013 install_rpath : rootlibexecdir,
2014 install : true,
2015 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002016
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002017 executable(
2018 'systemd-bless-boot-generator',
2019 'src/boot/bless-boot-generator.c',
2020 include_directories : includes,
2021 link_with : [libshared],
2022 install_rpath : rootlibexecdir,
2023 install : true,
2024 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002025endif
2026
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002027executable(
2028 'systemd-boot-check-no-failures',
2029 'src/boot/boot-check-no-failures.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [libblkid],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002036
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002037public_programs += executable(
2038 'systemd-socket-activate',
2039 'src/activate/activate.c',
2040 include_directories : includes,
2041 link_with : [libshared],
2042 dependencies : [threads],
2043 install_rpath : rootlibexecdir,
2044 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002045
2046if get_option('link-systemctl-shared')
2047 systemctl_link_with = [libshared]
2048else
2049 systemctl_link_with = [libsystemd_static,
2050 libshared_static,
2051 libjournal_client,
2052 libbasic_gcrypt]
2053endif
2054
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002055public_programs += executable(
2056 'systemctl',
2057 'src/systemctl/systemctl.c',
2058 'src/systemctl/sysv-compat.h',
2059 'src/systemctl/sysv-compat.c',
2060 include_directories : includes,
2061 link_with : systemctl_link_with,
2062 dependencies : [threads,
2063 libcap,
2064 libselinux,
2065 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002066 liblz4,
2067 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071
Lennart Poettering61d05782018-04-16 21:41:40 +02002072if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002073 executable(
2074 'systemd-portabled',
2075 systemd_portabled_sources,
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [threads],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002082
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002083 public_programs += executable(
2084 'portablectl',
2085 'src/portable/portablectl.c',
2086 include_directories : includes,
2087 link_with : [libshared],
2088 dependencies : [threads],
2089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002092endif
2093
Lennart Poetteringd093b622019-07-04 18:33:30 +02002094if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002095 executable(
2096 'systemd-userwork',
2097 systemd_userwork_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 dependencies : [threads],
2101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002104
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002105 executable(
2106 'systemd-userdbd',
2107 systemd_userdbd_sources,
2108 include_directories : includes,
2109 link_with : [libshared],
2110 dependencies : [threads],
2111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002114
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002115 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002116 'userdbctl',
2117 userdbctl_sources,
2118 include_directories : includes,
2119 link_with : [libshared],
2120 dependencies : [threads],
2121 install_rpath : rootlibexecdir,
2122 install : true,
2123 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002124endif
2125
Lennart Poettering70a5db52019-07-04 18:35:39 +02002126if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002127 executable(
2128 'systemd-homework',
2129 systemd_homework_sources,
2130 include_directories : includes,
2131 link_with : [libshared],
2132 dependencies : [threads,
2133 libcryptsetup,
2134 libblkid,
2135 libcrypt,
2136 libopenssl,
2137 libfdisk,
2138 libp11kit],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002142
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002143 executable(
2144 'systemd-homed',
2145 systemd_homed_sources,
2146 include_directories : includes,
2147 link_with : [libshared],
2148 dependencies : [threads,
2149 libcrypt,
2150 libopenssl,
2151 libpwquality],
2152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002155
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002156 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002157 'homectl',
2158 homectl_sources,
2159 include_directories : includes,
2160 link_with : [libshared],
2161 dependencies : [threads,
2162 libcrypt,
2163 libopenssl,
2164 libp11kit,
2165 libpwquality],
2166 install_rpath : rootlibexecdir,
2167 install : true,
2168 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002169
2170 if conf.get('HAVE_PAM') == 1
2171 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2172 pam_systemd = shared_library(
2173 'pam_systemd_home',
2174 pam_systemd_home_c,
2175 name_prefix : '',
2176 include_directories : includes,
2177 link_args : ['-shared',
2178 '-Wl,--version-script=' + version_script_arg],
2179 link_with : [libsystemd_static,
2180 libshared_static],
2181 dependencies : [threads,
2182 libpam,
2183 libpam_misc,
2184 libcrypt],
2185 link_depends : pam_systemd_home_sym,
2186 install : true,
2187 install_dir : pamlibdir)
2188 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002189endif
2190
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002191foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2192 meson.add_install_script(meson_make_symlink,
2193 join_paths(rootbindir, 'systemctl'),
2194 join_paths(rootsbindir, alias))
2195endforeach
2196
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002197if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002198 executable(
2199 'systemd-backlight',
2200 'src/backlight/backlight.c',
2201 include_directories : includes,
2202 link_with : [libshared],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206endif
2207
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002208if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002209 executable(
2210 'systemd-rfkill',
2211 'src/rfkill/rfkill.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217endif
2218
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002219executable(
2220 'systemd-system-update-generator',
2221 'src/system-update-generator/system-update-generator.c',
2222 include_directories : includes,
2223 link_with : [libshared],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002228if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002229 systemd_cryptsetup_sources = files('''
2230 src/cryptsetup/cryptsetup.c
2231 src/cryptsetup/cryptsetup-pkcs11.h
2232'''.split())
2233
2234 if conf.get('HAVE_P11KIT') == 1
2235 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2236 endif
2237
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002238 executable(
2239 'systemd-cryptsetup',
2240 systemd_cryptsetup_sources,
2241 include_directories : includes,
2242 link_with : [libshared],
2243 dependencies : [libcryptsetup,
2244 libp11kit],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002249 executable(
2250 'systemd-cryptsetup-generator',
2251 'src/cryptsetup/cryptsetup-generator.c',
2252 include_directories : includes,
2253 link_with : [libshared],
2254 dependencies : [libcryptsetup],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002259 executable(
2260 'systemd-veritysetup',
2261 'src/veritysetup/veritysetup.c',
2262 include_directories : includes,
2263 link_with : [libshared],
2264 dependencies : [libcryptsetup],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002269 executable(
2270 'systemd-veritysetup-generator',
2271 'src/veritysetup/veritysetup-generator.c',
2272 include_directories : includes,
2273 link_with : [libshared],
2274 dependencies : [libcryptsetup],
2275 install_rpath : rootlibexecdir,
2276 install : true,
2277 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278endif
2279
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002280if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002281 executable(
2282 'systemd-sysv-generator',
2283 'src/sysv-generator/sysv-generator.c',
2284 include_directories : includes,
2285 link_with : [libshared],
2286 install_rpath : rootlibexecdir,
2287 install : true,
2288 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002290 executable(
2291 'systemd-rc-local-generator',
2292 'src/rc-local-generator/rc-local-generator.c',
2293 include_directories : includes,
2294 link_with : [libshared],
2295 install_rpath : rootlibexecdir,
2296 install : true,
2297 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298endif
2299
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002300if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002301 executable(
2302 'systemd-hostnamed',
2303 'src/hostname/hostnamed.c',
2304 include_directories : includes,
2305 link_with : [libshared],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002309
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002310 public_programs += executable(
2311 'hostnamectl',
2312 'src/hostname/hostnamectl.c',
2313 include_directories : includes,
2314 link_with : [libshared],
2315 install_rpath : rootlibexecdir,
2316 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317endif
2318
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002319if conf.get('ENABLE_LOCALED') == 1
2320 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 # logind will load libxkbcommon.so dynamically on its own
2322 deps = [libdl]
2323 else
2324 deps = []
2325 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002326
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002327 executable(
2328 'systemd-localed',
2329 systemd_localed_sources,
2330 include_directories : includes,
2331 link_with : [libshared],
2332 dependencies : deps,
2333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002337 public_programs += executable(
2338 'localectl',
2339 localectl_sources,
2340 include_directories : includes,
2341 link_with : [libshared],
2342 install_rpath : rootlibexecdir,
2343 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344endif
2345
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002346if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002347 executable(
2348 'systemd-timedated',
2349 'src/timedate/timedated.c',
2350 include_directories : includes,
2351 link_with : [libshared],
2352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002355endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356
Yu Watanabe6129ec82018-05-03 18:07:43 +09002357if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002358 public_programs += executable(
2359 'timedatectl',
2360 'src/timedate/timedatectl.c',
2361 include_directories : includes,
2362 install_rpath : rootlibexecdir,
2363 link_with : [libshared],
2364 dependencies : [libm],
2365 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366endif
2367
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002368if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002369 if get_option('link-timesyncd-shared')
2370 timesyncd_link_with = [libshared]
2371 else
2372 timesyncd_link_with = [libsystemd_static,
2373 libshared_static,
2374 libjournal_client,
2375 libbasic_gcrypt]
2376 endif
2377
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002378 executable(
2379 'systemd-timesyncd',
2380 systemd_timesyncd_sources,
2381 include_directories : includes,
2382 link_with : [timesyncd_link_with],
2383 dependencies : [threads,
2384 libm],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002388
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002389 executable(
2390 'systemd-time-wait-sync',
2391 'src/time-wait-sync/time-wait-sync.c',
2392 include_directories : includes,
2393 link_with : [timesyncd_link_with],
2394 install_rpath : rootlibexecdir,
2395 install : true,
2396 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002397endif
2398
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002399if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002400 executable(
2401 'systemd-machined',
2402 systemd_machined_sources,
2403 include_directories : includes,
2404 link_with : [libmachine_core,
2405 libshared],
2406 install_rpath : rootlibexecdir,
2407 install : true,
2408 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002409
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002410 public_programs += executable(
2411 'machinectl',
2412 'src/machine/machinectl.c',
2413 include_directories : includes,
2414 link_with : [libshared],
2415 dependencies : [threads,
2416 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002417 liblz4,
2418 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002419 install_rpath : rootlibexecdir,
2420 install : true,
2421 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422endif
2423
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002424if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002425 executable(
2426 'systemd-importd',
2427 systemd_importd_sources,
2428 include_directories : includes,
2429 link_with : [libshared],
2430 dependencies : [threads],
2431 install_rpath : rootlibexecdir,
2432 install : true,
2433 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002435 systemd_pull = executable(
2436 'systemd-pull',
2437 systemd_pull_sources,
2438 include_directories : includes,
2439 link_with : [libshared],
2440 dependencies : [versiondep,
2441 libcurl,
2442 libz,
2443 libbzip2,
2444 libxz,
2445 libgcrypt],
2446 install_rpath : rootlibexecdir,
2447 install : true,
2448 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002450 systemd_import = executable(
2451 'systemd-import',
2452 systemd_import_sources,
2453 include_directories : includes,
2454 link_with : [libshared],
2455 dependencies : [libcurl,
2456 libz,
2457 libbzip2,
2458 libxz],
2459 install_rpath : rootlibexecdir,
2460 install : true,
2461 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002463 systemd_import_fs = executable(
2464 'systemd-import-fs',
2465 systemd_import_fs_sources,
2466 include_directories : includes,
2467 link_with : [libshared],
2468 install_rpath : rootlibexecdir,
2469 install : true,
2470 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002471
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002472 systemd_export = executable(
2473 'systemd-export',
2474 systemd_export_sources,
2475 include_directories : includes,
2476 link_with : [libshared],
2477 dependencies : [libcurl,
2478 libz,
2479 libbzip2,
2480 libxz],
2481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002484
2485 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486endif
2487
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002488if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002489 public_programs += executable(
2490 'systemd-journal-upload',
2491 systemd_journal_upload_sources,
2492 include_directories : includes,
2493 link_with : [libshared],
2494 dependencies : [versiondep,
2495 threads,
2496 libcurl,
2497 libgnutls,
2498 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002499 liblz4,
2500 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002501 install_rpath : rootlibexecdir,
2502 install : true,
2503 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504endif
2505
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002506if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002507 public_programs += executable(
2508 'systemd-journal-remote',
2509 systemd_journal_remote_sources,
2510 include_directories : includes,
2511 link_with : [libshared,
2512 libsystemd_journal_remote],
2513 dependencies : [threads,
2514 libmicrohttpd,
2515 libgnutls,
2516 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002517 liblz4,
2518 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002519 install_rpath : rootlibexecdir,
2520 install : true,
2521 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002523 public_programs += executable(
2524 'systemd-journal-gatewayd',
2525 systemd_journal_gatewayd_sources,
2526 include_directories : includes,
2527 link_with : [libshared],
2528 dependencies : [threads,
2529 libmicrohttpd,
2530 libgnutls,
2531 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002532 liblz4,
2533 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002534 install_rpath : rootlibexecdir,
2535 install : true,
2536 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537endif
2538
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002539if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002540 executable(
2541 'systemd-coredump',
2542 systemd_coredump_sources,
2543 include_directories : includes,
2544 link_with : [libshared],
2545 dependencies : [threads,
2546 libacl,
2547 libdw,
2548 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002549 liblz4,
2550 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002551 install_rpath : rootlibexecdir,
2552 install : true,
2553 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002554
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002555 public_programs += executable(
2556 'coredumpctl',
2557 coredumpctl_sources,
2558 include_directories : includes,
2559 link_with : [libshared],
2560 dependencies : [threads,
2561 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002562 liblz4,
2563 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002564 install_rpath : rootlibexecdir,
2565 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566endif
2567
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002568if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002569 executable(
2570 'systemd-pstore',
2571 systemd_pstore_sources,
2572 include_directories : includes,
2573 link_with : [libshared],
2574 dependencies : [threads,
2575 libacl,
2576 libdw,
2577 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002578 liblz4,
2579 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002580 install_rpath : rootlibexecdir,
2581 install : true,
2582 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002583endif
2584
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002585if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002586 public_programs += executable(
2587 'systemd-binfmt',
2588 'src/binfmt/binfmt.c',
2589 include_directories : includes,
2590 link_with : [libshared],
2591 install_rpath : rootlibexecdir,
2592 install : true,
2593 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594
2595 meson.add_install_script('sh', '-c',
2596 mkdir_p.format(binfmtdir))
2597 meson.add_install_script('sh', '-c',
2598 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2599endif
2600
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002601if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002602 exe = executable(
2603 'systemd-repart',
2604 systemd_repart_sources,
2605 include_directories : includes,
2606 link_with : [libshared],
2607 dependencies : [threads,
2608 libcryptsetup,
2609 libblkid,
2610 libfdisk,
2611 libopenssl],
2612 install_rpath : rootlibexecdir,
2613 install : true,
2614 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002615
2616 if want_tests != 'false'
2617 test('test-repart',
2618 test_repart_sh,
2619 args : exe.full_path())
2620 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002621endif
2622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002623if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002624 executable(
2625 'systemd-vconsole-setup',
2626 'src/vconsole/vconsole-setup.c',
2627 include_directories : includes,
2628 link_with : [libshared],
2629 install_rpath : rootlibexecdir,
2630 install : true,
2631 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002632endif
2633
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002634if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002635 executable(
2636 'systemd-random-seed',
2637 'src/random-seed/random-seed.c',
2638 include_directories : includes,
2639 link_with : [libshared],
2640 install_rpath : rootlibexecdir,
2641 install : true,
2642 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643endif
2644
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002645if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002646 executable(
2647 'systemd-firstboot',
2648 'src/firstboot/firstboot.c',
2649 include_directories : includes,
2650 link_with : [libshared],
2651 dependencies : [libcrypt],
2652 install_rpath : rootlibexecdir,
2653 install : true,
2654 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655endif
2656
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002657executable(
2658 'systemd-remount-fs',
2659 'src/remount-fs/remount-fs.c',
2660 include_directories : includes,
2661 link_with : [libcore_shared,
2662 libshared],
2663 install_rpath : rootlibexecdir,
2664 install : true,
2665 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002666
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002667executable(
2668 'systemd-machine-id-setup',
2669 'src/machine-id-setup/machine-id-setup-main.c',
2670 include_directories : includes,
2671 link_with : [libcore_shared,
2672 libshared],
2673 install_rpath : rootlibexecdir,
2674 install : true,
2675 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002677executable(
2678 'systemd-fsck',
2679 'src/fsck/fsck.c',
2680 include_directories : includes,
2681 link_with : [libshared],
2682 install_rpath : rootlibexecdir,
2683 install : true,
2684 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002685
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002686executable('systemd-growfs',
2687 'src/partition/growfs.c',
2688 include_directories : includes,
2689 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002690 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002691 install_rpath : rootlibexecdir,
2692 install : true,
2693 install_dir : rootlibexecdir)
2694
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002695executable(
2696 'systemd-makefs',
2697 'src/partition/makefs.c',
2698 include_directories : includes,
2699 link_with : [libshared],
2700 install_rpath : rootlibexecdir,
2701 install : true,
2702 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002703
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002704executable(
2705 'systemd-sleep',
2706 'src/sleep/sleep.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
Yu Watanabed25e1272019-01-03 02:32:57 +09002713install_data('src/sleep/sleep.conf',
2714 install_dir : pkgsysconfdir)
2715
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002716public_programs += executable(
2717 'systemd-sysctl',
2718 'src/sysctl/sysctl.c',
2719 include_directories : includes,
2720 link_with : [libshared],
2721 install_rpath : rootlibexecdir,
2722 install : true,
2723 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002724
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002725executable(
2726 'systemd-ac-power',
2727 'src/ac-power/ac-power.c',
2728 include_directories : includes,
2729 link_with : [libshared],
2730 install_rpath : rootlibexecdir,
2731 install : true,
2732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002733
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002734public_programs += executable(
2735 'systemd-detect-virt',
2736 'src/detect-virt/detect-virt.c',
2737 include_directories : includes,
2738 link_with : [libshared],
2739 install_rpath : rootlibexecdir,
2740 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002742public_programs += executable(
2743 'systemd-delta',
2744 'src/delta/delta.c',
2745 include_directories : includes,
2746 link_with : [libshared],
2747 install_rpath : rootlibexecdir,
2748 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002749
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002750public_programs += executable(
2751 'systemd-escape',
2752 'src/escape/escape.c',
2753 include_directories : includes,
2754 link_with : [libshared],
2755 install_rpath : rootlibexecdir,
2756 install : true,
2757 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002758
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002759public_programs += executable(
2760 'systemd-notify',
2761 'src/notify/notify.c',
2762 include_directories : includes,
2763 link_with : [libshared],
2764 install_rpath : rootlibexecdir,
2765 install : true,
2766 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002767
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002768executable(
2769 'systemd-volatile-root',
2770 'src/volatile-root/volatile-root.c',
2771 include_directories : includes,
2772 link_with : [libshared],
2773 install_rpath : rootlibexecdir,
Norbert Langecdf7ad32020-04-08 23:59:13 +02002774 install : conf.get('ENABLE_INITRD') == 1,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002775 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002776
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002777executable(
2778 'systemd-cgroups-agent',
2779 'src/cgroups-agent/cgroups-agent.c',
2780 include_directories : includes,
2781 link_with : [libshared],
2782 install_rpath : rootlibexecdir,
2783 install : true,
2784 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002785
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002786public_programs += executable(
2787 'systemd-id128',
2788 'src/id128/id128.c',
2789 include_directories : includes,
2790 link_with : [libshared],
2791 install_rpath : rootlibexecdir,
2792 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002793
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002794public_programs += executable(
2795 'systemd-path',
2796 'src/path/path.c',
2797 include_directories : includes,
2798 link_with : [libshared],
2799 install_rpath : rootlibexecdir,
2800 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002801
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002802public_programs += executable(
2803 'systemd-ask-password',
2804 'src/ask-password/ask-password.c',
2805 include_directories : includes,
2806 link_with : [libshared],
2807 install_rpath : rootlibexecdir,
2808 install : true,
2809 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002810
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002811executable(
2812 'systemd-reply-password',
2813 'src/reply-password/reply-password.c',
2814 include_directories : includes,
2815 link_with : [libshared],
2816 install_rpath : rootlibexecdir,
2817 install : true,
2818 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002819
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002820public_programs += executable(
2821 'systemd-tty-ask-password-agent',
2822 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2823 include_directories : includes,
2824 link_with : [libshared],
2825 install_rpath : rootlibexecdir,
2826 install : true,
2827 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002828
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002829public_programs += executable(
2830 'systemd-cgls',
2831 'src/cgls/cgls.c',
2832 include_directories : includes,
2833 link_with : [libshared],
2834 install_rpath : rootlibexecdir,
2835 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002836
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002837public_programs += executable(
2838 'systemd-cgtop',
2839 'src/cgtop/cgtop.c',
2840 include_directories : includes,
2841 link_with : [libshared],
2842 install_rpath : rootlibexecdir,
2843 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002844
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002845executable(
2846 'systemd-initctl',
2847 'src/initctl/initctl.c',
2848 include_directories : includes,
2849 link_with : [libshared],
2850 install_rpath : rootlibexecdir,
2851 install : true,
2852 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002853
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002854public_programs += executable(
2855 'systemd-mount',
2856 'src/mount/mount-tool.c',
2857 include_directories : includes,
2858 link_with : [libshared],
2859 dependencies: [libmount],
2860 install_rpath : rootlibexecdir,
2861 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002862
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002863meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002864 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002865
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002866public_programs += executable(
2867 'systemd-run',
2868 'src/run/run.c',
2869 include_directories : includes,
2870 link_with : [libshared],
2871 install_rpath : rootlibexecdir,
2872 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002873
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002874public_programs += executable(
2875 'systemd-stdio-bridge',
2876 'src/stdio-bridge/stdio-bridge.c',
2877 include_directories : includes,
2878 link_with : [libshared],
2879 dependencies : [versiondep],
2880 install_rpath : rootlibexecdir,
2881 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002882
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002883public_programs += executable(
2884 'busctl',
2885 'src/busctl/busctl.c',
2886 'src/busctl/busctl-introspect.c',
2887 'src/busctl/busctl-introspect.h',
2888 include_directories : includes,
2889 link_with : [libshared],
2890 install_rpath : rootlibexecdir,
2891 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002893if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002894 public_programs += executable(
2895 'systemd-sysusers',
2896 'src/sysusers/sysusers.c',
2897 include_directories : includes,
2898 link_with : [libshared],
2899 install_rpath : rootlibexecdir,
2900 install : true,
2901 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902endif
2903
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002904if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002905 exe = executable(
2906 'systemd-tmpfiles',
2907 'src/tmpfiles/tmpfiles.c',
Lennart Poetteringa3451c22020-05-05 22:45:54 +02002908 'src/tmpfiles/offline-passwd.c',
2909 'src/tmpfiles/offline-passwd.h',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002910 include_directories : includes,
2911 link_with : [libshared],
2912 dependencies : [libacl],
2913 install_rpath : rootlibexecdir,
2914 install : true,
2915 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002916 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002917
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002918 if want_tests != 'false'
2919 test('test-systemd-tmpfiles',
2920 test_systemd_tmpfiles_py,
2921 # https://github.com/mesonbuild/meson/issues/2681
2922 args : exe.full_path())
2923 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924endif
2925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002926if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002927 public_programs += executable(
2928 'systemd-hwdb',
2929 'src/hwdb/hwdb.c',
2930 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2931 include_directories : includes,
2932 link_with : [libudev_static],
2933 install_rpath : udev_rpath,
2934 install : true,
2935 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002936endif
2937
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002938if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002939 executable(
2940 'systemd-quotacheck',
2941 'src/quotacheck/quotacheck.c',
2942 include_directories : includes,
2943 link_with : [libshared],
2944 install_rpath : rootlibexecdir,
2945 install : true,
2946 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002947endif
2948
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002949public_programs += executable(
2950 'systemd-socket-proxyd',
2951 'src/socket-proxy/socket-proxyd.c',
2952 include_directories : includes,
2953 link_with : [libshared],
2954 dependencies : [threads],
2955 install_rpath : rootlibexecdir,
2956 install : true,
2957 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002958
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002959public_programs += executable(
2960 'systemd-udevd',
2961 systemd_udevd_sources,
2962 include_directories : includes,
2963 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2964 link_with : [libudev_core,
2965 libsystemd_network,
2966 libudev_static],
2967 dependencies : [versiondep,
2968 threads,
2969 libkmod,
2970 libidn,
2971 libacl,
2972 libblkid],
2973 install_rpath : udev_rpath,
2974 install : true,
2975 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002976
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002977public_programs += executable(
2978 'udevadm',
2979 udevadm_sources,
2980 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2981 include_directories : includes,
2982 link_with : [libudev_core,
2983 libsystemd_network,
2984 libudev_static],
2985 dependencies : [versiondep,
2986 threads,
2987 libkmod,
2988 libidn,
2989 libacl,
2990 libblkid],
2991 install_rpath : udev_rpath,
2992 install : true,
2993 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002994
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002995executable(
2996 'systemd-shutdown',
2997 systemd_shutdown_sources,
2998 include_directories : includes,
2999 link_with : [libcore_shared,
3000 libshared],
3001 dependencies : [libmount],
3002 install_rpath : rootlibexecdir,
3003 install : true,
3004 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003005
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003006executable(
3007 'systemd-update-done',
3008 'src/update-done/update-done.c',
3009 include_directories : includes,
3010 link_with : [libshared],
3011 install_rpath : rootlibexecdir,
3012 install : true,
3013 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003014
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003015executable(
3016 'systemd-update-utmp',
3017 'src/update-utmp/update-utmp.c',
3018 include_directories : includes,
3019 link_with : [libshared],
3020 dependencies : [libaudit],
3021 install_rpath : rootlibexecdir,
3022 install : true,
3023 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003024
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003025if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003026 executable(
3027 'systemd-modules-load',
3028 'src/modules-load/modules-load.c',
3029 include_directories : includes,
3030 link_with : [libshared],
3031 dependencies : [libkmod],
3032 install_rpath : rootlibexecdir,
3033 install : true,
3034 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003035
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003036 meson.add_install_script('sh', '-c',
3037 mkdir_p.format(modulesloaddir))
3038 meson.add_install_script('sh', '-c',
3039 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003040endif
3041
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003042public_programs += executable(
3043 'systemd-nspawn',
3044 systemd_nspawn_sources,
3045 include_directories : includes,
3046 link_with : [libcore_shared,
3047 libnspawn_core,
3048 libshared],
3049 dependencies : [libblkid,
3050 libseccomp],
3051 install_rpath : rootlibexecdir,
3052 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003053
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003054if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003055 executable(
3056 'systemd-networkd',
3057 systemd_networkd_sources,
3058 include_directories : network_include_dir,
3059 link_with : [libnetworkd_core,
3060 libsystemd_network,
3061 libudev_static,
3062 networkd_link_with],
3063 dependencies : [threads],
3064 install_rpath : rootlibexecdir,
3065 install : true,
3066 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003067
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003068 executable(
3069 'systemd-networkd-wait-online',
3070 systemd_networkd_wait_online_sources,
3071 include_directories : includes,
3072 link_with : [libnetworkd_core,
3073 networkd_link_with],
3074 install_rpath : rootlibexecdir,
3075 install : true,
3076 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003077
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003078 public_programs += executable(
3079 'networkctl',
3080 networkctl_sources,
3081 include_directories : includes,
3082 link_with : [libsystemd_network,
3083 networkd_link_with],
3084 install_rpath : rootlibexecdir,
3085 install : true,
3086 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003087
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003088 exe = executable(
3089 'systemd-network-generator',
3090 network_generator_sources,
3091 include_directories : includes,
3092 link_with : [networkd_link_with],
3093 install_rpath : rootlibexecdir,
3094 install : true,
3095 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003096
3097 if want_tests != 'false'
3098 test('test-network-generator-conversion',
3099 test_network_generator_conversion_sh,
3100 # https://github.com/mesonbuild/meson/issues/2681
3101 args : exe.full_path())
3102 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003103endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003104
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003105executable(
3106 'systemd-sulogin-shell',
3107 ['src/sulogin-shell/sulogin-shell.c'],
3108 include_directories : includes,
3109 link_with : [libshared],
3110 install_rpath : rootlibexecdir,
3111 install : true,
3112 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003113
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003114############################################################
3115
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003116custom_target(
3117 'systemd-runtest.env',
3118 output : 'systemd-runtest.env',
3119 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003120 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003121 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003122 '} >@OUTPUT@'],
3123 build_by_default : true)
3124
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003125foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003126 sources = tuple[0]
3127 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3128 dependencies = tuple[2]
3129 condition = tuple.length() >= 4 ? tuple[3] : ''
3130 type = tuple.length() >= 5 ? tuple[4] : ''
3131 defs = tuple.length() >= 6 ? tuple[5] : []
3132 incs = tuple.length() >= 7 ? tuple[6] : includes
3133 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003134
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003135 name = sources[0].split('/')[-1].split('.')[0]
3136 if type.startswith('timeout=')
3137 timeout = type.split('=')[1].to_int()
3138 type = ''
3139 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003140
3141 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003142 exe = executable(
3143 name,
3144 sources,
3145 include_directories : incs,
3146 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003147 dependencies : [versiondep,
3148 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003149 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003150 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003151 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003152 install : install_tests,
3153 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003154
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003155 if type == 'manual'
3156 message('@0@ is a manual test'.format(name))
3157 elif type == 'unsafe' and want_tests != 'unsafe'
3158 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003159 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003160 test(name, exe,
3161 env : test_env,
3162 timeout : timeout)
3163 endif
3164 else
3165 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3166 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003167endforeach
3168
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003169exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003170 'test-libsystemd-sym',
3171 test_libsystemd_sym_c,
3172 include_directories : includes,
3173 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003174 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003175 install : install_tests,
3176 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003177if want_tests != 'false'
3178 test('test-libsystemd-sym', exe)
3179endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003180
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003181exe = executable(
3182 'test-libsystemd-static-sym',
3183 test_libsystemd_sym_c,
3184 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003185 link_with : [install_libsystemd_static],
3186 dependencies : [threads], # threads is already included in dependencies on the library,
3187 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003188 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003189 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003190 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003191if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003192 test('test-libsystemd-static-sym', exe)
3193endif
3194
3195exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003196 'test-libudev-sym',
3197 test_libudev_sym_c,
3198 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003199 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003200 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003201 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003202 install : install_tests,
3203 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003204if want_tests != 'false'
3205 test('test-libudev-sym', exe)
3206endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003207
3208exe = executable(
3209 'test-libudev-static-sym',
3210 test_libudev_sym_c,
3211 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003212 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003213 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003214 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003215 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003216 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003217if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003218 test('test-libudev-static-sym', exe)
3219endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003220
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003221############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003222
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003223fuzzer_exes = []
3224
Michael Olbrich59967402018-11-11 11:27:35 +01003225if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003226 foreach tuple : fuzzers
3227 sources = tuple[0]
3228 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3229 dependencies = tuple[2]
3230 defs = tuple.length() >= 4 ? tuple[3] : []
3231 incs = tuple.length() >= 5 ? tuple[4] : includes
3232 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003233
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003234 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003235 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003236 elif want_libfuzzer
3237 if fuzzing_engine.found()
3238 dependencies += fuzzing_engine
3239 else
3240 link_args += ['-fsanitize=fuzzer']
3241 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003242 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003243 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003244 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003245
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003246 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003247
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003248 fuzzer_exes += executable(
3249 name,
3250 sources,
3251 include_directories : [incs, include_directories('src/fuzz')],
3252 link_with : link_with,
3253 dependencies : dependencies,
3254 c_args : defs,
3255 link_args: link_args,
3256 install : false)
3257 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003258endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003259
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003260run_target(
3261 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003262 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003263 command : ['true'])
3264
3265############################################################
3266
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003267make_directive_index_py = find_program('tools/make-directive-index.py')
3268make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003269xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003270hwdb_update_sh = find_program('tools/hwdb-update.sh')
3271autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003272
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003273subdir('sysctl.d')
3274subdir('sysusers.d')
3275subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003276subdir('hwdb.d')
3277subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003278subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003279subdir('network')
3280subdir('man')
3281subdir('shell-completion/bash')
3282subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003283subdir('docs/sysvinit')
3284subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003285
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003286install_subdir('factory/etc',
3287 install_dir : factorydir)
3288
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003289install_data('xorg/50-systemd-user.sh',
3290 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003291install_data('modprobe.d/systemd.conf',
3292 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003293install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003294 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003295 'NEWS',
3296 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303297 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003298 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003299 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003300 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003301 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003302 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003303 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003304 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3305 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003306
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003307meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3308meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3309
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003310############################################################
3311
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003312check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003313
3314foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003315 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003316 if want_tests != 'false'
3317 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003318 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003319 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003320 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003321endforeach
3322
3323############################################################
3324
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003325check_directives_sh = find_program('tools/check-directives.sh')
3326
3327if want_tests != 'false'
3328 test('check-directives',
3329 check_directives_sh,
3330 args : project_source_root)
3331endif
3332
3333############################################################
3334
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003335# Enable tests for all supported sanitizers
3336foreach tuple : sanitizers
3337 sanitizer = tuple[0]
3338 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003339
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003340 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003341 prev = ''
3342 foreach p : fuzz_regression_tests
3343 b = p.split('/')[-2]
3344 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003345
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003346 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003347
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003348 if name != prev
3349 if want_tests == 'false'
3350 message('Not compiling @0@ because tests is set to false'.format(name))
3351 elif slow_tests
3352 exe = custom_target(
3353 name,
3354 output : name,
3355 depends : build,
3356 command : [env, 'ln', '-fs',
3357 join_paths(build.full_path(), b),
3358 '@OUTPUT@'],
3359 build_by_default : true)
3360 else
3361 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3362 endif
3363 endif
3364 prev = name
3365
3366 if want_tests != 'false' and slow_tests
3367 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3368 env,
3369 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003370 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003371 endif
3372 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003373 endif
3374endforeach
3375
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003376
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003377############################################################
3378
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003379if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003380 all_files = run_command(
3381 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003382 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003383 'ls-files',
3384 ':/*.[ch]'])
3385 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003386
userwithuide85a6902017-08-09 13:41:44 +00003387 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003388 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003389 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003390 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003391 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003392 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003393 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003394endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003395
3396if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003397 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003398 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003399 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003400 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003401endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003402
3403if git.found()
3404 git_head = run_command(
3405 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003406 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003407 'rev-parse', 'HEAD']).stdout().strip()
3408 git_head_short = run_command(
3409 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003410 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003411 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3412
3413 run_target(
3414 'git-snapshot',
3415 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003416 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003417 git_head_short),
3418 '--prefix', 'systemd-@0@/'.format(git_head),
3419 'HEAD'])
3420endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003421
3422############################################################
3423
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003424check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003425run_target(
3426 'check-api-docs',
3427 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003428 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003429
3430############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003431watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003432
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003433status = [
3434 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3435
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003436 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003437 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003438 'prefix directory: @0@'.format(prefixdir),
3439 'rootprefix directory: @0@'.format(rootprefixdir),
3440 'sysconf directory: @0@'.format(sysconfdir),
3441 'include directory: @0@'.format(includedir),
3442 'lib directory: @0@'.format(libdir),
3443 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003444 'SysV init scripts: @0@'.format(sysvinit_path),
3445 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003446 'PAM modules directory: @0@'.format(pamlibdir),
3447 'PAM configuration directory: @0@'.format(pamconfdir),
3448 'RPM macros directory: @0@'.format(rpmmacrosdir),
3449 'modprobe.d directory: @0@'.format(modprobedir),
3450 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3451 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3452 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3453 'bash completions directory: @0@'.format(bashcompletiondir),
3454 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003455 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003456 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3457 get_option('debug-tty')),
3458 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003459 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003460 'maximum system UID: @0@'.format(system_uid_max),
3461 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003462 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3463 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3464 'minimum container UID base: @0@'.format(container_uid_base_min),
3465 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003466 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003467 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003468 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003469 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003470 'nobody user name: @0@'.format(nobody_user),
3471 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003472 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003473 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003474
3475 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003476 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003477 'default mDNS mode: @0@'.format(default_mdns),
3478 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003479 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003480 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003481 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003482 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003483 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003484 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003485
3486alt_dns_servers = '\n '.join(dns_servers.split(' '))
3487alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3488status += [
3489 'default DNS servers: @0@'.format(alt_dns_servers),
3490 'default NTP servers: @0@'.format(alt_ntp_servers)]
3491
3492alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3493 '@@0@'.format(time_epoch)).stdout().strip()
3494status += [
3495 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3496
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003497status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003498 'static libsystemd: @0@'.format(static_libsystemd),
3499 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003500
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003501# TODO:
3502# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3503# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3504# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3505
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003506if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003507 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003508
3509 if have_gnu_efi
3510 status += [
3511 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003512 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003513 'EFI lds: @0@'.format(efi_lds),
3514 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003515 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003516 endif
3517endif
3518
3519found = []
3520missing = []
3521
3522foreach tuple : [
3523 ['libcryptsetup'],
3524 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003525 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003526 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003527 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003528 ['AUDIT'],
3529 ['IMA'],
3530 ['AppArmor'],
3531 ['SELinux'],
3532 ['SECCOMP'],
3533 ['SMACK'],
3534 ['zlib'],
3535 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003536 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003537 ['lz4'],
3538 ['bzip2'],
3539 ['ACL'],
3540 ['gcrypt'],
3541 ['qrencode'],
3542 ['microhttpd'],
3543 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003544 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003545 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003546 ['idn'],
Norbert Langecdf7ad32020-04-08 23:59:13 +02003547 ['initrd'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003548 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003549 ['libidn'],
3550 ['libiptc'],
3551 ['elfutils'],
3552 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003553 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003554 ['vconsole'],
3555 ['quotacheck'],
3556 ['tmpfiles'],
3557 ['environment.d'],
3558 ['sysusers'],
3559 ['firstboot'],
3560 ['randomseed'],
3561 ['backlight'],
3562 ['rfkill'],
3563 ['logind'],
3564 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003565 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003566 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003567 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003568 ['importd'],
3569 ['hostnamed'],
3570 ['timedated'],
3571 ['timesyncd'],
3572 ['localed'],
3573 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003574 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003575 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3576 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003577 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003578 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003579 ['polkit'],
3580 ['legacy pkla', install_polkit_pkla],
3581 ['efi'],
3582 ['gnu-efi', have_gnu_efi],
3583 ['kmod'],
3584 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003585 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003586 ['blkid'],
3587 ['dbus'],
3588 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003589 ['nss-myhostname'],
3590 ['nss-mymachines'],
3591 ['nss-resolve'],
3592 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003593 ['hwdb'],
3594 ['tpm'],
3595 ['man pages', want_man],
3596 ['html pages', want_html],
3597 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003598 ['SysV compat'],
3599 ['utmp'],
3600 ['ldconfig'],
3601 ['hibernate'],
3602 ['adm group', get_option('adm-group')],
3603 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003604 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003605 ['debug hashmap'],
3606 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003607 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003608 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003609 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003610 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003611 ['link-udev-shared', get_option('link-udev-shared')],
3612 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003613 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003614 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003615 ['kernel-install', get_option('kernel-install')],
3616 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003617]
3618
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003619 if tuple.length() >= 2
3620 cond = tuple[1]
3621 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003622 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3623 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003624 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003625 endif
3626 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003627 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003628 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003629 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003630 endif
3631endforeach
3632
3633status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003634 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003635 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003636 '',
3637 'disabled features: @0@'.format(', '.join(missing)),
3638 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003639message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003640
3641if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003642 warning('\n' +
3643 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3644 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3645 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003646endif