blob: b87d5c63a358d886eecee8ab75f8fdbea8d352a0 [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')
Frantisek Sumsalc56463f2020-05-21 16:59:40 +0200311fuzz_tests = want_tests != 'false' and get_option('fuzz-tests')
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200312install_tests = get_option('install-tests')
313
James Hilliard46e63a22018-12-27 09:16:20 +0800314if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200315 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100316 cxx = meson.get_compiler('cpp')
317 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200318else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200319 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400320endif
321
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500322if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200323 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
324 if fuzzing_engine.found()
325 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
326 elif cc.has_argument('-fsanitize=fuzzer-no-link')
327 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
328 else
329 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
330 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200331elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500332 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
333endif
334
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100335# Those generate many false positives, and we do not want to change the code to
336# avoid them.
337basic_disabled_warnings = [
338 '-Wno-unused-parameter',
339 '-Wno-missing-field-initializers',
340 '-Wno-unused-result',
341 '-Wno-format-signedness',
342]
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100343
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345 '-Werror=undef',
346 '-Wlogical-op',
347 '-Wmissing-include-dirs',
348 '-Wold-style-definition',
349 '-Wpointer-arith',
350 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900351 '-Wfloat-equal',
352 '-Wsuggest-attribute=noreturn',
353 '-Werror=missing-prototypes',
354 '-Werror=implicit-function-declaration',
355 '-Werror=missing-declarations',
356 '-Werror=return-type',
357 '-Werror=incompatible-pointer-types',
358 '-Werror=format=2',
359 '-Wstrict-prototypes',
360 '-Wredundant-decls',
361 '-Wmissing-noreturn',
362 '-Wimplicit-fallthrough=5',
363 '-Wshadow',
364 '-Wendif-labels',
365 '-Wstrict-aliasing=2',
366 '-Wwrite-strings',
367 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200368 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200369 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370 '-Wdate-time',
371 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700372
373 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100374 '-Wno-error=#warnings', # clang
375 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700376
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700377 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
378 # optimizations enabled, producing essentially false positives.
379 '-Wno-maybe-uninitialized',
380
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900381 '-ffast-math',
382 '-fno-common',
383 '-fdiagnostics-show-option',
384 '-fno-strict-aliasing',
385 '-fvisibility=hidden',
386 '-fstack-protector',
387 '-fstack-protector-strong',
388 '--param=ssp-buffer-size=4',
389]
390
391# --as-needed and --no-undefined are provided by meson by default,
392# run mesonconf to see what is enabled
393possible_link_flags = [
394 '-Wl,-z,relro',
395 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200396 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900397]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400398
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900399if cc.get_id() == 'clang'
400 possible_cc_flags += [
401 '-Wno-typedef-redefinition',
402 '-Wno-gnu-variable-sized-type-not-at-end',
403 ]
404endif
405
406if get_option('buildtype') != 'debug'
407 possible_cc_flags += [
408 '-ffunction-sections',
409 '-fdata-sections',
410 ]
411
412 possible_link_flags += '-Wl,--gc-sections'
413endif
414
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100415add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900416add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900417add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900418
Zbigniew Jędrzejewski-Szmek94c0c5b2020-05-09 09:09:11 +0200419have = cc.has_argument('-Wzero-length-bounds')
420conf.set10('HAVE_ZERO_LENGTH_BOUNDS', have)
421
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800422if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423 #include <time.h>
424 #include <inttypes.h>
425 typedef uint64_t usec_t;
426 usec_t now(clockid_t clock);
427 int main(void) {
428 struct timespec now;
429 return 0;
430 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100431''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400432 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433endif
434
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100435if cxx_cmd != ''
436 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
437endif
438
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200439cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400440
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200441has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
442
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443#####################################################################
444# compilation result tests
445
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400446conf.set('_GNU_SOURCE', true)
447conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200448conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400450conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
451conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
452conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
453conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
454
455decl_headers = '''
456#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100457#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400459
460foreach decl : ['char16_t',
461 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100462 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400464
465 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200466 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
467
468 if decl == 'struct statx'
469 if have
470 want_linux_stat_h = false
471 else
472 have = cc.sizeof(decl,
473 prefix : decl_headers + '#include <linux/stat.h>',
474 args : '-D_GNU_SOURCE') > 0
475 want_linux_stat_h = have
476 endif
477 endif
478
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200479 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480endforeach
481
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200482conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700483
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200485 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486endforeach
487
488foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100489 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100490 ['gettid', '''#include <sys/types.h>
491 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100492 ['pivot_root', '''#include <stdlib.h>
493 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400495 #include <sys/stat.h>
496 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100498 ['renameat2', '''#include <stdio.h>
499 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400500 ['kcmp', '''#include <linux/kcmp.h>'''],
501 ['keyctl', '''#include <sys/types.h>
502 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200505 ['bpf', '''#include <sys/syscall.h>
506 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100507 ['statx', '''#include <sys/types.h>
508 #include <sys/stat.h>
509 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100510 ['explicit_bzero' , '''#include <string.h>'''],
511 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100512 ['set_mempolicy', '''#include <stdlib.h>
513 #include <unistd.h>'''],
514 ['get_mempolicy', '''#include <stdlib.h>
515 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200516 ['pidfd_send_signal', '''#include <stdlib.h>
517 #include <unistd.h>
518 #include <signal.h>
519 #include <sys/wait.h>'''],
520 ['pidfd_open', '''#include <stdlib.h>
521 #include <unistd.h>
522 #include <signal.h>
523 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100524 ['rt_sigqueueinfo', '''#include <stdlib.h>
525 #include <unistd.h>
526 #include <signal.h>
527 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529
Lennart Poettering85db59b2017-12-25 12:01:14 +0100530 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532endforeach
533
Lennart Poettering85db59b2017-12-25 12:01:14 +0100534if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200535 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200536 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400537else
538 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200539 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200540 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400541endif
542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543#####################################################################
544
Davide Cavalca1485aac2019-02-27 11:19:07 -0500545vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
546 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100547 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100548 meson.project_version()]
549
Louis Taylord1084aa2019-01-21 21:45:36 +0000550version_h = vcs_tag(
551 input : 'src/version/version.h.in',
552 output : 'version.h',
553 command: vcs_tagger)
554
555versiondep = declare_dependency(sources: version_h)
556
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400559m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400561git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100562env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100563perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
Davide Cavalca1485aac2019-02-27 11:19:07 -0500565meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400566mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400567test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
568splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400569
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
571# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500572progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574 ['kmod', '/usr/bin/kmod' ],
575 ['kexec', '/usr/sbin/kexec' ],
576 ['sulogin', '/usr/sbin/sulogin' ],
577 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
578 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
579 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
580 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200581 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582 ]
583foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400584 path = get_option(prog[0] + '-path')
585 if path != ''
586 message('Using @1@ for @0@'.format(prog[0], path))
587 else
588 exe = find_program(prog[0],
589 '/usr/sbin/' + prog[0],
590 '/sbin/' + prog[0],
591 required: false)
592 path = exe.found() ? exe.path() : prog[1]
593 endif
594 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
595 conf.set_quoted(name, path)
596 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597endforeach
598
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500599conf.set_quoted('TELINIT', get_option('telinit-path'))
600
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400601if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100602 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400603endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604
605############################################################
606
607gperf = find_program('gperf')
608
609gperf_test_format = '''
610#include <string.h>
611const char * in_word_set(const char *, @0@);
612@1@
613'''
614gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
615gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
616gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
617if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400618 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
621 if cc.compiles(gperf_test)
622 gperf_len_type = 'unsigned'
623 else
624 error('unable to determine gperf len type')
625 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endif
627message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628conf.set('GPERF_LEN_TYPE', gperf_len_type,
629 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630
631############################################################
632
633if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100636foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637 'linux/memfd.h',
638 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200639 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'valgrind/memcheck.h',
641 'valgrind/valgrind.h',
642 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200644 conf.set10('HAVE_' + header.underscorify().to_upper(),
645 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646endforeach
647
648############################################################
649
Zbigniew Jędrzejewski-Szmekeef4b802020-05-07 17:30:02 +0200650fallback_hostname = get_option('fallback-hostname')
651if fallback_hostname == '' or fallback_hostname[0] == '.' or fallback_hostname[0] == '-'
652 error('Invalid fallback-hostname configuration')
653 # A more extensive test is done in test-hostname-util. Let's catch
654 # the most obvious errors here so we don't fail with an assert later.
655endif
656conf.set_quoted('FALLBACK_HOSTNAME', fallback_hostname)
657
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400658conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
659gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660
661default_hierarchy = get_option('default-hierarchy')
662conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
663 description : 'default cgroup hierarchy as string')
664if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670endif
671
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100672default_net_naming_scheme = get_option('default-net-naming-scheme')
673conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
674
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900676if time_epoch == -1
Dimitri John Ledkov6dbf3522020-05-15 19:16:05 +0100677 source_date_epoch = run_command('sh', ['-c', 'echo "$SOURCE_DATE_EPOCH"']).stdout().strip()
678 if source_date_epoch != ''
679 time_epoch = source_date_epoch.to_int()
680 else
681 NEWS = files('NEWS')
682 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
683 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400684endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685conf.set('TIME_EPOCH', time_epoch)
686
687system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900688if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400689 system_uid_max = run_command(
690 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800691 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
692 '/etc/login.defs').stdout().strip()
693 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900694 system_uid_max = 999
695 else
696 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800697 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400699conf.set('SYSTEM_UID_MAX', system_uid_max)
700substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900703if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400704 system_gid_max = run_command(
705 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800706 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
707 '/etc/login.defs').stdout().strip()
708 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900709 system_gid_max = 999
710 else
711 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800712 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400713endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714conf.set('SYSTEM_GID_MAX', system_gid_max)
715substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400716
Yu Watanabeac093402018-05-10 16:04:16 +0900717dynamic_uid_min = get_option('dynamic-uid-min')
718dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100719conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
720conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
721substs.set('dynamicuidmin', dynamic_uid_min)
722substs.set('dynamicuidmax', dynamic_uid_max)
723
Yu Watanabeac093402018-05-10 16:04:16 +0900724container_uid_base_min = get_option('container-uid-base-min')
725container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100726conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
727conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
728substs.set('containeruidbasemin', container_uid_base_min)
729substs.set('containeruidbasemax', container_uid_base_max)
730
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731nobody_user = get_option('nobody-user')
732nobody_group = get_option('nobody-group')
733
Chen Qi2484bff2018-07-23 14:53:09 +0800734if not meson.is_cross_build()
735 getent_result = run_command('getent', 'passwd', '65534')
736 if getent_result.returncode() == 0
737 name = getent_result.stdout().split(':')[0]
738 if name != nobody_user
739 warning('\n' +
740 '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) +
741 'Your build will result in an user table setup that is incompatible with the local system.')
742 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800744 id_result = run_command('id', '-u', nobody_user)
745 if id_result.returncode() == 0
746 id = id_result.stdout().to_int()
747 if id != 65534
748 warning('\n' +
749 '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) +
750 'Your build will result in an user table setup that is incompatible with the local system.')
751 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100752 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100753
Chen Qi2484bff2018-07-23 14:53:09 +0800754 getent_result = run_command('getent', 'group', '65534')
755 if getent_result.returncode() == 0
756 name = getent_result.stdout().split(':')[0]
757 if name != nobody_group
758 warning('\n' +
759 '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) +
760 'Your build will result in an group table setup that is incompatible with the local system.')
761 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100762 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800763 id_result = run_command('id', '-g', nobody_group)
764 if id_result.returncode() == 0
765 id = id_result.stdout().to_int()
766 if id != 65534
767 warning('\n' +
768 '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) +
769 'Your build will result in an group table setup that is incompatible with the local system.')
770 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100771 endif
772endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900773if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900774 warning('\n' +
775 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
776 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900777endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100778
779conf.set_quoted('NOBODY_USER_NAME', nobody_user)
780conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900781substs.set('NOBODY_USER_NAME', nobody_user)
782substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100783
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400784tty_gid = get_option('tty-gid')
785conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400786substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400787
Ikey Doherty84786b82017-12-03 12:28:23 +0000788# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900789users_gid = get_option('users-gid')
790substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000791
Yu Watanabe348b4432018-05-07 18:17:35 +0900792conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
793conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794
Michael Bieblace5e312018-07-13 23:36:13 +0200795dev_kvm_mode = get_option('dev-kvm-mode')
796substs.set('DEV_KVM_MODE', dev_kvm_mode)
797conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100798group_render_mode = get_option('group-render-mode')
799substs.set('GROUP_RENDER_MODE', group_render_mode)
800conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400802kill_user_processes = get_option('default-kill-user-processes')
803conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100804conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400805substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400807dns_servers = get_option('dns-servers')
808conf.set_quoted('DNS_SERVERS', dns_servers)
809substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400811ntp_servers = get_option('ntp-servers')
812conf.set_quoted('NTP_SERVERS', ntp_servers)
813substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814
Dave Reisner8ca9e922018-12-28 07:38:36 -0500815default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900816if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800817 if not meson.is_cross_build()
818 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
819 default_locale = run_command(choose_default_locale_sh).stdout().strip()
820 else
821 default_locale = 'C.UTF-8'
822 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900823endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500824conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
825
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
827
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200828service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700829watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
830substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200831
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400832substs.set('SUSHELL', get_option('debug-shell'))
833substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200834conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836enable_debug_hashmap = false
837enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900838enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200839foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900840 if name == 'hashmap'
841 enable_debug_hashmap = true
842 elif name == 'mmap-cache'
843 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900844 elif name == 'siphash'
845 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900846 else
847 message('unknown debug option "@0@", ignoring'.format(name))
848 endif
849endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
851conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900852conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400853
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200854conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200855conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200856
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100857default_user_path = get_option('user-path')
858if default_user_path != ''
859 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100860 default_user_path_display = default_user_path
861else
862 # meson 0.49 fails when ?: is used in .format()
863 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100864endif
865
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100866
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867#####################################################################
868
869threads = dependency('threads')
870librt = cc.find_library('rt')
871libm = cc.find_library('m')
872libdl = cc.find_library('dl')
873libcrypt = cc.find_library('crypt')
874
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400875libcap = dependency('libcap', required : false)
876if not libcap.found()
877 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
878 libcap = cc.find_library('cap')
879endif
880
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100882 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100884want_libfdisk = get_option('fdisk')
885if want_libfdisk != 'false' and not skip_deps
886 libfdisk = dependency('fdisk',
887 required : want_libfdisk == 'true')
888 have = libfdisk.found()
889else
890 have = false
891 libfdisk = []
892endif
893conf.set10('HAVE_LIBFDISK', have)
894
Lennart Poettering70a5db52019-07-04 18:35:39 +0200895want_pwquality = get_option('pwquality')
896if want_pwquality != 'false' and not skip_deps
897 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
898 have = libpwquality.found()
899else
900 have = false
901 libpwquality = []
902endif
903conf.set10('HAVE_PWQUALITY', have)
904
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000906if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400908 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000918if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libselinux = dependency('libselinux',
920 version : '>= 2.1.9',
921 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000930if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libapparmor = dependency('libapparmor',
932 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940smack_run_label = get_option('smack-run-label')
941if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943endif
944
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945want_polkit = get_option('polkit')
946install_polkit = false
947install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000948if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libpolkit = dependency('polkit-gobject-1',
952 required : false)
953 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
954 message('Old polkit detected, will install pkla files')
955 install_polkit_pkla = true
956 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400959
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400960want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000961if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400962 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400966 libacl = []
967endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400969
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000971if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000981if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000991if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libkmod = dependency('libkmod',
993 version : '>= 15',
994 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001003if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libpam = cc.find_library('pam', required : want_pam == 'true')
1005 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libpam = []
1010 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001015if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libmicrohttpd = dependency('libmicrohttpd',
1017 version : '>= 0.9.33',
1018 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025
1026want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001027if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001029 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001032
1033 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1034 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001042if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libcurl = dependency('libcurl',
1044 version : '>= 7.32.0',
1045 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052
1053want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001054want_libidn2 = get_option('libidn2')
1055if want_libidn == 'true' and want_libidn2 == 'true'
1056 error('libidn and libidn2 cannot be requested simultaneously')
1057endif
1058
Yu Watanabe1b931392019-06-29 03:13:30 +09001059if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001060 libidn = dependency('libidn2',
1061 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = libidn.found()
1063else
1064 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001065 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001068if not have and want_libidn != 'false' and not skip_deps
1069 # libidn is used for both libidn and libidn2 objects
1070 libidn = dependency('libidn',
1071 required : want_libidn == 'true')
1072 have = libidn.found()
1073else
1074 have = false
1075endif
1076conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077
1078want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001079if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libiptc = dependency('libiptc',
1081 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088
1089want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001090if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001091 libqrencode = dependency('libqrencode',
1092 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001101if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1103 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = false
1107endif
1108if not have
1109 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110 libgcrypt = []
1111 libgpg_error = []
1112endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001114
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001116if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 libgnutls = dependency('gnutls',
1118 version : '>= 3.1.4',
1119 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001123 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001127want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001128if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001129 libopenssl = dependency('openssl',
1130 version : '>= 1.1.0',
1131 required : want_openssl == 'true')
1132 have = libopenssl.found()
1133else
1134 have = false
1135 libopenssl = []
1136endif
1137conf.set10('HAVE_OPENSSL', have)
1138
Lennart Poettering839fddb2019-11-05 11:49:27 +01001139want_p11kit = get_option('p11kit')
1140if want_p11kit != 'false' and not skip_deps
1141 libp11kit = dependency('p11-kit-1',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001142 version : '>= 0.23.3',
1143 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001144 have = libp11kit.found()
1145else
1146 have = false
1147 libp11kit = []
1148endif
1149conf.set10('HAVE_P11KIT', have)
1150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001152if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libdw = dependency('libdw',
1154 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001158 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161
1162want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001163if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libz = dependency('zlib',
1165 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172
1173want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001174if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001175 libbzip2 = cc.find_library('bz2',
1176 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001180 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183
1184want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001185if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001186 libxz = dependency('liblzma',
1187 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001189else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001190 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001194
1195want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001196if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001197 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001198 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001201else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001202 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001203 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206
Norbert Langeef5924a2020-04-12 01:09:05 +02001207want_zstd = get_option('zstd')
1208if want_zstd != 'false' and not skip_deps
1209 libzstd = dependency('libzstd',
1210 required : want_zstd == 'true',
1211 version : '>= 1.4.0')
1212 have = libzstd.found()
1213else
1214 have = false
1215 libzstd = []
1216endif
1217conf.set10('HAVE_ZSTD', have)
1218
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001219want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001220if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001221 libxkbcommon = dependency('xkbcommon',
1222 version : '>= 0.3.0',
1223 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001225else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001227 libxkbcommon = []
1228endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001230
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001231want_pcre2 = get_option('pcre2')
1232if want_pcre2 != 'false'
1233 libpcre2 = dependency('libpcre2-8',
1234 required : want_pcre2 == 'true')
1235 have = libpcre2.found()
1236else
1237 have = false
1238 libpcre2 = []
1239endif
1240conf.set10('HAVE_PCRE2', have)
1241
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001243if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 libglib = dependency('glib-2.0',
1245 version : '>= 2.22.0',
1246 required : want_glib == 'true')
1247 libgobject = dependency('gobject-2.0',
1248 version : '>= 2.22.0',
1249 required : want_glib == 'true')
1250 libgio = dependency('gio-2.0',
1251 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001252 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001253else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001254 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 libglib = []
1256 libgobject = []
1257 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001258endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001259conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001260
1261want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001262if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 libdbus = dependency('dbus-1',
1264 version : '>= 1.3.2',
1265 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001266 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001267else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001268 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001269 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001270endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001271conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001272
Yu Watanabe42303dc2017-06-18 05:22:32 +09001273default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001274if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001275 default_dnssec = 'no'
1276endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001277if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001278 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1279 default_dnssec = 'no'
1280endif
1281conf.set('DEFAULT_DNSSEC_MODE',
1282 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1283substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1284
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285dns_over_tls = get_option('dns-over-tls')
1286if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001287 if dns_over_tls == 'openssl'
1288 have_gnutls = false
1289 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001290 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001291 if dns_over_tls == 'gnutls' and not have_gnutls
1292 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1293 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001294 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001295 if dns_over_tls == 'gnutls' or have_gnutls
1296 have_openssl = false
1297 else
1298 have_openssl = conf.get('HAVE_OPENSSL') == 1
1299 if dns_over_tls != 'auto' and not have_openssl
1300 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001301 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001302 endif
1303 endif
1304 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001305else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001306 have = false
1307 have_gnutls = false
1308 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001309endif
1310conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001311conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1312conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001313
Iwan Timmerc9299be2018-06-13 20:26:24 +02001314default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001315if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001316 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001317endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001318if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001319 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 +02001320 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001321endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001322conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1323 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1324substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001325
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001326default_mdns = get_option('default-mdns')
1327conf.set('DEFAULT_MDNS_MODE',
1328 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1329substs.set('DEFAULT_MDNS_MODE', default_mdns)
1330
1331default_llmnr = get_option('default-llmnr')
1332conf.set('DEFAULT_LLMNR_MODE',
1333 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1334substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1335
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001336want_repart = get_option('repart')
1337if want_repart != 'false'
1338 have = (conf.get('HAVE_OPENSSL') == 1 and
1339 conf.get('HAVE_LIBFDISK') == 1)
1340 if want_repart == 'true' and not have
1341 error('repart support was requested, but dependencies are not available')
1342 endif
1343else
1344 have = false
1345endif
1346conf.set10('ENABLE_REPART', have)
1347
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001349if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001350 have = (conf.get('HAVE_LIBCURL') == 1 and
1351 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001352 conf.get('HAVE_XZ') == 1 and
1353 conf.get('HAVE_GCRYPT') == 1)
1354 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 error('importd support was requested, but dependencies are not available')
1356 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001357else
1358 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001360conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361
Lennart Poettering70a5db52019-07-04 18:35:39 +02001362want_homed = get_option('homed')
1363if want_homed != 'false'
1364 have = (conf.get('HAVE_OPENSSL') == 1 and
1365 conf.get('HAVE_LIBFDISK') == 1 and
1366 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1367 if want_homed == 'true' and not have
1368 error('homed support was requested, but dependencies are not available')
1369 endif
1370else
1371 have = false
1372endif
1373conf.set10('ENABLE_HOMED', have)
1374
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001375have = have and conf.get('HAVE_PAM') == 1
1376conf.set10('ENABLE_PAM_HOME', have)
1377
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001379if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001380 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1381 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1383 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001384 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 # config should be installed when any of the programs are built.
1386 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1387 error('remote support was requested, but dependencies are not available')
1388 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001389 have = have_deps[0] or have_deps[1]
1390else
1391 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001393conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001395foreach term : ['utmp',
1396 'hibernate',
1397 'environment-d',
1398 'binfmt',
1399 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001400 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001401 'resolve',
1402 'logind',
1403 'hostnamed',
1404 'localed',
1405 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001406 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001407 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001408 'networkd',
1409 'timedated',
1410 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001411 'firstboot',
1412 'randomseed',
1413 'backlight',
1414 'vconsole',
1415 'quotacheck',
1416 'sysusers',
1417 'tmpfiles',
1418 'hwdb',
1419 'rfkill',
1420 'ldconfig',
1421 'efi',
1422 'tpm',
1423 'ima',
1424 'smack',
1425 'gshadow',
1426 'idn',
Norbert Langecdf7ad32020-04-08 23:59:13 +02001427 'initrd',
Yu Watanabe08540a92018-07-18 09:25:57 +09001428 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001429 'nss-systemd']
1430 have = get_option(term)
1431 name = 'ENABLE_' + term.underscorify().to_upper()
1432 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433endforeach
1434
Yu Watanabe08540a92018-07-18 09:25:57 +09001435foreach tuple : [['nss-mymachines', 'machined'],
1436 ['nss-resolve', 'resolve']]
1437 want = get_option(tuple[0])
1438 if want != 'false'
1439 have = get_option(tuple[1])
1440 if want == 'true' and not have
1441 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1442 endif
1443 else
1444 have = false
1445 endif
1446 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1447 conf.set10(name, have)
1448endforeach
1449
1450enable_nss = false
1451foreach term : ['ENABLE_NSS_MYHOSTNAME',
1452 'ENABLE_NSS_MYMACHINES',
1453 'ENABLE_NSS_RESOLVE',
1454 'ENABLE_NSS_SYSTEMD']
1455 if conf.get(term) == 1
1456 enable_nss = true
1457 endif
1458endforeach
1459conf.set10('ENABLE_NSS', enable_nss)
1460
Yu Watanabe348b4432018-05-07 18:17:35 +09001461conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001462
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001463tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001464fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001465
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001466conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001467
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468#####################################################################
1469
1470if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001471 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001472
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001473 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001474 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001475 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 elif efi_arch == 'x86_64'
1477 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001478 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 elif efi_arch == 'arm'
1480 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001481 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 elif efi_arch == 'aarch64'
1483 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001484 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 else
1486 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001487 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001490 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001492
Yu Watanabeac093402018-05-10 16:04:16 +09001493 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001494else
1495 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001497conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498
1499#####################################################################
1500
1501config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 output : 'config.h',
1503 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504
Yu Watanabe348b4432018-05-07 18:17:35 +09001505meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1506
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001508 'src/boot',
Lennart Poetteringc76dd732020-05-05 09:57:04 +02001509 'src/home',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510 'src/shared',
1511 'src/systemd',
1512 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001513 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001514 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515 'src/resolve',
1516 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001517 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518 'src/login',
1519 'src/udev',
1520 'src/libudev',
1521 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001522 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523 'src/libsystemd/sd-bus',
1524 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001525 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001526 'src/libsystemd/sd-hwdb',
1527 'src/libsystemd/sd-id128',
1528 'src/libsystemd/sd-netlink',
1529 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001530 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001532 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533
1534add_project_arguments('-include', 'config.h', language : 'c')
1535
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001536generate_gperfs = find_program('tools/generate-gperfs.py')
1537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538subdir('po')
1539subdir('catalog')
1540subdir('src/systemd')
1541subdir('src/basic')
1542subdir('src/libsystemd')
1543subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001546
1547libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 'journal-core',
1549 libjournal_core_sources,
1550 journald_gperf_c,
1551 include_directories : includes,
1552 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553
Davide Cavalca1485aac2019-02-27 11:19:07 -05001554libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001557 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001558 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 include_directories : includes,
1560 link_args : ['-shared',
1561 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001562 link_with : [libbasic,
1563 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001564 link_whole : [libsystemd_static,
1565 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 dependencies : [threads,
1567 librt,
1568 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001569 libzstd,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 liblz4],
1571 link_depends : libsystemd_sym,
1572 install : true,
1573 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001574
Davide Cavalca70848ec2018-04-09 02:43:35 -07001575static_libsystemd = get_option('static-libsystemd')
1576static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1577
1578install_libsystemd_static = static_library(
1579 'systemd',
1580 libsystemd_sources,
1581 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001582 basic_sources,
1583 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001584 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001585 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001586 build_by_default : static_libsystemd != 'false',
1587 install : static_libsystemd != 'false',
1588 install_dir : rootlibdir,
1589 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1590 dependencies : [threads,
1591 librt,
1592 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02001593 libzstd,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001594 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001595 libcap,
1596 libblkid,
1597 libmount,
1598 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001599 libgcrypt],
1600 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1601
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001602# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001603make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1604
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605############################################################
1606
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001607# binaries that have --help and are intended for use by humans,
1608# usually, but not always, installed in /bin.
1609public_programs = []
1610
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611subdir('src/libudev')
1612subdir('src/shared')
1613subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001614subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615subdir('src/udev')
1616subdir('src/network')
1617
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001618subdir('src/analyze')
1619subdir('src/journal-remote')
1620subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001621subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001622subdir('src/hostname')
1623subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001624subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001625subdir('src/kernel-install')
1626subdir('src/locale')
1627subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001628subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001629subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001630subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001631subdir('src/nspawn')
1632subdir('src/resolve')
1633subdir('src/timedate')
1634subdir('src/timesync')
1635subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001636subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001637
1638subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001639subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001640subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001641subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001642
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001643############################################################
1644
1645# only static linking apart from libdl, to make sure that the
1646# module is linked to all libraries that it uses.
1647test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 'test-dlopen',
1649 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001650 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 include_directories : includes,
1652 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001653 dependencies : [libdl],
1654 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001655
Yu Watanabe08540a92018-07-18 09:25:57 +09001656foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001657 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001658 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1659 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001660
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001661 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 if condition
1663 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001664
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001666 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001667
Lennart Poettering1684c562019-07-04 18:31:11 +02001668 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1669 if tuple.length() > 2
1670 sources += tuple[2].split()
1671 endif
1672
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 nss = shared_library(
1674 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001675 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001676 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 version : '2',
1678 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001679 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1680 link_args : ['-Wl,-z,nodelete',
1681 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001682 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001683 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001684 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001685 libbasic],
1686 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001687 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001688 link_depends : sym,
1689 install : true,
1690 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001691
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 # We cannot use shared_module because it does not support version suffix.
1693 # Unfortunately shared_library insists on creating the symlink…
1694 meson.add_install_script('sh', '-c',
1695 'rm $DESTDIR@0@/libnss_@1@.so'
1696 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001697
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001698 if want_tests != 'false'
1699 test('dlopen-nss_' + module,
1700 test_dlopen,
1701 # path to dlopen must include a slash
1702 args : nss.full_path())
1703 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001705endforeach
1706
1707############################################################
1708
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001709executable(
1710 'systemd',
1711 systemd_sources,
1712 include_directories : includes,
1713 link_with : [libcore,
1714 libshared],
1715 dependencies : [versiondep,
1716 threads,
1717 librt,
1718 libseccomp,
1719 libselinux,
1720 libmount,
1721 libblkid],
1722 install_rpath : rootlibexecdir,
1723 install : true,
1724 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001726meson.add_install_script(meson_make_symlink,
1727 join_paths(rootlibexecdir, 'systemd'),
1728 join_paths(rootsbindir, 'init'))
1729
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001730public_programs += executable(
1731 'systemd-analyze',
1732 systemd_analyze_sources,
1733 include_directories : includes,
1734 link_with : [libcore,
1735 libshared],
1736 dependencies : [versiondep,
1737 threads,
1738 librt,
1739 libseccomp,
1740 libselinux,
1741 libmount,
1742 libblkid],
1743 install_rpath : rootlibexecdir,
1744 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001746executable(
1747 'systemd-journald',
1748 systemd_journald_sources,
1749 include_directories : includes,
1750 link_with : [libjournal_core,
1751 libshared],
1752 dependencies : [threads,
1753 libxz,
1754 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001755 libselinux,
1756 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001761public_programs += executable(
1762 'systemd-cat',
1763 systemd_cat_sources,
1764 include_directories : includes,
1765 link_with : [libjournal_core,
1766 libshared],
1767 dependencies : [threads],
1768 install_rpath : rootlibexecdir,
1769 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001771public_programs += executable(
1772 'journalctl',
1773 journalctl_sources,
1774 include_directories : includes,
1775 link_with : [libshared],
1776 dependencies : [threads,
1777 libqrencode,
1778 libxz,
1779 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001780 libpcre2,
1781 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001782 install_rpath : rootlibexecdir,
1783 install : true,
1784 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001785
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001786executable(
1787 'systemd-getty-generator',
1788 'src/getty-generator/getty-generator.c',
1789 include_directories : includes,
1790 link_with : [libshared],
1791 install_rpath : rootlibexecdir,
1792 install : true,
1793 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001795executable(
1796 'systemd-debug-generator',
1797 'src/debug-generator/debug-generator.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 install_rpath : rootlibexecdir,
1801 install : true,
1802 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001804executable(
1805 'systemd-run-generator',
1806 'src/run-generator/run-generator.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001812
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001813executable(
1814 'systemd-fstab-generator',
1815 'src/fstab-generator/fstab-generator.c',
1816 include_directories : includes,
1817 link_with : [libcore_shared,
1818 libshared],
1819 install_rpath : rootlibexecdir,
1820 install : true,
1821 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001823if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001824 executable(
1825 '30-systemd-environment-d-generator',
1826 'src/environment-d-generator/environment-d-generator.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001832
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 meson.add_install_script(meson_make_symlink,
1834 join_paths(sysconfdir, 'environment'),
1835 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836endif
1837
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001838if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001839 executable(
1840 'systemd-hibernate-resume-generator',
1841 'src/hibernate-resume/hibernate-resume-generator.c',
1842 include_directories : includes,
1843 link_with : [libshared],
1844 install_rpath : rootlibexecdir,
1845 install : true,
1846 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001847
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001848 executable(
1849 'systemd-hibernate-resume',
1850 'src/hibernate-resume/hibernate-resume.c',
1851 include_directories : includes,
1852 link_with : [libshared],
1853 install_rpath : rootlibexecdir,
1854 install : true,
1855 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856endif
1857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001858if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001859 executable(
1860 'systemd-gpt-auto-generator',
1861 'src/gpt-auto-generator/gpt-auto-generator.c',
1862 'src/shared/blkid-util.h',
1863 include_directories : includes,
1864 link_with : [libshared],
1865 dependencies : libblkid,
1866 install_rpath : rootlibexecdir,
1867 install : true,
1868 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001870 public_programs += executable(
1871 'systemd-dissect',
1872 'src/dissect/dissect.c',
1873 include_directories : includes,
1874 link_with : [libshared],
1875 install_rpath : rootlibexecdir,
1876 install : true,
1877 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878endif
1879
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001880if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001881 executable(
1882 'systemd-resolved',
1883 systemd_resolved_sources,
1884 include_directories : includes,
1885 link_with : [libshared,
1886 libbasic_gcrypt,
1887 libsystemd_resolve_core],
1888 dependencies : systemd_resolved_dependencies,
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001893 public_programs += executable(
1894 'resolvectl',
1895 resolvectl_sources,
1896 include_directories : includes,
1897 link_with : [libshared,
1898 libbasic_gcrypt,
1899 libsystemd_resolve_core],
1900 dependencies : [threads,
1901 libgpg_error,
1902 libm,
1903 libidn],
1904 install_rpath : rootlibexecdir,
1905 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001906
1907 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001908 join_paths(bindir, 'resolvectl'),
1909 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001910
1911 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001912 join_paths(bindir, 'resolvectl'),
1913 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914endif
1915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001916if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001917 executable(
1918 'systemd-logind',
1919 systemd_logind_sources,
1920 include_directories : includes,
1921 link_with : [liblogind_core,
1922 libshared],
1923 dependencies : [threads,
1924 libacl],
1925 install_rpath : rootlibexecdir,
1926 install : true,
1927 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001929 public_programs += executable(
1930 'loginctl',
1931 loginctl_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 dependencies : [threads,
1935 liblz4,
Norbert Langeef5924a2020-04-12 01:09:05 +02001936 libxz,
1937 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001942 public_programs += executable(
1943 'systemd-inhibit',
1944 'src/login/inhibit.c',
1945 include_directories : includes,
1946 link_with : [libshared],
1947 install_rpath : rootlibexecdir,
1948 install : true,
1949 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001950
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001951 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001952 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 pam_systemd = shared_library(
1954 'pam_systemd',
1955 pam_systemd_c,
1956 name_prefix : '',
1957 include_directories : includes,
1958 link_args : ['-shared',
1959 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001960 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 libshared_static],
1962 dependencies : [threads,
1963 libpam,
1964 libpam_misc],
1965 link_depends : pam_systemd_sym,
1966 install : true,
1967 install_dir : pamlibdir)
1968
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001969 if want_tests != 'false'
1970 test('dlopen-pam_systemd',
1971 test_dlopen,
1972 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001973 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001974 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001977 executable(
1978 'systemd-user-runtime-dir',
1979 user_runtime_dir_sources,
1980 include_directories : includes,
1981 link_with : [libshared],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001985endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001988 executable(
1989 'systemd-user-sessions',
1990 'src/user-sessions/user-sessions.c',
1991 include_directories : includes,
1992 link_with : [libshared],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001998if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001999 public_programs += executable(
2000 'bootctl',
2001 'src/boot/bootctl.c',
2002 include_directories : includes,
2003 link_with : [libshared],
2004 dependencies : [libblkid],
2005 install_rpath : rootlibexecdir,
2006 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02002007
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002008 public_programs += executable(
2009 'systemd-bless-boot',
2010 'src/boot/bless-boot.c',
2011 include_directories : includes,
2012 link_with : [libshared],
2013 dependencies : [libblkid],
2014 install_rpath : rootlibexecdir,
2015 install : true,
2016 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02002017
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002018 executable(
2019 'systemd-bless-boot-generator',
2020 'src/boot/bless-boot-generator.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026endif
2027
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002028executable(
2029 'systemd-boot-check-no-failures',
2030 'src/boot/boot-check-no-failures.c',
2031 include_directories : includes,
2032 link_with : [libshared],
2033 dependencies : [libblkid],
2034 install_rpath : rootlibexecdir,
2035 install : true,
2036 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002037
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002038public_programs += executable(
2039 'systemd-socket-activate',
2040 'src/activate/activate.c',
2041 include_directories : includes,
2042 link_with : [libshared],
2043 dependencies : [threads],
2044 install_rpath : rootlibexecdir,
2045 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002046
2047if get_option('link-systemctl-shared')
2048 systemctl_link_with = [libshared]
2049else
2050 systemctl_link_with = [libsystemd_static,
2051 libshared_static,
2052 libjournal_client,
2053 libbasic_gcrypt]
2054endif
2055
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002056public_programs += executable(
2057 'systemctl',
2058 'src/systemctl/systemctl.c',
2059 'src/systemctl/sysv-compat.h',
2060 'src/systemctl/sysv-compat.c',
2061 include_directories : includes,
2062 link_with : systemctl_link_with,
2063 dependencies : [threads,
2064 libcap,
2065 libselinux,
2066 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002067 liblz4,
2068 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002069 install_rpath : rootlibexecdir,
2070 install : true,
2071 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072
Lennart Poettering61d05782018-04-16 21:41:40 +02002073if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002074 executable(
2075 'systemd-portabled',
2076 systemd_portabled_sources,
2077 include_directories : includes,
2078 link_with : [libshared],
2079 dependencies : [threads],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002083
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002084 public_programs += executable(
2085 'portablectl',
2086 'src/portable/portablectl.c',
2087 include_directories : includes,
2088 link_with : [libshared],
2089 dependencies : [threads],
2090 install_rpath : rootlibexecdir,
2091 install : true,
2092 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002093endif
2094
Lennart Poetteringd093b622019-07-04 18:33:30 +02002095if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002096 executable(
2097 'systemd-userwork',
2098 systemd_userwork_sources,
2099 include_directories : includes,
2100 link_with : [libshared],
2101 dependencies : [threads],
2102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002105
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002106 executable(
2107 'systemd-userdbd',
2108 systemd_userdbd_sources,
2109 include_directories : includes,
2110 link_with : [libshared],
2111 dependencies : [threads],
2112 install_rpath : rootlibexecdir,
2113 install : true,
2114 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002115
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002116 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002117 'userdbctl',
2118 userdbctl_sources,
2119 include_directories : includes,
2120 link_with : [libshared],
2121 dependencies : [threads],
2122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002125endif
2126
Lennart Poettering70a5db52019-07-04 18:35:39 +02002127if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002128 executable(
2129 'systemd-homework',
2130 systemd_homework_sources,
2131 include_directories : includes,
2132 link_with : [libshared],
2133 dependencies : [threads,
2134 libcryptsetup,
2135 libblkid,
2136 libcrypt,
2137 libopenssl,
2138 libfdisk,
2139 libp11kit],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002143
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002144 executable(
2145 'systemd-homed',
2146 systemd_homed_sources,
2147 include_directories : includes,
2148 link_with : [libshared],
2149 dependencies : [threads,
2150 libcrypt,
2151 libopenssl,
2152 libpwquality],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002156
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002157 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002158 'homectl',
2159 homectl_sources,
2160 include_directories : includes,
2161 link_with : [libshared],
2162 dependencies : [threads,
2163 libcrypt,
2164 libopenssl,
2165 libp11kit,
2166 libpwquality],
2167 install_rpath : rootlibexecdir,
2168 install : true,
2169 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002170
2171 if conf.get('HAVE_PAM') == 1
2172 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2173 pam_systemd = shared_library(
2174 'pam_systemd_home',
2175 pam_systemd_home_c,
2176 name_prefix : '',
2177 include_directories : includes,
2178 link_args : ['-shared',
2179 '-Wl,--version-script=' + version_script_arg],
2180 link_with : [libsystemd_static,
2181 libshared_static],
2182 dependencies : [threads,
2183 libpam,
2184 libpam_misc,
2185 libcrypt],
2186 link_depends : pam_systemd_home_sym,
2187 install : true,
2188 install_dir : pamlibdir)
2189 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002190endif
2191
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002192foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2193 meson.add_install_script(meson_make_symlink,
2194 join_paths(rootbindir, 'systemctl'),
2195 join_paths(rootsbindir, alias))
2196endforeach
2197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002199 executable(
2200 'systemd-backlight',
2201 'src/backlight/backlight.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207endif
2208
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002209if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002210 executable(
2211 'systemd-rfkill',
2212 'src/rfkill/rfkill.c',
2213 include_directories : includes,
2214 link_with : [libshared],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218endif
2219
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002220executable(
2221 'systemd-system-update-generator',
2222 'src/system-update-generator/system-update-generator.c',
2223 include_directories : includes,
2224 link_with : [libshared],
2225 install_rpath : rootlibexecdir,
2226 install : true,
2227 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002228
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002229if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002230 systemd_cryptsetup_sources = files('''
Lennart Poettering08669702019-08-22 10:21:11 +02002231 src/cryptsetup/cryptsetup-pkcs11.h
Lennart Poettering23769fb2020-04-29 14:50:38 +02002232 src/cryptsetup/cryptsetup-util.c
2233 src/cryptsetup/cryptsetup-util.h
2234 src/cryptsetup/cryptsetup.c
Lennart Poettering08669702019-08-22 10:21:11 +02002235'''.split())
2236
2237 if conf.get('HAVE_P11KIT') == 1
2238 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2239 endif
2240
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002241 executable(
2242 'systemd-cryptsetup',
2243 systemd_cryptsetup_sources,
2244 include_directories : includes,
2245 link_with : [libshared],
2246 dependencies : [libcryptsetup,
2247 libp11kit],
2248 install_rpath : rootlibexecdir,
2249 install : true,
2250 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002252 executable(
2253 'systemd-cryptsetup-generator',
2254 'src/cryptsetup/cryptsetup-generator.c',
2255 include_directories : includes,
2256 link_with : [libshared],
2257 dependencies : [libcryptsetup],
2258 install_rpath : rootlibexecdir,
2259 install : true,
2260 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002262 executable(
2263 'systemd-veritysetup',
2264 'src/veritysetup/veritysetup.c',
2265 include_directories : includes,
2266 link_with : [libshared],
2267 dependencies : [libcryptsetup],
2268 install_rpath : rootlibexecdir,
2269 install : true,
2270 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002272 executable(
2273 'systemd-veritysetup-generator',
2274 'src/veritysetup/veritysetup-generator.c',
2275 include_directories : includes,
2276 link_with : [libshared],
2277 dependencies : [libcryptsetup],
2278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281endif
2282
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002283if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002284 executable(
2285 'systemd-sysv-generator',
2286 'src/sysv-generator/sysv-generator.c',
2287 include_directories : includes,
2288 link_with : [libshared],
2289 install_rpath : rootlibexecdir,
2290 install : true,
2291 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002293 executable(
2294 'systemd-rc-local-generator',
2295 'src/rc-local-generator/rc-local-generator.c',
2296 include_directories : includes,
2297 link_with : [libshared],
2298 install_rpath : rootlibexecdir,
2299 install : true,
2300 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301endif
2302
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002303if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002304 executable(
2305 'systemd-hostnamed',
2306 'src/hostname/hostnamed.c',
2307 include_directories : includes,
2308 link_with : [libshared],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002312
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002313 public_programs += executable(
2314 'hostnamectl',
2315 'src/hostname/hostnamectl.c',
2316 include_directories : includes,
2317 link_with : [libshared],
2318 install_rpath : rootlibexecdir,
2319 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320endif
2321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002322if conf.get('ENABLE_LOCALED') == 1
2323 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 # logind will load libxkbcommon.so dynamically on its own
2325 deps = [libdl]
2326 else
2327 deps = []
2328 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002329
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002330 executable(
2331 'systemd-localed',
2332 systemd_localed_sources,
2333 include_directories : includes,
2334 link_with : [libshared],
2335 dependencies : deps,
2336 install_rpath : rootlibexecdir,
2337 install : true,
2338 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002340 public_programs += executable(
2341 'localectl',
2342 localectl_sources,
2343 include_directories : includes,
2344 link_with : [libshared],
2345 install_rpath : rootlibexecdir,
2346 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347endif
2348
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002349if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002350 executable(
2351 'systemd-timedated',
2352 'src/timedate/timedated.c',
2353 include_directories : includes,
2354 link_with : [libshared],
2355 install_rpath : rootlibexecdir,
2356 install : true,
2357 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002358endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002359
Yu Watanabe6129ec82018-05-03 18:07:43 +09002360if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002361 public_programs += executable(
2362 'timedatectl',
2363 'src/timedate/timedatectl.c',
2364 include_directories : includes,
2365 install_rpath : rootlibexecdir,
2366 link_with : [libshared],
2367 dependencies : [libm],
2368 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369endif
2370
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002371if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002372 if get_option('link-timesyncd-shared')
2373 timesyncd_link_with = [libshared]
2374 else
2375 timesyncd_link_with = [libsystemd_static,
2376 libshared_static,
2377 libjournal_client,
2378 libbasic_gcrypt]
2379 endif
2380
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002381 executable(
2382 'systemd-timesyncd',
2383 systemd_timesyncd_sources,
2384 include_directories : includes,
2385 link_with : [timesyncd_link_with],
2386 dependencies : [threads,
2387 libm],
2388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002391
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002392 executable(
2393 'systemd-time-wait-sync',
2394 'src/time-wait-sync/time-wait-sync.c',
2395 include_directories : includes,
2396 link_with : [timesyncd_link_with],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400endif
2401
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002402if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002403 executable(
2404 'systemd-machined',
2405 systemd_machined_sources,
2406 include_directories : includes,
2407 link_with : [libmachine_core,
2408 libshared],
2409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002412
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002413 public_programs += executable(
2414 'machinectl',
2415 'src/machine/machinectl.c',
2416 include_directories : includes,
2417 link_with : [libshared],
2418 dependencies : [threads,
2419 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002420 liblz4,
2421 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002422 install_rpath : rootlibexecdir,
2423 install : true,
2424 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425endif
2426
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002427if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002428 executable(
2429 'systemd-importd',
2430 systemd_importd_sources,
2431 include_directories : includes,
2432 link_with : [libshared],
2433 dependencies : [threads],
2434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002438 systemd_pull = executable(
2439 'systemd-pull',
2440 systemd_pull_sources,
2441 include_directories : includes,
2442 link_with : [libshared],
2443 dependencies : [versiondep,
2444 libcurl,
2445 libz,
2446 libbzip2,
2447 libxz,
2448 libgcrypt],
2449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002453 systemd_import = executable(
2454 'systemd-import',
2455 systemd_import_sources,
2456 include_directories : includes,
2457 link_with : [libshared],
2458 dependencies : [libcurl,
2459 libz,
2460 libbzip2,
2461 libxz],
2462 install_rpath : rootlibexecdir,
2463 install : true,
2464 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002466 systemd_import_fs = executable(
2467 'systemd-import-fs',
2468 systemd_import_fs_sources,
2469 include_directories : includes,
2470 link_with : [libshared],
2471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002474
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002475 systemd_export = executable(
2476 'systemd-export',
2477 systemd_export_sources,
2478 include_directories : includes,
2479 link_with : [libshared],
2480 dependencies : [libcurl,
2481 libz,
2482 libbzip2,
2483 libxz],
2484 install_rpath : rootlibexecdir,
2485 install : true,
2486 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002487
2488 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002489endif
2490
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002491if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002492 public_programs += executable(
2493 'systemd-journal-upload',
2494 systemd_journal_upload_sources,
2495 include_directories : includes,
2496 link_with : [libshared],
2497 dependencies : [versiondep,
2498 threads,
2499 libcurl,
2500 libgnutls,
2501 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002502 liblz4,
2503 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002504 install_rpath : rootlibexecdir,
2505 install : true,
2506 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507endif
2508
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002509if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002510 public_programs += executable(
2511 'systemd-journal-remote',
2512 systemd_journal_remote_sources,
2513 include_directories : includes,
2514 link_with : [libshared,
2515 libsystemd_journal_remote],
2516 dependencies : [threads,
2517 libmicrohttpd,
2518 libgnutls,
2519 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002520 liblz4,
2521 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002522 install_rpath : rootlibexecdir,
2523 install : true,
2524 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002525
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002526 public_programs += executable(
2527 'systemd-journal-gatewayd',
2528 systemd_journal_gatewayd_sources,
2529 include_directories : includes,
2530 link_with : [libshared],
2531 dependencies : [threads,
2532 libmicrohttpd,
2533 libgnutls,
2534 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002535 liblz4,
2536 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002537 install_rpath : rootlibexecdir,
2538 install : true,
2539 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540endif
2541
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002542if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002543 executable(
2544 'systemd-coredump',
2545 systemd_coredump_sources,
2546 include_directories : includes,
2547 link_with : [libshared],
2548 dependencies : [threads,
2549 libacl,
2550 libdw,
2551 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002552 liblz4,
2553 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002554 install_rpath : rootlibexecdir,
2555 install : true,
2556 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002557
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002558 public_programs += executable(
2559 'coredumpctl',
2560 coredumpctl_sources,
2561 include_directories : includes,
2562 link_with : [libshared],
2563 dependencies : [threads,
2564 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002565 liblz4,
2566 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002567 install_rpath : rootlibexecdir,
2568 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569endif
2570
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002571if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002572 executable(
2573 'systemd-pstore',
2574 systemd_pstore_sources,
2575 include_directories : includes,
2576 link_with : [libshared],
2577 dependencies : [threads,
2578 libacl,
2579 libdw,
2580 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002581 liblz4,
2582 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002583 install_rpath : rootlibexecdir,
2584 install : true,
2585 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002586endif
2587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002588if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002589 public_programs += executable(
2590 'systemd-binfmt',
2591 'src/binfmt/binfmt.c',
2592 include_directories : includes,
2593 link_with : [libshared],
2594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597
2598 meson.add_install_script('sh', '-c',
2599 mkdir_p.format(binfmtdir))
2600 meson.add_install_script('sh', '-c',
2601 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2602endif
2603
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002604if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002605 exe = executable(
2606 'systemd-repart',
2607 systemd_repart_sources,
2608 include_directories : includes,
2609 link_with : [libshared],
2610 dependencies : [threads,
2611 libcryptsetup,
2612 libblkid,
2613 libfdisk,
2614 libopenssl],
2615 install_rpath : rootlibexecdir,
2616 install : true,
2617 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002618
2619 if want_tests != 'false'
2620 test('test-repart',
2621 test_repart_sh,
2622 args : exe.full_path())
2623 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002624endif
2625
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002626if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002627 executable(
2628 'systemd-vconsole-setup',
2629 'src/vconsole/vconsole-setup.c',
2630 include_directories : includes,
2631 link_with : [libshared],
2632 install_rpath : rootlibexecdir,
2633 install : true,
2634 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635endif
2636
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002637if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002638 executable(
2639 'systemd-random-seed',
2640 'src/random-seed/random-seed.c',
2641 include_directories : includes,
2642 link_with : [libshared],
2643 install_rpath : rootlibexecdir,
2644 install : true,
2645 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646endif
2647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002648if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002649 executable(
2650 'systemd-firstboot',
2651 'src/firstboot/firstboot.c',
2652 include_directories : includes,
2653 link_with : [libshared],
2654 dependencies : [libcrypt],
2655 install_rpath : rootlibexecdir,
2656 install : true,
2657 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002658endif
2659
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002660executable(
2661 'systemd-remount-fs',
2662 'src/remount-fs/remount-fs.c',
2663 include_directories : includes,
2664 link_with : [libcore_shared,
2665 libshared],
2666 install_rpath : rootlibexecdir,
2667 install : true,
2668 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002670executable(
2671 'systemd-machine-id-setup',
2672 'src/machine-id-setup/machine-id-setup-main.c',
2673 include_directories : includes,
2674 link_with : [libcore_shared,
2675 libshared],
2676 install_rpath : rootlibexecdir,
2677 install : true,
2678 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002680executable(
2681 'systemd-fsck',
2682 'src/fsck/fsck.c',
2683 include_directories : includes,
2684 link_with : [libshared],
2685 install_rpath : rootlibexecdir,
2686 install : true,
2687 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002689executable('systemd-growfs',
2690 'src/partition/growfs.c',
2691 include_directories : includes,
2692 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002693 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002694 install_rpath : rootlibexecdir,
2695 install : true,
2696 install_dir : rootlibexecdir)
2697
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002698executable(
2699 'systemd-makefs',
2700 'src/partition/makefs.c',
2701 include_directories : includes,
2702 link_with : [libshared],
2703 install_rpath : rootlibexecdir,
2704 install : true,
2705 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002706
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002707executable(
2708 'systemd-sleep',
2709 'src/sleep/sleep.c',
2710 include_directories : includes,
2711 link_with : [libshared],
2712 install_rpath : rootlibexecdir,
2713 install : true,
2714 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002715
Yu Watanabed25e1272019-01-03 02:32:57 +09002716install_data('src/sleep/sleep.conf',
2717 install_dir : pkgsysconfdir)
2718
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002719public_programs += executable(
2720 'systemd-sysctl',
2721 'src/sysctl/sysctl.c',
2722 include_directories : includes,
2723 link_with : [libshared],
2724 install_rpath : rootlibexecdir,
2725 install : true,
2726 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002727
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002728executable(
2729 'systemd-ac-power',
2730 'src/ac-power/ac-power.c',
2731 include_directories : includes,
2732 link_with : [libshared],
2733 install_rpath : rootlibexecdir,
2734 install : true,
2735 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002736
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002737public_programs += executable(
2738 'systemd-detect-virt',
2739 'src/detect-virt/detect-virt.c',
2740 include_directories : includes,
2741 link_with : [libshared],
2742 install_rpath : rootlibexecdir,
2743 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002744
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002745public_programs += executable(
2746 'systemd-delta',
2747 'src/delta/delta.c',
2748 include_directories : includes,
2749 link_with : [libshared],
2750 install_rpath : rootlibexecdir,
2751 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002752
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002753public_programs += executable(
2754 'systemd-escape',
2755 'src/escape/escape.c',
2756 include_directories : includes,
2757 link_with : [libshared],
2758 install_rpath : rootlibexecdir,
2759 install : true,
2760 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002761
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002762public_programs += executable(
2763 'systemd-notify',
2764 'src/notify/notify.c',
2765 include_directories : includes,
2766 link_with : [libshared],
2767 install_rpath : rootlibexecdir,
2768 install : true,
2769 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002770
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002771executable(
2772 'systemd-volatile-root',
2773 'src/volatile-root/volatile-root.c',
2774 include_directories : includes,
2775 link_with : [libshared],
2776 install_rpath : rootlibexecdir,
Norbert Langecdf7ad32020-04-08 23:59:13 +02002777 install : conf.get('ENABLE_INITRD') == 1,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002778 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002779
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002780executable(
2781 'systemd-cgroups-agent',
2782 'src/cgroups-agent/cgroups-agent.c',
2783 include_directories : includes,
2784 link_with : [libshared],
2785 install_rpath : rootlibexecdir,
2786 install : true,
2787 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002788
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002789public_programs += executable(
2790 'systemd-id128',
2791 'src/id128/id128.c',
2792 include_directories : includes,
2793 link_with : [libshared],
2794 install_rpath : rootlibexecdir,
2795 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002796
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002797public_programs += executable(
2798 'systemd-path',
2799 'src/path/path.c',
2800 include_directories : includes,
2801 link_with : [libshared],
2802 install_rpath : rootlibexecdir,
2803 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002804
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002805public_programs += executable(
2806 'systemd-ask-password',
2807 'src/ask-password/ask-password.c',
2808 include_directories : includes,
2809 link_with : [libshared],
2810 install_rpath : rootlibexecdir,
2811 install : true,
2812 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002813
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002814executable(
2815 'systemd-reply-password',
2816 'src/reply-password/reply-password.c',
2817 include_directories : includes,
2818 link_with : [libshared],
2819 install_rpath : rootlibexecdir,
2820 install : true,
2821 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002822
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002823public_programs += executable(
2824 'systemd-tty-ask-password-agent',
2825 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2826 include_directories : includes,
2827 link_with : [libshared],
2828 install_rpath : rootlibexecdir,
2829 install : true,
2830 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002832public_programs += executable(
2833 'systemd-cgls',
2834 'src/cgls/cgls.c',
2835 include_directories : includes,
2836 link_with : [libshared],
2837 install_rpath : rootlibexecdir,
2838 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002839
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002840public_programs += executable(
2841 'systemd-cgtop',
2842 'src/cgtop/cgtop.c',
2843 include_directories : includes,
2844 link_with : [libshared],
2845 install_rpath : rootlibexecdir,
2846 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002847
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002848executable(
2849 'systemd-initctl',
2850 'src/initctl/initctl.c',
2851 include_directories : includes,
2852 link_with : [libshared],
2853 install_rpath : rootlibexecdir,
2854 install : true,
2855 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002856
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002857public_programs += executable(
2858 'systemd-mount',
2859 'src/mount/mount-tool.c',
2860 include_directories : includes,
2861 link_with : [libshared],
2862 dependencies: [libmount],
2863 install_rpath : rootlibexecdir,
2864 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002865
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002866meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002867 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002868
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002869public_programs += executable(
2870 'systemd-run',
2871 'src/run/run.c',
2872 include_directories : includes,
2873 link_with : [libshared],
2874 install_rpath : rootlibexecdir,
2875 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002876
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002877public_programs += executable(
2878 'systemd-stdio-bridge',
2879 'src/stdio-bridge/stdio-bridge.c',
2880 include_directories : includes,
2881 link_with : [libshared],
2882 dependencies : [versiondep],
2883 install_rpath : rootlibexecdir,
2884 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002885
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002886public_programs += executable(
2887 'busctl',
2888 'src/busctl/busctl.c',
2889 'src/busctl/busctl-introspect.c',
2890 'src/busctl/busctl-introspect.h',
2891 include_directories : includes,
2892 link_with : [libshared],
2893 install_rpath : rootlibexecdir,
2894 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002895
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002896if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002897 public_programs += executable(
2898 'systemd-sysusers',
2899 'src/sysusers/sysusers.c',
2900 include_directories : includes,
2901 link_with : [libshared],
2902 install_rpath : rootlibexecdir,
2903 install : true,
2904 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002905endif
2906
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002907if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002908 exe = executable(
2909 'systemd-tmpfiles',
2910 'src/tmpfiles/tmpfiles.c',
Lennart Poetteringa3451c22020-05-05 22:45:54 +02002911 'src/tmpfiles/offline-passwd.c',
2912 'src/tmpfiles/offline-passwd.h',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002913 include_directories : includes,
2914 link_with : [libshared],
2915 dependencies : [libacl],
2916 install_rpath : rootlibexecdir,
2917 install : true,
2918 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002919 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002920
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002921 if want_tests != 'false'
2922 test('test-systemd-tmpfiles',
2923 test_systemd_tmpfiles_py,
2924 # https://github.com/mesonbuild/meson/issues/2681
2925 args : exe.full_path())
2926 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002927endif
2928
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002929if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002930 public_programs += executable(
2931 'systemd-hwdb',
2932 'src/hwdb/hwdb.c',
2933 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2934 include_directories : includes,
2935 link_with : [libudev_static],
2936 install_rpath : udev_rpath,
2937 install : true,
2938 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002939endif
2940
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002941if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002942 executable(
2943 'systemd-quotacheck',
2944 'src/quotacheck/quotacheck.c',
2945 include_directories : includes,
2946 link_with : [libshared],
2947 install_rpath : rootlibexecdir,
2948 install : true,
2949 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002950endif
2951
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002952public_programs += executable(
2953 'systemd-socket-proxyd',
2954 'src/socket-proxy/socket-proxyd.c',
2955 include_directories : includes,
2956 link_with : [libshared],
2957 dependencies : [threads],
2958 install_rpath : rootlibexecdir,
2959 install : true,
2960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002961
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002962public_programs += executable(
2963 'systemd-udevd',
2964 systemd_udevd_sources,
2965 include_directories : includes,
2966 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2967 link_with : [libudev_core,
2968 libsystemd_network,
2969 libudev_static],
2970 dependencies : [versiondep,
2971 threads,
2972 libkmod,
2973 libidn,
2974 libacl,
2975 libblkid],
2976 install_rpath : udev_rpath,
2977 install : true,
2978 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002979
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002980public_programs += executable(
2981 'udevadm',
2982 udevadm_sources,
2983 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2984 include_directories : includes,
2985 link_with : [libudev_core,
2986 libsystemd_network,
2987 libudev_static],
2988 dependencies : [versiondep,
2989 threads,
2990 libkmod,
2991 libidn,
2992 libacl,
2993 libblkid],
2994 install_rpath : udev_rpath,
2995 install : true,
2996 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002997
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002998executable(
2999 'systemd-shutdown',
3000 systemd_shutdown_sources,
3001 include_directories : includes,
3002 link_with : [libcore_shared,
3003 libshared],
3004 dependencies : [libmount],
3005 install_rpath : rootlibexecdir,
3006 install : true,
3007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003008
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003009executable(
3010 'systemd-update-done',
3011 'src/update-done/update-done.c',
3012 include_directories : includes,
3013 link_with : [libshared],
3014 install_rpath : rootlibexecdir,
3015 install : true,
3016 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003017
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003018executable(
3019 'systemd-update-utmp',
3020 'src/update-utmp/update-utmp.c',
3021 include_directories : includes,
3022 link_with : [libshared],
3023 dependencies : [libaudit],
3024 install_rpath : rootlibexecdir,
3025 install : true,
3026 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003027
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003028if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003029 executable(
3030 'systemd-modules-load',
3031 'src/modules-load/modules-load.c',
3032 include_directories : includes,
3033 link_with : [libshared],
3034 dependencies : [libkmod],
3035 install_rpath : rootlibexecdir,
3036 install : true,
3037 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003038
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003039 meson.add_install_script('sh', '-c',
3040 mkdir_p.format(modulesloaddir))
3041 meson.add_install_script('sh', '-c',
3042 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003043endif
3044
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003045public_programs += executable(
3046 'systemd-nspawn',
3047 systemd_nspawn_sources,
3048 include_directories : includes,
3049 link_with : [libcore_shared,
3050 libnspawn_core,
3051 libshared],
3052 dependencies : [libblkid,
3053 libseccomp],
3054 install_rpath : rootlibexecdir,
3055 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003056
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003057if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003058 executable(
3059 'systemd-networkd',
3060 systemd_networkd_sources,
3061 include_directories : network_include_dir,
3062 link_with : [libnetworkd_core,
3063 libsystemd_network,
3064 libudev_static,
3065 networkd_link_with],
3066 dependencies : [threads],
3067 install_rpath : rootlibexecdir,
3068 install : true,
3069 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003070
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003071 executable(
3072 'systemd-networkd-wait-online',
3073 systemd_networkd_wait_online_sources,
3074 include_directories : includes,
3075 link_with : [libnetworkd_core,
3076 networkd_link_with],
3077 install_rpath : rootlibexecdir,
3078 install : true,
3079 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003080
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003081 public_programs += executable(
3082 'networkctl',
3083 networkctl_sources,
3084 include_directories : includes,
3085 link_with : [libsystemd_network,
3086 networkd_link_with],
3087 install_rpath : rootlibexecdir,
3088 install : true,
3089 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003090
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003091 exe = executable(
3092 'systemd-network-generator',
3093 network_generator_sources,
3094 include_directories : includes,
3095 link_with : [networkd_link_with],
3096 install_rpath : rootlibexecdir,
3097 install : true,
3098 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003099
3100 if want_tests != 'false'
3101 test('test-network-generator-conversion',
3102 test_network_generator_conversion_sh,
3103 # https://github.com/mesonbuild/meson/issues/2681
3104 args : exe.full_path())
3105 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003106endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003107
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003108executable(
3109 'systemd-sulogin-shell',
3110 ['src/sulogin-shell/sulogin-shell.c'],
3111 include_directories : includes,
3112 link_with : [libshared],
3113 install_rpath : rootlibexecdir,
3114 install : true,
3115 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003116
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003117############################################################
3118
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003119custom_target(
3120 'systemd-runtest.env',
3121 output : 'systemd-runtest.env',
3122 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003123 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003124 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003125 '} >@OUTPUT@'],
3126 build_by_default : true)
3127
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003128foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003129 sources = tuple[0]
3130 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3131 dependencies = tuple[2]
3132 condition = tuple.length() >= 4 ? tuple[3] : ''
3133 type = tuple.length() >= 5 ? tuple[4] : ''
3134 defs = tuple.length() >= 6 ? tuple[5] : []
3135 incs = tuple.length() >= 7 ? tuple[6] : includes
3136 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003137
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003138 name = sources[0].split('/')[-1].split('.')[0]
3139 if type.startswith('timeout=')
3140 timeout = type.split('=')[1].to_int()
3141 type = ''
3142 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003143
3144 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003145 exe = executable(
3146 name,
3147 sources,
3148 include_directories : incs,
3149 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003150 dependencies : [versiondep,
3151 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003152 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003153 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003154 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003155 install : install_tests,
3156 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003157
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003158 if type == 'manual'
3159 message('@0@ is a manual test'.format(name))
3160 elif type == 'unsafe' and want_tests != 'unsafe'
3161 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003162 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003163 test(name, exe,
3164 env : test_env,
3165 timeout : timeout)
3166 endif
3167 else
3168 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3169 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003170endforeach
3171
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003172exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003173 'test-libsystemd-sym',
3174 test_libsystemd_sym_c,
3175 include_directories : includes,
3176 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003177 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003178 install : install_tests,
3179 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003180if want_tests != 'false'
3181 test('test-libsystemd-sym', exe)
3182endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003183
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003184exe = executable(
3185 'test-libsystemd-static-sym',
3186 test_libsystemd_sym_c,
3187 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003188 link_with : [install_libsystemd_static],
3189 dependencies : [threads], # threads is already included in dependencies on the library,
3190 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003191 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003192 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003193 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003194if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003195 test('test-libsystemd-static-sym', exe)
3196endif
3197
3198exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003199 'test-libudev-sym',
3200 test_libudev_sym_c,
3201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003202 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003203 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003204 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003205 install : install_tests,
3206 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003207if want_tests != 'false'
3208 test('test-libudev-sym', exe)
3209endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003210
3211exe = executable(
3212 'test-libudev-static-sym',
3213 test_libudev_sym_c,
3214 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003215 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003216 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003217 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003218 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003219 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003220if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003221 test('test-libudev-static-sym', exe)
3222endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003223
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003224############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003225
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003226fuzzer_exes = []
3227
Michael Olbrich59967402018-11-11 11:27:35 +01003228if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003229 foreach tuple : fuzzers
3230 sources = tuple[0]
3231 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3232 dependencies = tuple[2]
3233 defs = tuple.length() >= 4 ? tuple[3] : []
3234 incs = tuple.length() >= 5 ? tuple[4] : includes
3235 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003236
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003237 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003238 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003239 elif want_libfuzzer
3240 if fuzzing_engine.found()
3241 dependencies += fuzzing_engine
3242 else
3243 link_args += ['-fsanitize=fuzzer']
3244 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003245 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003246 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003247 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003248
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003249 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003250
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003251 fuzzer_exes += executable(
3252 name,
3253 sources,
3254 include_directories : [incs, include_directories('src/fuzz')],
3255 link_with : link_with,
3256 dependencies : dependencies,
3257 c_args : defs,
3258 link_args: link_args,
3259 install : false)
3260 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003261endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003262
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003263run_target(
3264 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003265 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003266 command : ['true'])
3267
3268############################################################
3269
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003270make_directive_index_py = find_program('tools/make-directive-index.py')
3271make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003272xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003273hwdb_update_sh = find_program('tools/hwdb-update.sh')
3274autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003275
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003276subdir('sysctl.d')
3277subdir('sysusers.d')
3278subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003279subdir('hwdb.d')
3280subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003281subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003282subdir('network')
3283subdir('man')
3284subdir('shell-completion/bash')
3285subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003286subdir('docs/sysvinit')
3287subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003288
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003289install_subdir('factory/etc',
3290 install_dir : factorydir)
3291
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003292install_data('xorg/50-systemd-user.sh',
3293 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003294install_data('modprobe.d/systemd.conf',
3295 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003296install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003297 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003298 'NEWS',
3299 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303300 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003301 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003302 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003303 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003304 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003305 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003306 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003307 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3308 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003309
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003310meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3311meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3312
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003313############################################################
3314
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003315check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003316
3317foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003318 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003319 if want_tests != 'false'
3320 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003321 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003322 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003323 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003324endforeach
3325
3326############################################################
3327
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003328check_directives_sh = find_program('tools/check-directives.sh')
3329
3330if want_tests != 'false'
3331 test('check-directives',
3332 check_directives_sh,
3333 args : project_source_root)
3334endif
3335
3336############################################################
3337
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003338# Enable tests for all supported sanitizers
3339foreach tuple : sanitizers
3340 sanitizer = tuple[0]
3341 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003342
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003343 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003344 prev = ''
3345 foreach p : fuzz_regression_tests
3346 b = p.split('/')[-2]
3347 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003348
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003349 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003350
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003351 if name != prev
3352 if want_tests == 'false'
3353 message('Not compiling @0@ because tests is set to false'.format(name))
Frantisek Sumsalc56463f2020-05-21 16:59:40 +02003354 elif slow_tests or fuzz_tests
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003355 exe = custom_target(
3356 name,
3357 output : name,
3358 depends : build,
3359 command : [env, 'ln', '-fs',
3360 join_paths(build.full_path(), b),
3361 '@OUTPUT@'],
3362 build_by_default : true)
3363 else
Frantisek Sumsalc56463f2020-05-21 16:59:40 +02003364 message('Not compiling @0@ because slow-tests/fuzz-tests is set to false'.format(name))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003365 endif
3366 endif
3367 prev = name
3368
Frantisek Sumsalc56463f2020-05-21 16:59:40 +02003369 if want_tests != 'false' and (slow_tests or fuzz_tests)
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003370 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3371 env,
Evgeny Vereshchagin89767152020-05-20 11:33:12 +02003372 env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],
3373 timeout : 60,
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003374 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003375 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003376 endif
3377 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003378 endif
3379endforeach
3380
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003381
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003382############################################################
3383
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003384if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003385 all_files = run_command(
3386 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003387 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003388 'ls-files',
3389 ':/*.[ch]'])
3390 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003391
userwithuide85a6902017-08-09 13:41:44 +00003392 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003393 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003394 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003395 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003396 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003397 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003398 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003399endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003400
3401if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003402 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003403 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003404 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003405 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003406endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003407
3408if git.found()
3409 git_head = run_command(
3410 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003411 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003412 'rev-parse', 'HEAD']).stdout().strip()
3413 git_head_short = run_command(
3414 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003415 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003416 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3417
3418 run_target(
3419 'git-snapshot',
3420 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003421 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003422 git_head_short),
3423 '--prefix', 'systemd-@0@/'.format(git_head),
3424 'HEAD'])
3425endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003426
3427############################################################
3428
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003429check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003430run_target(
3431 'check-api-docs',
3432 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003433 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003434
3435############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003436watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003437
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003438status = [
3439 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3440
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003441 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003442 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003443 'prefix directory: @0@'.format(prefixdir),
3444 'rootprefix directory: @0@'.format(rootprefixdir),
3445 'sysconf directory: @0@'.format(sysconfdir),
3446 'include directory: @0@'.format(includedir),
3447 'lib directory: @0@'.format(libdir),
3448 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003449 'SysV init scripts: @0@'.format(sysvinit_path),
3450 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003451 'PAM modules directory: @0@'.format(pamlibdir),
3452 'PAM configuration directory: @0@'.format(pamconfdir),
3453 'RPM macros directory: @0@'.format(rpmmacrosdir),
3454 'modprobe.d directory: @0@'.format(modprobedir),
3455 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3456 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3457 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3458 'bash completions directory: @0@'.format(bashcompletiondir),
3459 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003460 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003461 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3462 get_option('debug-tty')),
3463 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003464 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003465 'maximum system UID: @0@'.format(system_uid_max),
3466 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003467 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3468 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3469 'minimum container UID base: @0@'.format(container_uid_base_min),
3470 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003471 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003472 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003473 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003474 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003475 'nobody user name: @0@'.format(nobody_user),
3476 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003477 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003478 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003479
3480 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003481 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003482 'default mDNS mode: @0@'.format(default_mdns),
3483 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003484 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003485 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003486 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003487 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003488 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003489 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003490
3491alt_dns_servers = '\n '.join(dns_servers.split(' '))
3492alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3493status += [
3494 'default DNS servers: @0@'.format(alt_dns_servers),
3495 'default NTP servers: @0@'.format(alt_ntp_servers)]
3496
3497alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3498 '@@0@'.format(time_epoch)).stdout().strip()
3499status += [
3500 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3501
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003502status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003503 'static libsystemd: @0@'.format(static_libsystemd),
3504 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003505
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003506# TODO:
3507# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3508# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3509# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3510
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003511if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003512 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003513
3514 if have_gnu_efi
3515 status += [
3516 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003517 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003518 'EFI lds: @0@'.format(efi_lds),
3519 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003520 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003521 endif
3522endif
3523
3524found = []
3525missing = []
3526
3527foreach tuple : [
3528 ['libcryptsetup'],
3529 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003530 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003531 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003532 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003533 ['AUDIT'],
3534 ['IMA'],
3535 ['AppArmor'],
3536 ['SELinux'],
3537 ['SECCOMP'],
3538 ['SMACK'],
3539 ['zlib'],
3540 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003541 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003542 ['lz4'],
3543 ['bzip2'],
3544 ['ACL'],
3545 ['gcrypt'],
3546 ['qrencode'],
3547 ['microhttpd'],
3548 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003549 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003550 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003551 ['idn'],
Norbert Langecdf7ad32020-04-08 23:59:13 +02003552 ['initrd'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003553 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003554 ['libidn'],
3555 ['libiptc'],
3556 ['elfutils'],
3557 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003558 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003559 ['vconsole'],
3560 ['quotacheck'],
3561 ['tmpfiles'],
3562 ['environment.d'],
3563 ['sysusers'],
3564 ['firstboot'],
3565 ['randomseed'],
3566 ['backlight'],
3567 ['rfkill'],
3568 ['logind'],
3569 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003570 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003571 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003572 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003573 ['importd'],
3574 ['hostnamed'],
3575 ['timedated'],
3576 ['timesyncd'],
3577 ['localed'],
3578 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003579 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003580 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3581 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003582 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003583 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003584 ['polkit'],
3585 ['legacy pkla', install_polkit_pkla],
3586 ['efi'],
3587 ['gnu-efi', have_gnu_efi],
3588 ['kmod'],
3589 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003590 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003591 ['blkid'],
3592 ['dbus'],
3593 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003594 ['nss-myhostname'],
3595 ['nss-mymachines'],
3596 ['nss-resolve'],
3597 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003598 ['hwdb'],
3599 ['tpm'],
3600 ['man pages', want_man],
3601 ['html pages', want_html],
3602 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003603 ['SysV compat'],
3604 ['utmp'],
3605 ['ldconfig'],
3606 ['hibernate'],
3607 ['adm group', get_option('adm-group')],
3608 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003609 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003610 ['debug hashmap'],
3611 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003612 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003613 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003614 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003615 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003616 ['link-udev-shared', get_option('link-udev-shared')],
3617 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003618 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003619 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003620 ['kernel-install', get_option('kernel-install')],
3621 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003622]
3623
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003624 if tuple.length() >= 2
3625 cond = tuple[1]
3626 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003627 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3628 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003629 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003630 endif
3631 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003632 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003633 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003634 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003635 endif
3636endforeach
3637
3638status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003639 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003640 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003641 '',
3642 'disabled features: @0@'.format(', '.join(missing)),
3643 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003644message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003645
3646if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003647 warning('\n' +
3648 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3649 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3650 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003651endif