blob: 53c450eb0119a57633594fa3a461ab40f5504677 [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
Norbert Lange6589a562020-04-28 23:11:55 +02002192foreach alias : (['halt', 'poweroff', 'reboot', 'shutdown'] +
2193 (conf.get('HAVE_SYSV_COMPAT') == 1 ? ['runlevel', 'telinit'] : []))
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002194 meson.add_install_script(meson_make_symlink,
2195 join_paths(rootbindir, 'systemctl'),
2196 join_paths(rootsbindir, alias))
2197endforeach
2198
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002199if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002200 executable(
2201 'systemd-backlight',
2202 'src/backlight/backlight.c',
2203 include_directories : includes,
2204 link_with : [libshared],
2205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208endif
2209
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002210if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002211 executable(
2212 'systemd-rfkill',
2213 'src/rfkill/rfkill.c',
2214 include_directories : includes,
2215 link_with : [libshared],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219endif
2220
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002221executable(
2222 'systemd-system-update-generator',
2223 'src/system-update-generator/system-update-generator.c',
2224 include_directories : includes,
2225 link_with : [libshared],
2226 install_rpath : rootlibexecdir,
2227 install : true,
2228 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002229
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002230if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002231 systemd_cryptsetup_sources = files('''
Lennart Poettering08669702019-08-22 10:21:11 +02002232 src/cryptsetup/cryptsetup-pkcs11.h
Lennart Poettering23769fb2020-04-29 14:50:38 +02002233 src/cryptsetup/cryptsetup-util.c
2234 src/cryptsetup/cryptsetup-util.h
2235 src/cryptsetup/cryptsetup.c
Lennart Poettering08669702019-08-22 10:21:11 +02002236'''.split())
2237
2238 if conf.get('HAVE_P11KIT') == 1
2239 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2240 endif
2241
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002242 executable(
2243 'systemd-cryptsetup',
2244 systemd_cryptsetup_sources,
2245 include_directories : includes,
2246 link_with : [libshared],
2247 dependencies : [libcryptsetup,
2248 libp11kit],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002253 executable(
2254 'systemd-cryptsetup-generator',
2255 'src/cryptsetup/cryptsetup-generator.c',
2256 include_directories : includes,
2257 link_with : [libshared],
2258 dependencies : [libcryptsetup],
2259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002263 executable(
2264 'systemd-veritysetup',
2265 'src/veritysetup/veritysetup.c',
2266 include_directories : includes,
2267 link_with : [libshared],
2268 dependencies : [libcryptsetup],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002273 executable(
2274 'systemd-veritysetup-generator',
2275 'src/veritysetup/veritysetup-generator.c',
2276 include_directories : includes,
2277 link_with : [libshared],
2278 dependencies : [libcryptsetup],
2279 install_rpath : rootlibexecdir,
2280 install : true,
2281 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282endif
2283
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002284if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002285 executable(
2286 'systemd-sysv-generator',
2287 'src/sysv-generator/sysv-generator.c',
2288 include_directories : includes,
2289 link_with : [libshared],
2290 install_rpath : rootlibexecdir,
2291 install : true,
2292 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002294 executable(
2295 'systemd-rc-local-generator',
2296 'src/rc-local-generator/rc-local-generator.c',
2297 include_directories : includes,
2298 link_with : [libshared],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002302endif
2303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002305 executable(
2306 'systemd-hostnamed',
2307 'src/hostname/hostnamed.c',
2308 include_directories : includes,
2309 link_with : [libshared],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002314 public_programs += executable(
2315 'hostnamectl',
2316 'src/hostname/hostnamectl.c',
2317 include_directories : includes,
2318 link_with : [libshared],
2319 install_rpath : rootlibexecdir,
2320 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_LOCALED') == 1
2324 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325 # logind will load libxkbcommon.so dynamically on its own
2326 deps = [libdl]
2327 else
2328 deps = []
2329 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002330
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002331 executable(
2332 'systemd-localed',
2333 systemd_localed_sources,
2334 include_directories : includes,
2335 link_with : [libshared],
2336 dependencies : deps,
2337 install_rpath : rootlibexecdir,
2338 install : true,
2339 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002341 public_programs += executable(
2342 'localectl',
2343 localectl_sources,
2344 include_directories : includes,
2345 link_with : [libshared],
2346 install_rpath : rootlibexecdir,
2347 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348endif
2349
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002350if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002351 executable(
2352 'systemd-timedated',
2353 'src/timedate/timedated.c',
2354 include_directories : includes,
2355 link_with : [libshared],
2356 install_rpath : rootlibexecdir,
2357 install : true,
2358 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002359endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002360
Yu Watanabe6129ec82018-05-03 18:07:43 +09002361if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002362 public_programs += executable(
2363 'timedatectl',
2364 'src/timedate/timedatectl.c',
2365 include_directories : includes,
2366 install_rpath : rootlibexecdir,
2367 link_with : [libshared],
2368 dependencies : [libm],
2369 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002370endif
2371
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002372if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002373 if get_option('link-timesyncd-shared')
2374 timesyncd_link_with = [libshared]
2375 else
2376 timesyncd_link_with = [libsystemd_static,
2377 libshared_static,
2378 libjournal_client,
2379 libbasic_gcrypt]
2380 endif
2381
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002382 executable(
2383 'systemd-timesyncd',
2384 systemd_timesyncd_sources,
2385 include_directories : includes,
2386 link_with : [timesyncd_link_with],
2387 dependencies : [threads,
2388 libm],
2389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002392
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002393 executable(
2394 'systemd-time-wait-sync',
2395 'src/time-wait-sync/time-wait-sync.c',
2396 include_directories : includes,
2397 link_with : [timesyncd_link_with],
2398 install_rpath : rootlibexecdir,
2399 install : true,
2400 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401endif
2402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002403if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002404 executable(
2405 'systemd-machined',
2406 systemd_machined_sources,
2407 include_directories : includes,
2408 link_with : [libmachine_core,
2409 libshared],
2410 install_rpath : rootlibexecdir,
2411 install : true,
2412 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002413
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002414 public_programs += executable(
2415 'machinectl',
2416 'src/machine/machinectl.c',
2417 include_directories : includes,
2418 link_with : [libshared],
2419 dependencies : [threads,
2420 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002421 liblz4,
2422 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002423 install_rpath : rootlibexecdir,
2424 install : true,
2425 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426endif
2427
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002428if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002429 executable(
2430 'systemd-importd',
2431 systemd_importd_sources,
2432 include_directories : includes,
2433 link_with : [libshared],
2434 dependencies : [threads],
2435 install_rpath : rootlibexecdir,
2436 install : true,
2437 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002439 systemd_pull = executable(
2440 'systemd-pull',
2441 systemd_pull_sources,
2442 include_directories : includes,
2443 link_with : [libshared],
2444 dependencies : [versiondep,
2445 libcurl,
2446 libz,
2447 libbzip2,
2448 libxz,
2449 libgcrypt],
2450 install_rpath : rootlibexecdir,
2451 install : true,
2452 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002454 systemd_import = executable(
2455 'systemd-import',
2456 systemd_import_sources,
2457 include_directories : includes,
2458 link_with : [libshared],
2459 dependencies : [libcurl,
2460 libz,
2461 libbzip2,
2462 libxz],
2463 install_rpath : rootlibexecdir,
2464 install : true,
2465 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002467 systemd_import_fs = executable(
2468 'systemd-import-fs',
2469 systemd_import_fs_sources,
2470 include_directories : includes,
2471 link_with : [libshared],
2472 install_rpath : rootlibexecdir,
2473 install : true,
2474 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002475
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002476 systemd_export = executable(
2477 'systemd-export',
2478 systemd_export_sources,
2479 include_directories : includes,
2480 link_with : [libshared],
2481 dependencies : [libcurl,
2482 libz,
2483 libbzip2,
2484 libxz],
2485 install_rpath : rootlibexecdir,
2486 install : true,
2487 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002488
2489 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490endif
2491
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002492if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002493 public_programs += executable(
2494 'systemd-journal-upload',
2495 systemd_journal_upload_sources,
2496 include_directories : includes,
2497 link_with : [libshared],
2498 dependencies : [versiondep,
2499 threads,
2500 libcurl,
2501 libgnutls,
2502 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002503 liblz4,
2504 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002505 install_rpath : rootlibexecdir,
2506 install : true,
2507 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508endif
2509
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002510if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002511 public_programs += executable(
2512 'systemd-journal-remote',
2513 systemd_journal_remote_sources,
2514 include_directories : includes,
2515 link_with : [libshared,
2516 libsystemd_journal_remote],
2517 dependencies : [threads,
2518 libmicrohttpd,
2519 libgnutls,
2520 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002521 liblz4,
2522 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002523 install_rpath : rootlibexecdir,
2524 install : true,
2525 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002527 public_programs += executable(
2528 'systemd-journal-gatewayd',
2529 systemd_journal_gatewayd_sources,
2530 include_directories : includes,
2531 link_with : [libshared],
2532 dependencies : [threads,
2533 libmicrohttpd,
2534 libgnutls,
2535 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002536 liblz4,
2537 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002538 install_rpath : rootlibexecdir,
2539 install : true,
2540 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541endif
2542
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002543if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002544 executable(
2545 'systemd-coredump',
2546 systemd_coredump_sources,
2547 include_directories : includes,
2548 link_with : [libshared],
2549 dependencies : [threads,
2550 libacl,
2551 libdw,
2552 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002553 liblz4,
2554 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002555 install_rpath : rootlibexecdir,
2556 install : true,
2557 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002558
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002559 public_programs += executable(
2560 'coredumpctl',
2561 coredumpctl_sources,
2562 include_directories : includes,
2563 link_with : [libshared],
2564 dependencies : [threads,
2565 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002566 liblz4,
2567 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002568 install_rpath : rootlibexecdir,
2569 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570endif
2571
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002572if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002573 executable(
2574 'systemd-pstore',
2575 systemd_pstore_sources,
2576 include_directories : includes,
2577 link_with : [libshared],
2578 dependencies : [threads,
2579 libacl,
2580 libdw,
2581 libxz,
Norbert Langeef5924a2020-04-12 01:09:05 +02002582 liblz4,
2583 libzstd],
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002584 install_rpath : rootlibexecdir,
2585 install : true,
2586 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002587endif
2588
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002589if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002590 public_programs += executable(
2591 'systemd-binfmt',
2592 'src/binfmt/binfmt.c',
2593 include_directories : includes,
2594 link_with : [libshared],
2595 install_rpath : rootlibexecdir,
2596 install : true,
2597 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002598
2599 meson.add_install_script('sh', '-c',
2600 mkdir_p.format(binfmtdir))
2601 meson.add_install_script('sh', '-c',
2602 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2603endif
2604
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002605if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002606 exe = executable(
2607 'systemd-repart',
2608 systemd_repart_sources,
2609 include_directories : includes,
2610 link_with : [libshared],
2611 dependencies : [threads,
2612 libcryptsetup,
2613 libblkid,
2614 libfdisk,
2615 libopenssl],
2616 install_rpath : rootlibexecdir,
2617 install : true,
2618 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002619
2620 if want_tests != 'false'
2621 test('test-repart',
2622 test_repart_sh,
2623 args : exe.full_path())
2624 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002625endif
2626
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002627if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002628 executable(
2629 'systemd-vconsole-setup',
2630 'src/vconsole/vconsole-setup.c',
2631 include_directories : includes,
2632 link_with : [libshared],
2633 install_rpath : rootlibexecdir,
2634 install : true,
2635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636endif
2637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002638if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002639 executable(
2640 'systemd-random-seed',
2641 'src/random-seed/random-seed.c',
2642 include_directories : includes,
2643 link_with : [libshared],
2644 install_rpath : rootlibexecdir,
2645 install : true,
2646 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002647endif
2648
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002649if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002650 executable(
2651 'systemd-firstboot',
2652 'src/firstboot/firstboot.c',
2653 include_directories : includes,
2654 link_with : [libshared],
2655 dependencies : [libcrypt],
2656 install_rpath : rootlibexecdir,
2657 install : true,
2658 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002659endif
2660
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002661executable(
2662 'systemd-remount-fs',
2663 'src/remount-fs/remount-fs.c',
2664 include_directories : includes,
2665 link_with : [libcore_shared,
2666 libshared],
2667 install_rpath : rootlibexecdir,
2668 install : true,
2669 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002670
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002671executable(
2672 'systemd-machine-id-setup',
2673 'src/machine-id-setup/machine-id-setup-main.c',
2674 include_directories : includes,
2675 link_with : [libcore_shared,
2676 libshared],
2677 install_rpath : rootlibexecdir,
2678 install : true,
2679 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002681executable(
2682 'systemd-fsck',
2683 'src/fsck/fsck.c',
2684 include_directories : includes,
2685 link_with : [libshared],
2686 install_rpath : rootlibexecdir,
2687 install : true,
2688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002690executable('systemd-growfs',
2691 'src/partition/growfs.c',
2692 include_directories : includes,
2693 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002694 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002695 install_rpath : rootlibexecdir,
2696 install : true,
2697 install_dir : rootlibexecdir)
2698
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002699executable(
2700 'systemd-makefs',
2701 'src/partition/makefs.c',
2702 include_directories : includes,
2703 link_with : [libshared],
2704 install_rpath : rootlibexecdir,
2705 install : true,
2706 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002707
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002708executable(
2709 'systemd-sleep',
2710 'src/sleep/sleep.c',
2711 include_directories : includes,
2712 link_with : [libshared],
2713 install_rpath : rootlibexecdir,
2714 install : true,
2715 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002716
Yu Watanabed25e1272019-01-03 02:32:57 +09002717install_data('src/sleep/sleep.conf',
2718 install_dir : pkgsysconfdir)
2719
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002720public_programs += executable(
2721 'systemd-sysctl',
2722 'src/sysctl/sysctl.c',
2723 include_directories : includes,
2724 link_with : [libshared],
2725 install_rpath : rootlibexecdir,
2726 install : true,
2727 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002729executable(
2730 'systemd-ac-power',
2731 'src/ac-power/ac-power.c',
2732 include_directories : includes,
2733 link_with : [libshared],
2734 install_rpath : rootlibexecdir,
2735 install : true,
2736 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002737
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002738public_programs += executable(
2739 'systemd-detect-virt',
2740 'src/detect-virt/detect-virt.c',
2741 include_directories : includes,
2742 link_with : [libshared],
2743 install_rpath : rootlibexecdir,
2744 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002745
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002746public_programs += executable(
2747 'systemd-delta',
2748 'src/delta/delta.c',
2749 include_directories : includes,
2750 link_with : [libshared],
2751 install_rpath : rootlibexecdir,
2752 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002754public_programs += executable(
2755 'systemd-escape',
2756 'src/escape/escape.c',
2757 include_directories : includes,
2758 link_with : [libshared],
2759 install_rpath : rootlibexecdir,
2760 install : true,
2761 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002762
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002763public_programs += executable(
2764 'systemd-notify',
2765 'src/notify/notify.c',
2766 include_directories : includes,
2767 link_with : [libshared],
2768 install_rpath : rootlibexecdir,
2769 install : true,
2770 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002771
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002772executable(
2773 'systemd-volatile-root',
2774 'src/volatile-root/volatile-root.c',
2775 include_directories : includes,
2776 link_with : [libshared],
2777 install_rpath : rootlibexecdir,
Norbert Langecdf7ad32020-04-08 23:59:13 +02002778 install : conf.get('ENABLE_INITRD') == 1,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002781executable(
2782 'systemd-cgroups-agent',
2783 'src/cgroups-agent/cgroups-agent.c',
2784 include_directories : includes,
2785 link_with : [libshared],
2786 install_rpath : rootlibexecdir,
2787 install : true,
2788 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002789
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002790public_programs += executable(
2791 'systemd-id128',
2792 'src/id128/id128.c',
2793 include_directories : includes,
2794 link_with : [libshared],
2795 install_rpath : rootlibexecdir,
2796 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002797
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002798public_programs += executable(
2799 'systemd-path',
2800 'src/path/path.c',
2801 include_directories : includes,
2802 link_with : [libshared],
2803 install_rpath : rootlibexecdir,
2804 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002805
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002806public_programs += executable(
2807 'systemd-ask-password',
2808 'src/ask-password/ask-password.c',
2809 include_directories : includes,
2810 link_with : [libshared],
2811 install_rpath : rootlibexecdir,
2812 install : true,
2813 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002814
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002815executable(
2816 'systemd-reply-password',
2817 'src/reply-password/reply-password.c',
2818 include_directories : includes,
2819 link_with : [libshared],
2820 install_rpath : rootlibexecdir,
2821 install : true,
2822 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002824public_programs += executable(
2825 'systemd-tty-ask-password-agent',
2826 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2827 include_directories : includes,
2828 link_with : [libshared],
2829 install_rpath : rootlibexecdir,
2830 install : true,
2831 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002832
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002833public_programs += executable(
2834 'systemd-cgls',
2835 'src/cgls/cgls.c',
2836 include_directories : includes,
2837 link_with : [libshared],
2838 install_rpath : rootlibexecdir,
2839 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002840
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002841public_programs += executable(
2842 'systemd-cgtop',
2843 'src/cgtop/cgtop.c',
2844 include_directories : includes,
2845 link_with : [libshared],
2846 install_rpath : rootlibexecdir,
2847 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002848
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002849executable(
2850 'systemd-initctl',
2851 'src/initctl/initctl.c',
2852 include_directories : includes,
2853 link_with : [libshared],
2854 install_rpath : rootlibexecdir,
Norbert Lange6589a562020-04-28 23:11:55 +02002855 install : (conf.get('HAVE_SYSV_COMPAT') == 1),
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002856 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002857
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002858public_programs += executable(
2859 'systemd-mount',
2860 'src/mount/mount-tool.c',
2861 include_directories : includes,
2862 link_with : [libshared],
2863 dependencies: [libmount],
2864 install_rpath : rootlibexecdir,
2865 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002866
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002867meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002868 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002869
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002870public_programs += executable(
2871 'systemd-run',
2872 'src/run/run.c',
2873 include_directories : includes,
2874 link_with : [libshared],
2875 install_rpath : rootlibexecdir,
2876 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002877
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002878public_programs += executable(
2879 'systemd-stdio-bridge',
2880 'src/stdio-bridge/stdio-bridge.c',
2881 include_directories : includes,
2882 link_with : [libshared],
2883 dependencies : [versiondep],
2884 install_rpath : rootlibexecdir,
2885 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002886
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002887public_programs += executable(
2888 'busctl',
2889 'src/busctl/busctl.c',
2890 'src/busctl/busctl-introspect.c',
2891 'src/busctl/busctl-introspect.h',
2892 include_directories : includes,
2893 link_with : [libshared],
2894 install_rpath : rootlibexecdir,
2895 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002896
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002897if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002898 public_programs += executable(
2899 'systemd-sysusers',
2900 'src/sysusers/sysusers.c',
2901 include_directories : includes,
2902 link_with : [libshared],
2903 install_rpath : rootlibexecdir,
2904 install : true,
2905 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906endif
2907
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002908if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002909 exe = executable(
2910 'systemd-tmpfiles',
2911 'src/tmpfiles/tmpfiles.c',
Lennart Poetteringa3451c22020-05-05 22:45:54 +02002912 'src/tmpfiles/offline-passwd.c',
2913 'src/tmpfiles/offline-passwd.h',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002914 include_directories : includes,
2915 link_with : [libshared],
2916 dependencies : [libacl],
2917 install_rpath : rootlibexecdir,
2918 install : true,
2919 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002920 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002921
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002922 if want_tests != 'false'
2923 test('test-systemd-tmpfiles',
2924 test_systemd_tmpfiles_py,
2925 # https://github.com/mesonbuild/meson/issues/2681
2926 args : exe.full_path())
2927 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002928endif
2929
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002930if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002931 public_programs += executable(
2932 'systemd-hwdb',
2933 'src/hwdb/hwdb.c',
2934 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2935 include_directories : includes,
2936 link_with : [libudev_static],
2937 install_rpath : udev_rpath,
2938 install : true,
2939 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002940endif
2941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002942if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002943 executable(
2944 'systemd-quotacheck',
2945 'src/quotacheck/quotacheck.c',
2946 include_directories : includes,
2947 link_with : [libshared],
2948 install_rpath : rootlibexecdir,
2949 install : true,
2950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951endif
2952
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002953public_programs += executable(
2954 'systemd-socket-proxyd',
2955 'src/socket-proxy/socket-proxyd.c',
2956 include_directories : includes,
2957 link_with : [libshared],
2958 dependencies : [threads],
2959 install_rpath : rootlibexecdir,
2960 install : true,
2961 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002962
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002963public_programs += executable(
2964 'systemd-udevd',
2965 systemd_udevd_sources,
2966 include_directories : includes,
2967 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2968 link_with : [libudev_core,
2969 libsystemd_network,
2970 libudev_static],
2971 dependencies : [versiondep,
2972 threads,
2973 libkmod,
2974 libidn,
2975 libacl,
2976 libblkid],
2977 install_rpath : udev_rpath,
2978 install : true,
2979 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002980
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002981public_programs += executable(
2982 'udevadm',
2983 udevadm_sources,
2984 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2985 include_directories : includes,
2986 link_with : [libudev_core,
2987 libsystemd_network,
2988 libudev_static],
2989 dependencies : [versiondep,
2990 threads,
2991 libkmod,
2992 libidn,
2993 libacl,
2994 libblkid],
2995 install_rpath : udev_rpath,
2996 install : true,
2997 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002998
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002999executable(
3000 'systemd-shutdown',
3001 systemd_shutdown_sources,
3002 include_directories : includes,
3003 link_with : [libcore_shared,
3004 libshared],
3005 dependencies : [libmount],
3006 install_rpath : rootlibexecdir,
3007 install : true,
3008 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003009
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003010executable(
3011 'systemd-update-done',
3012 'src/update-done/update-done.c',
3013 include_directories : includes,
3014 link_with : [libshared],
3015 install_rpath : rootlibexecdir,
3016 install : true,
3017 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003018
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003019executable(
3020 'systemd-update-utmp',
3021 'src/update-utmp/update-utmp.c',
3022 include_directories : includes,
3023 link_with : [libshared],
3024 dependencies : [libaudit],
3025 install_rpath : rootlibexecdir,
3026 install : true,
3027 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003028
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003029if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003030 executable(
3031 'systemd-modules-load',
3032 'src/modules-load/modules-load.c',
3033 include_directories : includes,
3034 link_with : [libshared],
3035 dependencies : [libkmod],
3036 install_rpath : rootlibexecdir,
3037 install : true,
3038 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003039
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003040 meson.add_install_script('sh', '-c',
3041 mkdir_p.format(modulesloaddir))
3042 meson.add_install_script('sh', '-c',
3043 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003044endif
3045
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003046public_programs += executable(
3047 'systemd-nspawn',
3048 systemd_nspawn_sources,
3049 include_directories : includes,
3050 link_with : [libcore_shared,
3051 libnspawn_core,
3052 libshared],
3053 dependencies : [libblkid,
3054 libseccomp],
3055 install_rpath : rootlibexecdir,
3056 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003058if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003059 executable(
3060 'systemd-networkd',
3061 systemd_networkd_sources,
3062 include_directories : network_include_dir,
3063 link_with : [libnetworkd_core,
3064 libsystemd_network,
3065 libudev_static,
3066 networkd_link_with],
3067 dependencies : [threads],
3068 install_rpath : rootlibexecdir,
3069 install : true,
3070 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003071
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003072 executable(
3073 'systemd-networkd-wait-online',
3074 systemd_networkd_wait_online_sources,
3075 include_directories : includes,
3076 link_with : [libnetworkd_core,
3077 networkd_link_with],
3078 install_rpath : rootlibexecdir,
3079 install : true,
3080 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003081
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003082 public_programs += executable(
3083 'networkctl',
3084 networkctl_sources,
3085 include_directories : includes,
3086 link_with : [libsystemd_network,
3087 networkd_link_with],
3088 install_rpath : rootlibexecdir,
3089 install : true,
3090 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003091
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003092 exe = executable(
3093 'systemd-network-generator',
3094 network_generator_sources,
3095 include_directories : includes,
3096 link_with : [networkd_link_with],
3097 install_rpath : rootlibexecdir,
3098 install : true,
3099 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003100
3101 if want_tests != 'false'
3102 test('test-network-generator-conversion',
3103 test_network_generator_conversion_sh,
3104 # https://github.com/mesonbuild/meson/issues/2681
3105 args : exe.full_path())
3106 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003107endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003108
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003109executable(
3110 'systemd-sulogin-shell',
3111 ['src/sulogin-shell/sulogin-shell.c'],
3112 include_directories : includes,
3113 link_with : [libshared],
3114 install_rpath : rootlibexecdir,
3115 install : true,
3116 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003117
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003118############################################################
3119
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003120custom_target(
3121 'systemd-runtest.env',
3122 output : 'systemd-runtest.env',
3123 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003124 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Zbigniew Jędrzejewski-Szmek81e06772020-04-24 20:12:03 +02003125 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(project_build_root, 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003126 '} >@OUTPUT@'],
3127 build_by_default : true)
3128
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003129foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003130 sources = tuple[0]
3131 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3132 dependencies = tuple[2]
3133 condition = tuple.length() >= 4 ? tuple[3] : ''
3134 type = tuple.length() >= 5 ? tuple[4] : ''
3135 defs = tuple.length() >= 6 ? tuple[5] : []
3136 incs = tuple.length() >= 7 ? tuple[6] : includes
3137 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003138
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003139 name = sources[0].split('/')[-1].split('.')[0]
3140 if type.startswith('timeout=')
3141 timeout = type.split('=')[1].to_int()
3142 type = ''
3143 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003144
3145 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003146 exe = executable(
3147 name,
3148 sources,
3149 include_directories : incs,
3150 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003151 dependencies : [versiondep,
3152 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003153 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003154 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003155 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003156 install : install_tests,
3157 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003158
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003159 if type == 'manual'
3160 message('@0@ is a manual test'.format(name))
3161 elif type == 'unsafe' and want_tests != 'unsafe'
3162 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003163 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003164 test(name, exe,
3165 env : test_env,
3166 timeout : timeout)
3167 endif
3168 else
3169 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3170 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003171endforeach
3172
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003173exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003174 'test-libsystemd-sym',
3175 test_libsystemd_sym_c,
3176 include_directories : includes,
3177 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003178 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003179 install : install_tests,
3180 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003181if want_tests != 'false'
3182 test('test-libsystemd-sym', exe)
3183endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003184
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003185exe = executable(
3186 'test-libsystemd-static-sym',
3187 test_libsystemd_sym_c,
3188 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003189 link_with : [install_libsystemd_static],
3190 dependencies : [threads], # threads is already included in dependencies on the library,
3191 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003192 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003193 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003194 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003195if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003196 test('test-libsystemd-static-sym', exe)
3197endif
3198
3199exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003200 'test-libudev-sym',
3201 test_libudev_sym_c,
3202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003203 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003204 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003205 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003206 install : install_tests,
3207 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003208if want_tests != 'false'
3209 test('test-libudev-sym', exe)
3210endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003211
3212exe = executable(
3213 'test-libudev-static-sym',
3214 test_libudev_sym_c,
3215 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003216 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003217 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003218 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003219 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003220 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003221if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003222 test('test-libudev-static-sym', exe)
3223endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003224
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003225############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003226
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003227fuzzer_exes = []
3228
Michael Olbrich59967402018-11-11 11:27:35 +01003229if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003230 foreach tuple : fuzzers
3231 sources = tuple[0]
3232 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3233 dependencies = tuple[2]
3234 defs = tuple.length() >= 4 ? tuple[3] : []
3235 incs = tuple.length() >= 5 ? tuple[4] : includes
3236 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003237
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003238 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003239 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003240 elif want_libfuzzer
3241 if fuzzing_engine.found()
3242 dependencies += fuzzing_engine
3243 else
3244 link_args += ['-fsanitize=fuzzer']
3245 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003246 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003247 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003248 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003249
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003250 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003251
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003252 fuzzer_exes += executable(
3253 name,
3254 sources,
3255 include_directories : [incs, include_directories('src/fuzz')],
3256 link_with : link_with,
3257 dependencies : dependencies,
3258 c_args : defs,
3259 link_args: link_args,
3260 install : false)
3261 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003262endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003263
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003264run_target(
3265 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003266 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003267 command : ['true'])
3268
3269############################################################
3270
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003271make_directive_index_py = find_program('tools/make-directive-index.py')
3272make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003273xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003274hwdb_update_sh = find_program('tools/hwdb-update.sh')
3275autosuspend_update_sh = find_program('tools/autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003276
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003277subdir('sysctl.d')
3278subdir('sysusers.d')
3279subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003280subdir('hwdb.d')
3281subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003282subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003283subdir('network')
3284subdir('man')
3285subdir('shell-completion/bash')
3286subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003287subdir('docs/sysvinit')
3288subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003289
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003290install_subdir('factory/etc',
3291 install_dir : factorydir)
3292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003293install_data('xorg/50-systemd-user.sh',
3294 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003295install_data('modprobe.d/systemd.conf',
3296 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003297install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003298 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003299 'NEWS',
3300 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303301 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003302 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003303 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003304 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003305 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003306 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003307 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003308 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3309 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003310
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003311meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3312meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3313
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003314############################################################
3315
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003316check_help = find_program('tools/check-help.sh')
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003317
3318foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003319 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003320 if want_tests != 'false'
3321 test('check-help-' + name,
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003322 check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003323 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003324 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003325endforeach
3326
3327############################################################
3328
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003329check_directives_sh = find_program('tools/check-directives.sh')
3330
3331if want_tests != 'false'
3332 test('check-directives',
3333 check_directives_sh,
3334 args : project_source_root)
3335endif
3336
3337############################################################
3338
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003339# Enable tests for all supported sanitizers
3340foreach tuple : sanitizers
3341 sanitizer = tuple[0]
3342 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003343
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003344 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003345 prev = ''
3346 foreach p : fuzz_regression_tests
3347 b = p.split('/')[-2]
3348 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003349
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003350 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003351
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003352 if name != prev
3353 if want_tests == 'false'
3354 message('Not compiling @0@ because tests is set to false'.format(name))
Frantisek Sumsalc56463f2020-05-21 16:59:40 +02003355 elif slow_tests or fuzz_tests
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003356 exe = custom_target(
3357 name,
3358 output : name,
3359 depends : build,
3360 command : [env, 'ln', '-fs',
3361 join_paths(build.full_path(), b),
3362 '@OUTPUT@'],
3363 build_by_default : true)
3364 else
Frantisek Sumsalc56463f2020-05-21 16:59:40 +02003365 message('Not compiling @0@ because slow-tests/fuzz-tests is set to false'.format(name))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003366 endif
3367 endif
3368 prev = name
3369
Frantisek Sumsalc56463f2020-05-21 16:59:40 +02003370 if want_tests != 'false' and (slow_tests or fuzz_tests)
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003371 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3372 env,
Evgeny Vereshchagin89767152020-05-20 11:33:12 +02003373 env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],
3374 timeout : 60,
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003375 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003376 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003377 endif
3378 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003379 endif
3380endforeach
3381
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003382
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003383############################################################
3384
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003385if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003386 all_files = run_command(
3387 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003388 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003389 'ls-files',
3390 ':/*.[ch]'])
3391 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003392
userwithuide85a6902017-08-09 13:41:44 +00003393 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003394 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003395 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003396 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003397 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003398 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003399 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003400endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003401
3402if git.found()
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003403 git_contrib_sh = find_program('tools/git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003404 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003405 'git-contrib',
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003406 command : [git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003407endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003408
3409if git.found()
3410 git_head = run_command(
3411 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003412 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003413 'rev-parse', 'HEAD']).stdout().strip()
3414 git_head_short = run_command(
3415 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003416 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003417 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3418
3419 run_target(
3420 'git-snapshot',
3421 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003422 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003423 git_head_short),
3424 '--prefix', 'systemd-@0@/'.format(git_head),
3425 'HEAD'])
3426endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003427
3428############################################################
3429
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003430check_api_docs_sh = find_program('tools/check-api-docs.sh')
Lennart Poettering51b13862017-12-20 12:51:14 +01003431run_target(
3432 'check-api-docs',
3433 depends : [man, libsystemd, libudev],
Zbigniew Jędrzejewski-Szmekdd1e33c2020-05-07 13:54:10 +02003434 command : [check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
Lennart Poettering51b13862017-12-20 12:51:14 +01003435
3436############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003437watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003438
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003439status = [
3440 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3441
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003442 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003443 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003444 'prefix directory: @0@'.format(prefixdir),
3445 'rootprefix directory: @0@'.format(rootprefixdir),
3446 'sysconf directory: @0@'.format(sysconfdir),
3447 'include directory: @0@'.format(includedir),
3448 'lib directory: @0@'.format(libdir),
3449 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003450 'SysV init scripts: @0@'.format(sysvinit_path),
3451 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003452 'PAM modules directory: @0@'.format(pamlibdir),
3453 'PAM configuration directory: @0@'.format(pamconfdir),
3454 'RPM macros directory: @0@'.format(rpmmacrosdir),
3455 'modprobe.d directory: @0@'.format(modprobedir),
3456 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3457 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3458 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3459 'bash completions directory: @0@'.format(bashcompletiondir),
3460 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003461 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003462 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3463 get_option('debug-tty')),
3464 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003465 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003466 'maximum system UID: @0@'.format(system_uid_max),
3467 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003468 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3469 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3470 'minimum container UID base: @0@'.format(container_uid_base_min),
3471 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003472 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003473 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003474 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003475 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003476 'nobody user name: @0@'.format(nobody_user),
3477 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003478 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003479 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003480
3481 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003482 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003483 'default mDNS mode: @0@'.format(default_mdns),
3484 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003485 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003486 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003487 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003488 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003489 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003490 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003491
3492alt_dns_servers = '\n '.join(dns_servers.split(' '))
3493alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3494status += [
3495 'default DNS servers: @0@'.format(alt_dns_servers),
3496 'default NTP servers: @0@'.format(alt_ntp_servers)]
3497
3498alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3499 '@@0@'.format(time_epoch)).stdout().strip()
3500status += [
3501 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3502
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003503status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003504 'static libsystemd: @0@'.format(static_libsystemd),
3505 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003506
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003507# TODO:
3508# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3509# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3510# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3511
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003512if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003513 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003514
3515 if have_gnu_efi
3516 status += [
3517 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003518 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003519 'EFI lds: @0@'.format(efi_lds),
3520 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003521 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003522 endif
3523endif
3524
3525found = []
3526missing = []
3527
3528foreach tuple : [
3529 ['libcryptsetup'],
3530 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003531 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003532 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003533 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003534 ['AUDIT'],
3535 ['IMA'],
3536 ['AppArmor'],
3537 ['SELinux'],
3538 ['SECCOMP'],
3539 ['SMACK'],
3540 ['zlib'],
3541 ['xz'],
Norbert Langeef5924a2020-04-12 01:09:05 +02003542 ['zstd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003543 ['lz4'],
3544 ['bzip2'],
3545 ['ACL'],
3546 ['gcrypt'],
3547 ['qrencode'],
3548 ['microhttpd'],
3549 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003550 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003551 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003552 ['idn'],
Norbert Langecdf7ad32020-04-08 23:59:13 +02003553 ['initrd'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003554 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003555 ['libidn'],
3556 ['libiptc'],
3557 ['elfutils'],
3558 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003559 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003560 ['vconsole'],
3561 ['quotacheck'],
3562 ['tmpfiles'],
3563 ['environment.d'],
3564 ['sysusers'],
3565 ['firstboot'],
3566 ['randomseed'],
3567 ['backlight'],
3568 ['rfkill'],
3569 ['logind'],
3570 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003571 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003572 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003573 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003574 ['importd'],
3575 ['hostnamed'],
3576 ['timedated'],
3577 ['timesyncd'],
3578 ['localed'],
3579 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003580 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003581 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3582 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003583 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003584 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003585 ['polkit'],
3586 ['legacy pkla', install_polkit_pkla],
3587 ['efi'],
3588 ['gnu-efi', have_gnu_efi],
3589 ['kmod'],
3590 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003591 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003592 ['blkid'],
3593 ['dbus'],
3594 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003595 ['nss-myhostname'],
3596 ['nss-mymachines'],
3597 ['nss-resolve'],
3598 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003599 ['hwdb'],
3600 ['tpm'],
3601 ['man pages', want_man],
3602 ['html pages', want_html],
3603 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003604 ['SysV compat'],
3605 ['utmp'],
3606 ['ldconfig'],
3607 ['hibernate'],
3608 ['adm group', get_option('adm-group')],
3609 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003610 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003611 ['debug hashmap'],
3612 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003613 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003614 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003615 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003616 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003617 ['link-udev-shared', get_option('link-udev-shared')],
3618 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003619 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003620 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003621 ['kernel-install', get_option('kernel-install')],
3622 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003623]
3624
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003625 if tuple.length() >= 2
3626 cond = tuple[1]
3627 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003628 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3629 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003630 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003631 endif
3632 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003633 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003634 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003635 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003636 endif
3637endforeach
3638
3639status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003640 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003641 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003642 '',
3643 'disabled features: @0@'.format(', '.join(missing)),
3644 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003645message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003646
3647if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003648 warning('\n' +
3649 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3650 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3651 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003652endif