blob: 28042f0ae6674cd63c4bd92a4a30342fbe68ed27 [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-Szmeka0b15b42019-06-07 14:41:36 +020035relative_source_path = run_command('realpath',
36 '--relative-to=@0@'.format(meson.current_build_dir()),
37 project_source_root).stdout().strip()
38conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050039
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020040want_ossfuzz = get_option('oss-fuzz')
41want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000042want_fuzzbuzz = get_option('fuzzbuzz')
43if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
44 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz 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
48fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020049
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040050#####################################################################
51
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040052# Try to install the git pre-commit hook
Zbigniew Jędrzejewski-Szmeke2d612a2020-03-28 09:30:51 +010053add_git_hook_sh = find_program('tools/add-git-hook.sh', required : false)
54if add_git_hook_sh.found()
55 git_hook = run_command(add_git_hook_sh)
56 if git_hook.returncode() == 0
57 message(git_hook.stdout().strip())
58 endif
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040059endif
60
61#####################################################################
62
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010063if get_option('split-usr') == 'auto'
64 split_usr = run_command('test', '-L', '/bin').returncode() != 0
65else
66 split_usr = get_option('split-usr') == 'true'
67endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010068conf.set10('HAVE_SPLIT_USR', split_usr,
69 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010070
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010071if get_option('split-bin') == 'auto'
72 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
73else
74 split_bin = get_option('split-bin') == 'true'
75endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010076conf.set10('HAVE_SPLIT_BIN', split_bin,
77 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010078
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010080# Unusual rootprefixdir values are used by some distros
81# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010082rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010083if rootprefixdir == ''
84 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010085endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010086rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087
88sysvinit_path = get_option('sysvinit-path')
89sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090090conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020091 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020093conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
94conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010095conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020096
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010097# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040098# encountered, so this should canonicalize various paths when they are
99# absolute or relative.
100prefixdir = get_option('prefix')
101if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400102 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400103endif
104bindir = join_paths(prefixdir, get_option('bindir'))
105libdir = join_paths(prefixdir, get_option('libdir'))
106sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
107includedir = join_paths(prefixdir, get_option('includedir'))
108datadir = join_paths(prefixdir, get_option('datadir'))
109localstatedir = join_paths('/', get_option('localstatedir'))
110
111rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100112rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400113rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
114
115rootlibdir = get_option('rootlibdir')
116if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400117 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400118endif
119
120# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200121pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
122pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400123polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
124polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
125polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400126xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900127rpmmacrosdir = get_option('rpmmacrosdir')
128if rpmmacrosdir != 'no'
129 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
130endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200131modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400132
133# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400134pkgdatadir = join_paths(datadir, 'systemd')
135environmentdir = join_paths(prefixdir, 'lib/environment.d')
136pkgsysconfdir = join_paths(sysconfdir, 'systemd')
137userunitdir = join_paths(prefixdir, 'lib/systemd/user')
138userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
139tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
140sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
141sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
142binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
143modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
144networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
145pkgincludedir = join_paths(includedir, 'systemd')
146systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
147usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
148systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
149userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
150systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
151systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
152systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
153systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
154udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400155udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
156udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
157catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
158kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
159factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400160bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
161testsdir = join_paths(prefixdir, 'lib/systemd/tests')
162systemdstatedir = join_paths(localstatedir, 'lib/systemd')
163catalogstatedir = join_paths(systemdstatedir, 'catalog')
164randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200165profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200166ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167
tblume75aaade2018-02-01 22:46:15 +0100168docdir = get_option('docdir')
169if docdir == ''
170 docdir = join_paths(datadir, 'doc/systemd')
171endif
172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173dbuspolicydir = get_option('dbuspolicydir')
174if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
178dbussessionservicedir = get_option('dbussessionservicedir')
179if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400180 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400181endif
182
183dbussystemservicedir = get_option('dbussystemservicedir')
184if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400185 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186endif
187
188pamlibdir = get_option('pamlibdir')
189if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400190 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191endif
192
193pamconfdir = get_option('pamconfdir')
194if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400195 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400196endif
197
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100198memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200199status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100200
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400201conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400203conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
204conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
205conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400206conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100207
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100208conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100209
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
212conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
214conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
215conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
216conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100217conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100218conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
221conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
222conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100223conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400224conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400225conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
226conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
228conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
229conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
230conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
231conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
232conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
234conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700235conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700236conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400238conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400239conf.set_quoted('LIBDIR', libdir)
240conf.set_quoted('ROOTLIBDIR', rootlibdir)
241conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
242conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400243conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
244conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200245conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400246conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
247conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
248conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
249conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200250conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200251conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200252conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100253conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200254conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100257substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100258substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400259substs.set('exec_prefix', prefixdir)
260substs.set('libdir', libdir)
261substs.set('rootlibdir', rootlibdir)
262substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100263substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400264substs.set('bindir', bindir)
265substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400266substs.set('rootlibexecdir', rootlibexecdir)
267substs.set('systemunitdir', systemunitdir)
268substs.set('userunitdir', userunitdir)
269substs.set('systempresetdir', systempresetdir)
270substs.set('userpresetdir', userpresetdir)
271substs.set('udevhwdbdir', udevhwdbdir)
272substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400273substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200274substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275substs.set('catalogdir', catalogdir)
276substs.set('tmpfilesdir', tmpfilesdir)
277substs.set('sysusersdir', sysusersdir)
278substs.set('sysctldir', sysctldir)
279substs.set('binfmtdir', binfmtdir)
280substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200281substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400282substs.set('systemgeneratordir', systemgeneratordir)
283substs.set('usergeneratordir', usergeneratordir)
284substs.set('systemenvgeneratordir', systemenvgeneratordir)
285substs.set('userenvgeneratordir', userenvgeneratordir)
286substs.set('systemshutdowndir', systemshutdowndir)
287substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400288substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400289substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400290substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
291substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
292substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100293substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200294substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200295substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200296substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400297
298#####################################################################
299
300cc = meson.get_compiler('c')
301pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400302check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100303meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400304
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200305want_tests = get_option('tests')
306slow_tests = want_tests != 'false' and get_option('slow-tests')
307install_tests = get_option('install-tests')
308
James Hilliard46e63a22018-12-27 09:16:20 +0800309if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200310 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100311 cxx = meson.get_compiler('cpp')
312 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200313else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200314 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400315endif
316
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500317if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200318 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
319 if fuzzing_engine.found()
320 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
321 elif cc.has_argument('-fsanitize=fuzzer-no-link')
322 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
323 else
324 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
325 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200326elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500327 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000328elif want_fuzzbuzz
329 fuzzing_engine = meson.get_compiler('cpp').find_library(get_option('fuzzbuzz-engine'), dirs: get_option('fuzzbuzz-engine-dir'))
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500330endif
331
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100332# Those generate many false positives, and we do not want to change the code to
333# avoid them.
334basic_disabled_warnings = [
335 '-Wno-unused-parameter',
336 '-Wno-missing-field-initializers',
337 '-Wno-unused-result',
338 '-Wno-format-signedness',
339]
340if get_option('b_ndebug') == 'true'
341 # With asserts disabled with get a bunch of warnings about variables which
342 # are used only in the asserts. This is not useful at all, so let's just silence
343 # those warnings.
344 basic_disabled_warnings += [
345 '-Wno-unused-variable',
346 '-Wno-unused-but-set-variable',
347 ]
348endif
349
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900350possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900351 '-Werror=undef',
352 '-Wlogical-op',
353 '-Wmissing-include-dirs',
354 '-Wold-style-definition',
355 '-Wpointer-arith',
356 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900357 '-Wfloat-equal',
358 '-Wsuggest-attribute=noreturn',
359 '-Werror=missing-prototypes',
360 '-Werror=implicit-function-declaration',
361 '-Werror=missing-declarations',
362 '-Werror=return-type',
363 '-Werror=incompatible-pointer-types',
364 '-Werror=format=2',
365 '-Wstrict-prototypes',
366 '-Wredundant-decls',
367 '-Wmissing-noreturn',
368 '-Wimplicit-fallthrough=5',
369 '-Wshadow',
370 '-Wendif-labels',
371 '-Wstrict-aliasing=2',
372 '-Wwrite-strings',
373 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200374 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200375 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900376 '-Wdate-time',
377 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700378
379 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100380 '-Wno-error=#warnings', # clang
381 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700382
383 # work-around for gcc 7.1 turning this on on its own.
384 '-Wno-error=nonnull',
385
386 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
387 # optimizations enabled, producing essentially false positives.
388 '-Wno-maybe-uninitialized',
389
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900390 '-ffast-math',
391 '-fno-common',
392 '-fdiagnostics-show-option',
393 '-fno-strict-aliasing',
394 '-fvisibility=hidden',
395 '-fstack-protector',
396 '-fstack-protector-strong',
397 '--param=ssp-buffer-size=4',
398]
399
400# --as-needed and --no-undefined are provided by meson by default,
401# run mesonconf to see what is enabled
402possible_link_flags = [
403 '-Wl,-z,relro',
404 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200405 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900406]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400407
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900408if cc.get_id() == 'clang'
409 possible_cc_flags += [
410 '-Wno-typedef-redefinition',
411 '-Wno-gnu-variable-sized-type-not-at-end',
412 ]
413endif
414
415if get_option('buildtype') != 'debug'
416 possible_cc_flags += [
417 '-ffunction-sections',
418 '-fdata-sections',
419 ]
420
421 possible_link_flags += '-Wl,--gc-sections'
422endif
423
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100424add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900425add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900426add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900427
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800428if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 #include <time.h>
430 #include <inttypes.h>
431 typedef uint64_t usec_t;
432 usec_t now(clockid_t clock);
433 int main(void) {
434 struct timespec now;
435 return 0;
436 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100437''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400438 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439endif
440
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100441if cxx_cmd != ''
442 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
443endif
444
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200445cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400446
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200447has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
448
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449#####################################################################
450# compilation result tests
451
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400452conf.set('_GNU_SOURCE', true)
453conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200454conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
457conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
458conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
459conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
460
461decl_headers = '''
462#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100463#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465
466foreach decl : ['char16_t',
467 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100468 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400470
471 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200472 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
473
474 if decl == 'struct statx'
475 if have
476 want_linux_stat_h = false
477 else
478 have = cc.sizeof(decl,
479 prefix : decl_headers + '#include <linux/stat.h>',
480 args : '-D_GNU_SOURCE') > 0
481 want_linux_stat_h = have
482 endif
483 endif
484
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200485 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486endforeach
487
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200488conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700489
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200491 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492endforeach
493
494foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100496 ['gettid', '''#include <sys/types.h>
497 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100498 ['pivot_root', '''#include <stdlib.h>
499 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501 #include <sys/stat.h>
502 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100504 ['renameat2', '''#include <stdio.h>
505 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506 ['kcmp', '''#include <linux/kcmp.h>'''],
507 ['keyctl', '''#include <sys/types.h>
508 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100509 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400510 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200511 ['bpf', '''#include <sys/syscall.h>
512 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100513 ['statx', '''#include <sys/types.h>
514 #include <sys/stat.h>
515 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100516 ['explicit_bzero' , '''#include <string.h>'''],
517 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100518 ['set_mempolicy', '''#include <stdlib.h>
519 #include <unistd.h>'''],
520 ['get_mempolicy', '''#include <stdlib.h>
521 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200522 ['pidfd_send_signal', '''#include <stdlib.h>
523 #include <unistd.h>
524 #include <signal.h>
525 #include <sys/wait.h>'''],
526 ['pidfd_open', '''#include <stdlib.h>
527 #include <unistd.h>
528 #include <signal.h>
529 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100530 ['rt_sigqueueinfo', '''#include <stdlib.h>
531 #include <unistd.h>
532 #include <signal.h>
533 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400534]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535
Lennart Poettering85db59b2017-12-25 12:01:14 +0100536 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200537 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538endforeach
539
Lennart Poettering85db59b2017-12-25 12:01:14 +0100540if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200541 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200542 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400543else
544 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200545 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200546 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400547endif
548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549#####################################################################
550
Davide Cavalca1485aac2019-02-27 11:19:07 -0500551vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
552 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100553 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100554 meson.project_version()]
555
Louis Taylord1084aa2019-01-21 21:45:36 +0000556version_h = vcs_tag(
557 input : 'src/version/version.h.in',
558 output : 'version.h',
559 command: vcs_tagger)
560
561versiondep = declare_dependency(sources: version_h)
562
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400565m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400566stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400567git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100568env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100569perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570
Davide Cavalca1485aac2019-02-27 11:19:07 -0500571meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400572mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400573test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
574splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400575
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
577# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500578progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580 ['kmod', '/usr/bin/kmod' ],
581 ['kexec', '/usr/sbin/kexec' ],
582 ['sulogin', '/usr/sbin/sulogin' ],
583 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
584 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
585 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
586 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200587 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588 ]
589foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 path = get_option(prog[0] + '-path')
591 if path != ''
592 message('Using @1@ for @0@'.format(prog[0], path))
593 else
594 exe = find_program(prog[0],
595 '/usr/sbin/' + prog[0],
596 '/sbin/' + prog[0],
597 required: false)
598 path = exe.found() ? exe.path() : prog[1]
599 endif
600 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
601 conf.set_quoted(name, path)
602 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603endforeach
604
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500605conf.set_quoted('TELINIT', get_option('telinit-path'))
606
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400607if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100608 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400609endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610
611############################################################
612
613gperf = find_program('gperf')
614
615gperf_test_format = '''
616#include <string.h>
617const char * in_word_set(const char *, @0@);
618@1@
619'''
620gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
621gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
622gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
623if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
627 if cc.compiles(gperf_test)
628 gperf_len_type = 'unsigned'
629 else
630 error('unable to determine gperf len type')
631 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632endif
633message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634conf.set('GPERF_LEN_TYPE', gperf_len_type,
635 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636
637############################################################
638
639if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100642foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'linux/memfd.h',
644 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200645 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646 'valgrind/memcheck.h',
647 'valgrind/valgrind.h',
648 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200650 conf.set10('HAVE_' + header.underscorify().to_upper(),
651 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endforeach
653
654############################################################
655
656conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400657conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
658gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660default_hierarchy = get_option('default-hierarchy')
661conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
662 description : 'default cgroup hierarchy as string')
663if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669endif
670
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100671default_net_naming_scheme = get_option('default-net-naming-scheme')
672conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
673
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900675if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400676 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900677 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679conf.set('TIME_EPOCH', time_epoch)
680
681system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900682if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400683 system_uid_max = run_command(
684 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800685 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
686 '/etc/login.defs').stdout().strip()
687 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900688 system_uid_max = 999
689 else
690 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800691 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693conf.set('SYSTEM_UID_MAX', system_uid_max)
694substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900697if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400698 system_gid_max = run_command(
699 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800700 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
701 '/etc/login.defs').stdout().strip()
702 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900703 system_gid_max = 999
704 else
705 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800706 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708conf.set('SYSTEM_GID_MAX', system_gid_max)
709substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710
Yu Watanabeac093402018-05-10 16:04:16 +0900711dynamic_uid_min = get_option('dynamic-uid-min')
712dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100713conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
714conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
715substs.set('dynamicuidmin', dynamic_uid_min)
716substs.set('dynamicuidmax', dynamic_uid_max)
717
Yu Watanabeac093402018-05-10 16:04:16 +0900718container_uid_base_min = get_option('container-uid-base-min')
719container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100720conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
721conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
722substs.set('containeruidbasemin', container_uid_base_min)
723substs.set('containeruidbasemax', container_uid_base_max)
724
Lennart Poetteringafde4572017-12-05 11:00:24 +0100725nobody_user = get_option('nobody-user')
726nobody_group = get_option('nobody-group')
727
Chen Qi2484bff2018-07-23 14:53:09 +0800728if not meson.is_cross_build()
729 getent_result = run_command('getent', 'passwd', '65534')
730 if getent_result.returncode() == 0
731 name = getent_result.stdout().split(':')[0]
732 if name != nobody_user
733 warning('\n' +
734 '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) +
735 'Your build will result in an user table setup that is incompatible with the local system.')
736 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100737 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800738 id_result = run_command('id', '-u', nobody_user)
739 if id_result.returncode() == 0
740 id = id_result.stdout().to_int()
741 if id != 65534
742 warning('\n' +
743 '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) +
744 'Your build will result in an user table setup that is incompatible with the local system.')
745 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100746 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100747
Chen Qi2484bff2018-07-23 14:53:09 +0800748 getent_result = run_command('getent', 'group', '65534')
749 if getent_result.returncode() == 0
750 name = getent_result.stdout().split(':')[0]
751 if name != nobody_group
752 warning('\n' +
753 '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) +
754 'Your build will result in an group table setup that is incompatible with the local system.')
755 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100756 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800757 id_result = run_command('id', '-g', nobody_group)
758 if id_result.returncode() == 0
759 id = id_result.stdout().to_int()
760 if id != 65534
761 warning('\n' +
762 '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) +
763 'Your build will result in an group table setup that is incompatible with the local system.')
764 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100765 endif
766endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900767if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900768 warning('\n' +
769 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
770 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900771endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100772
773conf.set_quoted('NOBODY_USER_NAME', nobody_user)
774conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900775substs.set('NOBODY_USER_NAME', nobody_user)
776substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100777
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778tty_gid = get_option('tty-gid')
779conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400780substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781
Ikey Doherty84786b82017-12-03 12:28:23 +0000782# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900783users_gid = get_option('users-gid')
784substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000785
Yu Watanabe348b4432018-05-07 18:17:35 +0900786conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
787conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400788
Michael Bieblace5e312018-07-13 23:36:13 +0200789dev_kvm_mode = get_option('dev-kvm-mode')
790substs.set('DEV_KVM_MODE', dev_kvm_mode)
791conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100792group_render_mode = get_option('group-render-mode')
793substs.set('GROUP_RENDER_MODE', group_render_mode)
794conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400796kill_user_processes = get_option('default-kill-user-processes')
797conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100798conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400799substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400801dns_servers = get_option('dns-servers')
802conf.set_quoted('DNS_SERVERS', dns_servers)
803substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400805ntp_servers = get_option('ntp-servers')
806conf.set_quoted('NTP_SERVERS', ntp_servers)
807substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
Dave Reisner8ca9e922018-12-28 07:38:36 -0500809default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900810if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800811 if not meson.is_cross_build()
812 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
813 default_locale = run_command(choose_default_locale_sh).stdout().strip()
814 else
815 default_locale = 'C.UTF-8'
816 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900817endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500818conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
819
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
821
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200822service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700823watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
824substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200825
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400826substs.set('SUSHELL', get_option('debug-shell'))
827substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200828conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400829
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830enable_debug_hashmap = false
831enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900832enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200833foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900834 if name == 'hashmap'
835 enable_debug_hashmap = true
836 elif name == 'mmap-cache'
837 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900838 elif name == 'siphash'
839 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900840 else
841 message('unknown debug option "@0@", ignoring'.format(name))
842 endif
843endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
845conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900846conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400847
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200848conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200849conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200850
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100851default_user_path = get_option('user-path')
852if default_user_path != ''
853 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100854 default_user_path_display = default_user_path
855else
856 # meson 0.49 fails when ?: is used in .format()
857 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100858endif
859
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861#####################################################################
862
863threads = dependency('threads')
864librt = cc.find_library('rt')
865libm = cc.find_library('m')
866libdl = cc.find_library('dl')
867libcrypt = cc.find_library('crypt')
868
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400869libcap = dependency('libcap', required : false)
870if not libcap.found()
871 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
872 libcap = cc.find_library('cap')
873endif
874
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100876 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100878want_libfdisk = get_option('fdisk')
879if want_libfdisk != 'false' and not skip_deps
880 libfdisk = dependency('fdisk',
881 required : want_libfdisk == 'true')
882 have = libfdisk.found()
883else
884 have = false
885 libfdisk = []
886endif
887conf.set10('HAVE_LIBFDISK', have)
888
Lennart Poettering70a5db52019-07-04 18:35:39 +0200889want_pwquality = get_option('pwquality')
890if want_pwquality != 'false' and not skip_deps
891 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
892 have = libpwquality.found()
893else
894 have = false
895 libpwquality = []
896endif
897conf.set10('HAVE_PWQUALITY', have)
898
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000900if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400902 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000912if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libselinux = dependency('libselinux',
914 version : '>= 2.1.9',
915 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000924if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libapparmor = dependency('libapparmor',
926 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934smack_run_label = get_option('smack-run-label')
935if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400936 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937endif
938
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400939want_polkit = get_option('polkit')
940install_polkit = false
941install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000942if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400944
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libpolkit = dependency('polkit-gobject-1',
946 required : false)
947 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
948 message('Old polkit detected, will install pkla files')
949 install_polkit_pkla = true
950 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400953
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000955if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400956 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400960 libacl = []
961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400963
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000965if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000975if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983
984want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000985if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libkmod = dependency('libkmod',
987 version : '>= 15',
988 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995
996want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000997if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libpam = cc.find_library('pam', required : want_pam == 'true')
999 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libpam = []
1004 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007
1008want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001009if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libmicrohttpd = dependency('libmicrohttpd',
1011 version : '>= 0.9.33',
1012 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019
1020want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001021if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001023 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001026
1027 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1028 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
1035want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001036if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libcurl = dependency('libcurl',
1038 version : '>= 7.32.0',
1039 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046
1047want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001048want_libidn2 = get_option('libidn2')
1049if want_libidn == 'true' and want_libidn2 == 'true'
1050 error('libidn and libidn2 cannot be requested simultaneously')
1051endif
1052
Yu Watanabe1b931392019-06-29 03:13:30 +09001053if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001054 libidn = dependency('libidn2',
1055 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libidn.found()
1057else
1058 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001059 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001062if not have and want_libidn != 'false' and not skip_deps
1063 # libidn is used for both libidn and libidn2 objects
1064 libidn = dependency('libidn',
1065 required : want_libidn == 'true')
1066 have = libidn.found()
1067else
1068 have = false
1069endif
1070conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
1072want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001073if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libiptc = dependency('libiptc',
1075 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001079 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082
1083want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001084if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libqrencode = dependency('libqrencode',
1086 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001095if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1097 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001099else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = false
1101endif
1102if not have
1103 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104 libgcrypt = []
1105 libgpg_error = []
1106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001108
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001110if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 libgnutls = dependency('gnutls',
1112 version : '>= 3.1.4',
1113 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001121want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001122if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001123 libopenssl = dependency('openssl',
1124 version : '>= 1.1.0',
1125 required : want_openssl == 'true')
1126 have = libopenssl.found()
1127else
1128 have = false
1129 libopenssl = []
1130endif
1131conf.set10('HAVE_OPENSSL', have)
1132
Lennart Poettering839fddb2019-11-05 11:49:27 +01001133want_p11kit = get_option('p11kit')
1134if want_p11kit != 'false' and not skip_deps
1135 libp11kit = dependency('p11-kit-1',
1136 version : '>= 0.23.3',
1137 required : want_p11kit == 'true')
1138 have = libp11kit.found()
1139else
1140 have = false
1141 libp11kit = []
1142endif
1143conf.set10('HAVE_P11KIT', have)
1144
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001146if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001147 libdw = dependency('libdw',
1148 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155
1156want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001157if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001158 libz = dependency('zlib',
1159 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166
1167want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001168if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 libbzip2 = cc.find_library('bz2',
1170 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001174 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001175endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001177
1178want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001179if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001180 libxz = dependency('liblzma',
1181 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001185 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001188
1189want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001190if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001191 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001192 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001193 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001197 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001198endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001199conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001201want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001202if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001203 libxkbcommon = dependency('xkbcommon',
1204 version : '>= 0.3.0',
1205 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001207else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001209 libxkbcommon = []
1210endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001212
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001213want_pcre2 = get_option('pcre2')
1214if want_pcre2 != 'false'
1215 libpcre2 = dependency('libpcre2-8',
1216 required : want_pcre2 == 'true')
1217 have = libpcre2.found()
1218else
1219 have = false
1220 libpcre2 = []
1221endif
1222conf.set10('HAVE_PCRE2', have)
1223
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001224want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001225if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 libglib = dependency('glib-2.0',
1227 version : '>= 2.22.0',
1228 required : want_glib == 'true')
1229 libgobject = dependency('gobject-2.0',
1230 version : '>= 2.22.0',
1231 required : want_glib == 'true')
1232 libgio = dependency('gio-2.0',
1233 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001234 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 libglib = []
1238 libgobject = []
1239 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001242
1243want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001244if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 libdbus = dependency('dbus-1',
1246 version : '>= 1.3.2',
1247 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001248 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001249else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001251 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001252endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001253conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001254
Yu Watanabe42303dc2017-06-18 05:22:32 +09001255default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001256if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001257 default_dnssec = 'no'
1258endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001259if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001260 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1261 default_dnssec = 'no'
1262endif
1263conf.set('DEFAULT_DNSSEC_MODE',
1264 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1265substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1266
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001267dns_over_tls = get_option('dns-over-tls')
1268if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001269 if dns_over_tls == 'openssl'
1270 have_gnutls = false
1271 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001272 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001273 if dns_over_tls == 'gnutls' and not have_gnutls
1274 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1275 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001277 if dns_over_tls == 'gnutls' or have_gnutls
1278 have_openssl = false
1279 else
1280 have_openssl = conf.get('HAVE_OPENSSL') == 1
1281 if dns_over_tls != 'auto' and not have_openssl
1282 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001283 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001284 endif
1285 endif
1286 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001287else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001288 have = false
1289 have_gnutls = false
1290 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001291endif
1292conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001293conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1294conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001295
Iwan Timmerc9299be2018-06-13 20:26:24 +02001296default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001297if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001298 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001299endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001300if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001301 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 +02001302 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001303endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001304conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1305 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1306substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001307
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001308want_repart = get_option('repart')
1309if want_repart != 'false'
1310 have = (conf.get('HAVE_OPENSSL') == 1 and
1311 conf.get('HAVE_LIBFDISK') == 1)
1312 if want_repart == 'true' and not have
1313 error('repart support was requested, but dependencies are not available')
1314 endif
1315else
1316 have = false
1317endif
1318conf.set10('ENABLE_REPART', have)
1319
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001320want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001321if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322 have = (conf.get('HAVE_LIBCURL') == 1 and
1323 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001324 conf.get('HAVE_XZ') == 1 and
1325 conf.get('HAVE_GCRYPT') == 1)
1326 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 error('importd support was requested, but dependencies are not available')
1328 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329else
1330 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001331endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001332conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333
Lennart Poettering70a5db52019-07-04 18:35:39 +02001334want_homed = get_option('homed')
1335if want_homed != 'false'
1336 have = (conf.get('HAVE_OPENSSL') == 1 and
1337 conf.get('HAVE_LIBFDISK') == 1 and
1338 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1339 if want_homed == 'true' and not have
1340 error('homed support was requested, but dependencies are not available')
1341 endif
1342else
1343 have = false
1344endif
1345conf.set10('ENABLE_HOMED', have)
1346
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001347have = have and conf.get('HAVE_PAM') == 1
1348conf.set10('ENABLE_PAM_HOME', have)
1349
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001351if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001352 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1353 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1355 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001356 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 # config should be installed when any of the programs are built.
1358 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1359 error('remote support was requested, but dependencies are not available')
1360 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001361 have = have_deps[0] or have_deps[1]
1362else
1363 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001365conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001367foreach term : ['utmp',
1368 'hibernate',
1369 'environment-d',
1370 'binfmt',
1371 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001372 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001373 'resolve',
1374 'logind',
1375 'hostnamed',
1376 'localed',
1377 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001378 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001379 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001380 'networkd',
1381 'timedated',
1382 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001383 'firstboot',
1384 'randomseed',
1385 'backlight',
1386 'vconsole',
1387 'quotacheck',
1388 'sysusers',
1389 'tmpfiles',
1390 'hwdb',
1391 'rfkill',
1392 'ldconfig',
1393 'efi',
1394 'tpm',
1395 'ima',
1396 'smack',
1397 'gshadow',
1398 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001399 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001400 'nss-systemd']
1401 have = get_option(term)
1402 name = 'ENABLE_' + term.underscorify().to_upper()
1403 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001404endforeach
1405
Yu Watanabe08540a92018-07-18 09:25:57 +09001406foreach tuple : [['nss-mymachines', 'machined'],
1407 ['nss-resolve', 'resolve']]
1408 want = get_option(tuple[0])
1409 if want != 'false'
1410 have = get_option(tuple[1])
1411 if want == 'true' and not have
1412 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1413 endif
1414 else
1415 have = false
1416 endif
1417 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1418 conf.set10(name, have)
1419endforeach
1420
1421enable_nss = false
1422foreach term : ['ENABLE_NSS_MYHOSTNAME',
1423 'ENABLE_NSS_MYMACHINES',
1424 'ENABLE_NSS_RESOLVE',
1425 'ENABLE_NSS_SYSTEMD']
1426 if conf.get(term) == 1
1427 enable_nss = true
1428 endif
1429endforeach
1430conf.set10('ENABLE_NSS', enable_nss)
1431
Yu Watanabe348b4432018-05-07 18:17:35 +09001432conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001433
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001434tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001435fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001436
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001437conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001438
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439#####################################################################
1440
1441if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001442 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001443
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001444 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001445 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001446 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 elif efi_arch == 'x86_64'
1448 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001449 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 elif efi_arch == 'arm'
1451 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001452 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001453 elif efi_arch == 'aarch64'
1454 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001455 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 else
1457 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001458 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001459 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001461 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001463
Yu Watanabeac093402018-05-10 16:04:16 +09001464 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001465else
1466 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001468conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469
1470#####################################################################
1471
1472config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 output : 'config.h',
1474 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
Yu Watanabe348b4432018-05-07 18:17:35 +09001476meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1477
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001479 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480 'src/shared',
1481 'src/systemd',
1482 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001483 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001484 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485 'src/resolve',
1486 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001487 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488 'src/login',
1489 'src/udev',
1490 'src/libudev',
1491 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001492 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493 'src/libsystemd/sd-bus',
1494 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001495 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 'src/libsystemd/sd-hwdb',
1497 'src/libsystemd/sd-id128',
1498 'src/libsystemd/sd-netlink',
1499 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001500 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001502 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503
1504add_project_arguments('-include', 'config.h', language : 'c')
1505
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001506generate_gperfs = find_program('tools/generate-gperfs.py')
1507
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508subdir('po')
1509subdir('catalog')
1510subdir('src/systemd')
1511subdir('src/basic')
1512subdir('src/libsystemd')
1513subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
1517libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 'journal-core',
1519 libjournal_core_sources,
1520 journald_gperf_c,
1521 include_directories : includes,
1522 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
Davide Cavalca1485aac2019-02-27 11:19:07 -05001524libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001527 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001528 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 include_directories : includes,
1530 link_args : ['-shared',
1531 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001532 link_with : [libbasic,
1533 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001534 link_whole : [libsystemd_static,
1535 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 dependencies : [threads,
1537 librt,
1538 libxz,
1539 liblz4],
1540 link_depends : libsystemd_sym,
1541 install : true,
1542 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543
Davide Cavalca70848ec2018-04-09 02:43:35 -07001544static_libsystemd = get_option('static-libsystemd')
1545static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1546
1547install_libsystemd_static = static_library(
1548 'systemd',
1549 libsystemd_sources,
1550 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001551 basic_sources,
1552 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001553 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001554 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001555 build_by_default : static_libsystemd != 'false',
1556 install : static_libsystemd != 'false',
1557 install_dir : rootlibdir,
1558 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1559 dependencies : [threads,
1560 librt,
1561 libxz,
1562 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001563 libcap,
1564 libblkid,
1565 libmount,
1566 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001567 libgcrypt],
1568 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1569
Mario Limonciellob61d7772019-09-09 22:49:35 +01001570#Generate autosuspend rules
1571make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1572
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001573############################################################
1574
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575# binaries that have --help and are intended for use by humans,
1576# usually, but not always, installed in /bin.
1577public_programs = []
1578
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001579subdir('src/libudev')
1580subdir('src/shared')
1581subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001582subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001583subdir('src/udev')
1584subdir('src/network')
1585
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001586subdir('src/analyze')
1587subdir('src/journal-remote')
1588subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001589subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001590subdir('src/hostname')
1591subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001592subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001593subdir('src/kernel-install')
1594subdir('src/locale')
1595subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001596subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001597subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001598subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001599subdir('src/nspawn')
1600subdir('src/resolve')
1601subdir('src/timedate')
1602subdir('src/timesync')
1603subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001604subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001605
1606subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001607subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001608subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001609subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001610
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001611############################################################
1612
1613# only static linking apart from libdl, to make sure that the
1614# module is linked to all libraries that it uses.
1615test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 'test-dlopen',
1617 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001618 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 include_directories : includes,
1620 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001621 dependencies : [libdl],
1622 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001623
Yu Watanabe08540a92018-07-18 09:25:57 +09001624foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001625 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001626 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1627 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001628
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001629 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 if condition
1631 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001632
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001634 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001635
Lennart Poettering1684c562019-07-04 18:31:11 +02001636 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1637 if tuple.length() > 2
1638 sources += tuple[2].split()
1639 endif
1640
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 nss = shared_library(
1642 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001643 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001644 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 version : '2',
1646 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001647 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1648 link_args : ['-Wl,-z,nodelete',
1649 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001650 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001651 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001652 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 libbasic],
1654 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001655 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 link_depends : sym,
1657 install : true,
1658 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001659
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 # We cannot use shared_module because it does not support version suffix.
1661 # Unfortunately shared_library insists on creating the symlink…
1662 meson.add_install_script('sh', '-c',
1663 'rm $DESTDIR@0@/libnss_@1@.so'
1664 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001665
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001666 if want_tests != 'false'
1667 test('dlopen-nss_' + module,
1668 test_dlopen,
1669 # path to dlopen must include a slash
1670 args : nss.full_path())
1671 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001673endforeach
1674
1675############################################################
1676
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001677executable('systemd',
1678 systemd_sources,
1679 include_directories : includes,
1680 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001681 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001682 dependencies : [versiondep,
1683 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684 librt,
1685 libseccomp,
1686 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001687 libmount,
1688 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001689 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690 install : true,
1691 install_dir : rootlibexecdir)
1692
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001693meson.add_install_script(meson_make_symlink,
1694 join_paths(rootlibexecdir, 'systemd'),
1695 join_paths(rootsbindir, 'init'))
1696
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001697exe = executable('systemd-analyze',
1698 systemd_analyze_sources,
1699 include_directories : includes,
1700 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001701 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001702 dependencies : [versiondep,
1703 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704 librt,
1705 libseccomp,
1706 libselinux,
1707 libmount,
1708 libblkid],
1709 install_rpath : rootlibexecdir,
1710 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001711public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712
1713executable('systemd-journald',
1714 systemd_journald_sources,
1715 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001716 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001717 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718 dependencies : [threads,
1719 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001720 liblz4,
1721 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001722 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723 install : true,
1724 install_dir : rootlibexecdir)
1725
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001726exe = executable('systemd-cat',
1727 systemd_cat_sources,
1728 include_directories : includes,
1729 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001730 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001731 dependencies : [threads],
1732 install_rpath : rootlibexecdir,
1733 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001734public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001736exe = executable('journalctl',
1737 journalctl_sources,
1738 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001739 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001740 dependencies : [threads,
1741 libqrencode,
1742 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001743 liblz4,
1744 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001748public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749
1750executable('systemd-getty-generator',
1751 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001752 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001753 link_with : [libshared],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757
1758executable('systemd-debug-generator',
1759 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001761 link_with : [libshared],
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001765
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001766executable('systemd-run-generator',
1767 'src/run-generator/run-generator.c',
1768 include_directories : includes,
1769 link_with : [libshared],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : systemgeneratordir)
1773
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774executable('systemd-fstab-generator',
1775 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001777 link_with : [libcore_shared,
1778 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001783if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001784 executable('30-systemd-environment-d-generator',
1785 'src/environment-d-generator/environment-d-generator.c',
1786 include_directories : includes,
1787 link_with : [libshared],
1788 install_rpath : rootlibexecdir,
1789 install : true,
1790 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001791
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 meson.add_install_script(meson_make_symlink,
1793 join_paths(sysconfdir, 'environment'),
1794 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795endif
1796
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001797if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-hibernate-resume-generator',
1799 'src/hibernate-resume/hibernate-resume-generator.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 executable('systemd-hibernate-resume',
1807 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001808 include_directories : includes,
1809 link_with : [libshared],
1810 install_rpath : rootlibexecdir,
1811 install : true,
1812 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813endif
1814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001815if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 executable('systemd-gpt-auto-generator',
1817 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001818 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001820 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 dependencies : libblkid,
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : systemgeneratordir)
1825
1826 exe = executable('systemd-dissect',
1827 'src/dissect/dissect.c',
1828 include_directories : includes,
1829 link_with : [libshared],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001833 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001834endif
1835
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001836if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 executable('systemd-resolved',
1838 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001839 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001840 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001841 libbasic_gcrypt,
1842 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001843 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001844 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001845 install : true,
1846 install_dir : rootlibexecdir)
1847
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001848 exe = executable('resolvectl',
1849 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001851 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001852 libbasic_gcrypt,
1853 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001855 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 libm,
1857 libidn],
1858 install_rpath : rootlibexecdir,
1859 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001860 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001861
1862 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001863 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001864 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001865
1866 meson.add_install_script(meson_make_symlink,
1867 join_paths(bindir, 'resolvectl'),
1868 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001869endif
1870
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001871if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 executable('systemd-logind',
1873 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001874 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001876 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001877 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001879 install_rpath : rootlibexecdir,
1880 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001882
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 exe = executable('loginctl',
1884 loginctl_sources,
1885 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001886 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001887 dependencies : [threads,
1888 liblz4,
1889 libxz],
1890 install_rpath : rootlibexecdir,
1891 install : true,
1892 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001893 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001894
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 exe = executable('systemd-inhibit',
1896 'src/login/inhibit.c',
1897 include_directories : includes,
1898 link_with : [libshared],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001902 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001903
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001904 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001905 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 pam_systemd = shared_library(
1907 'pam_systemd',
1908 pam_systemd_c,
1909 name_prefix : '',
1910 include_directories : includes,
1911 link_args : ['-shared',
1912 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001913 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 libshared_static],
1915 dependencies : [threads,
1916 libpam,
1917 libpam_misc],
1918 link_depends : pam_systemd_sym,
1919 install : true,
1920 install_dir : pamlibdir)
1921
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001922 if want_tests != 'false'
1923 test('dlopen-pam_systemd',
1924 test_dlopen,
1925 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001926 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001927 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001928 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001930 executable('systemd-user-runtime-dir',
1931 user_runtime_dir_sources,
1932 include_directories : includes,
1933 link_with : [libshared],
1934 install_rpath : rootlibexecdir,
1935 install : true,
1936 install_dir : rootlibexecdir)
1937endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001938
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001939if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 executable('systemd-user-sessions',
1941 'src/user-sessions/user-sessions.c',
1942 include_directories : includes,
1943 link_with : [libshared],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001947endif
1948
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001949if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 exe = executable('bootctl',
1951 'src/boot/bootctl.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [libblkid],
1955 install_rpath : rootlibexecdir,
1956 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001957 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001958
1959 executable('systemd-bless-boot',
1960 'src/boot/bless-boot.c',
1961 include_directories : includes,
1962 link_with : [libshared],
1963 dependencies : [libblkid],
1964 install_rpath : rootlibexecdir,
1965 install : true,
1966 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001967
1968 executable('systemd-bless-boot-generator',
1969 'src/boot/bless-boot-generator.c',
1970 include_directories : includes,
1971 link_with : [libshared],
1972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Lennart Poetteringf876f532018-06-25 16:07:33 +02001977executable('systemd-boot-check-no-failures',
1978 'src/boot/boot-check-no-failures.c',
1979 include_directories : includes,
1980 link_with : [libshared],
1981 dependencies : [libblkid],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
1985
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001986exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1987 include_directories : includes,
1988 link_with : [libshared],
1989 dependencies : [threads],
1990 install_rpath : rootlibexecdir,
1991 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001992public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993
Felipe Satelerf3794362018-05-22 15:08:57 -04001994
1995if get_option('link-systemctl-shared')
1996 systemctl_link_with = [libshared]
1997else
1998 systemctl_link_with = [libsystemd_static,
1999 libshared_static,
2000 libjournal_client,
2001 libbasic_gcrypt]
2002endif
2003
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01002004exe = executable('systemctl',
2005 'src/systemctl/systemctl.c',
2006 'src/systemctl/sysv-compat.h',
2007 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002008 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002009 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002010 dependencies : [threads,
2011 libcap,
2012 libselinux,
2013 libxz,
2014 liblz4],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002018public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019
Lennart Poettering61d05782018-04-16 21:41:40 +02002020if conf.get('ENABLE_PORTABLED') == 1
2021 executable('systemd-portabled',
2022 systemd_portabled_sources,
2023 include_directories : includes,
2024 link_with : [libshared],
2025 dependencies : [threads],
2026 install_rpath : rootlibexecdir,
2027 install : true,
2028 install_dir : rootlibexecdir)
2029
2030 exe = executable('portablectl', 'src/portable/portablectl.c',
2031 include_directories : includes,
2032 link_with : [libshared],
2033 dependencies : [threads],
2034 install_rpath : rootlibexecdir,
2035 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002036 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002037 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002038endif
2039
Lennart Poetteringd093b622019-07-04 18:33:30 +02002040if conf.get('ENABLE_USERDB') == 1
2041 executable('systemd-userwork',
2042 systemd_userwork_sources,
2043 include_directories : includes,
2044 link_with : [libshared],
2045 dependencies : [threads],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : rootlibexecdir)
2049
2050 executable('systemd-userdbd',
2051 systemd_userdbd_sources,
2052 include_directories : includes,
2053 link_with : [libshared],
2054 dependencies : [threads],
2055 install_rpath : rootlibexecdir,
2056 install : true,
2057 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002058
2059 executable('userdbctl',
2060 userdbctl_sources,
2061 include_directories : includes,
2062 link_with : [libshared],
2063 dependencies : [threads],
2064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002067endif
2068
Lennart Poettering70a5db52019-07-04 18:35:39 +02002069if conf.get('ENABLE_HOMED') == 1
2070 executable('systemd-homework',
2071 systemd_homework_sources,
2072 include_directories : includes,
2073 link_with : [libshared],
2074 dependencies : [threads,
2075 libcryptsetup,
2076 libblkid,
2077 libcrypt,
2078 libopenssl,
2079 libfdisk,
2080 libp11kit],
2081 install_rpath : rootlibexecdir,
2082 install : true,
2083 install_dir : rootlibexecdir)
2084
2085 executable('systemd-homed',
2086 systemd_homed_sources,
2087 include_directories : includes,
2088 link_with : [libshared],
2089 dependencies : [threads,
2090 libcrypt,
2091 libopenssl,
2092 libpwquality],
2093 install_rpath : rootlibexecdir,
2094 install : true,
2095 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002096
2097 executable('homectl',
2098 homectl_sources,
2099 include_directories : includes,
2100 link_with : [libshared],
2101 dependencies : [threads,
2102 libcrypt,
2103 libopenssl,
2104 libp11kit,
2105 libpwquality],
2106 install_rpath : rootlibexecdir,
2107 install : true,
2108 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002109
2110 if conf.get('HAVE_PAM') == 1
2111 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2112 pam_systemd = shared_library(
2113 'pam_systemd_home',
2114 pam_systemd_home_c,
2115 name_prefix : '',
2116 include_directories : includes,
2117 link_args : ['-shared',
2118 '-Wl,--version-script=' + version_script_arg],
2119 link_with : [libsystemd_static,
2120 libshared_static],
2121 dependencies : [threads,
2122 libpam,
2123 libpam_misc,
2124 libcrypt],
2125 link_depends : pam_systemd_home_sym,
2126 install : true,
2127 install_dir : pamlibdir)
2128 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002129endif
2130
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002131foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2132 meson.add_install_script(meson_make_symlink,
2133 join_paths(rootbindir, 'systemctl'),
2134 join_paths(rootsbindir, alias))
2135endforeach
2136
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002137if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 executable('systemd-backlight',
2139 'src/backlight/backlight.c',
2140 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002141 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145endif
2146
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002147if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 executable('systemd-rfkill',
2149 'src/rfkill/rfkill.c',
2150 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002151 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155endif
2156
2157executable('systemd-system-update-generator',
2158 'src/system-update-generator/system-update-generator.c',
2159 include_directories : includes,
2160 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002161 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162 install : true,
2163 install_dir : systemgeneratordir)
2164
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002165if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002166 systemd_cryptsetup_sources = files('''
2167 src/cryptsetup/cryptsetup.c
2168 src/cryptsetup/cryptsetup-pkcs11.h
2169'''.split())
2170
2171 if conf.get('HAVE_P11KIT') == 1
2172 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2173 endif
2174
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002176 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 include_directories : includes,
2178 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002179 dependencies : [libcryptsetup,
2180 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002184
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 executable('systemd-cryptsetup-generator',
2186 'src/cryptsetup/cryptsetup-generator.c',
2187 include_directories : includes,
2188 link_with : [libshared],
2189 dependencies : [libcryptsetup],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 executable('systemd-veritysetup',
2195 'src/veritysetup/veritysetup.c',
2196 include_directories : includes,
2197 link_with : [libshared],
2198 dependencies : [libcryptsetup],
2199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002202
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 executable('systemd-veritysetup-generator',
2204 'src/veritysetup/veritysetup-generator.c',
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [libcryptsetup],
2208 install_rpath : rootlibexecdir,
2209 install : true,
2210 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002211endif
2212
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002213if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002214 executable('systemd-sysv-generator',
2215 'src/sysv-generator/sysv-generator.c',
2216 include_directories : includes,
2217 link_with : [libshared],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002221
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002222 executable('systemd-rc-local-generator',
2223 'src/rc-local-generator/rc-local-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 -04002229endif
2230
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002231if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002232 executable('systemd-hostnamed',
2233 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002237 install : true,
2238 install_dir : rootlibexecdir)
2239
2240 exe = executable('hostnamectl',
2241 'src/hostname/hostnamectl.c',
2242 include_directories : includes,
2243 link_with : [libshared],
2244 install_rpath : rootlibexecdir,
2245 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002246 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247endif
2248
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002249if conf.get('ENABLE_LOCALED') == 1
2250 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002251 # logind will load libxkbcommon.so dynamically on its own
2252 deps = [libdl]
2253 else
2254 deps = []
2255 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002256
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 executable('systemd-localed',
2258 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002260 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002263 install : true,
2264 install_dir : rootlibexecdir)
2265
2266 exe = executable('localectl',
2267 localectl_sources,
2268 include_directories : includes,
2269 link_with : [libshared],
2270 install_rpath : rootlibexecdir,
2271 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002272 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273endif
2274
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002275if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002276 executable('systemd-timedated',
2277 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002278 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002279 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002280 install_rpath : rootlibexecdir,
2281 install : true,
2282 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002283endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284
Yu Watanabe6129ec82018-05-03 18:07:43 +09002285if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002286 exe = executable('timedatectl',
2287 'src/timedate/timedatectl.c',
2288 include_directories : includes,
2289 install_rpath : rootlibexecdir,
2290 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002291 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002292 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002293 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294endif
2295
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002296if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002297 if get_option('link-timesyncd-shared')
2298 timesyncd_link_with = [libshared]
2299 else
2300 timesyncd_link_with = [libsystemd_static,
2301 libshared_static,
2302 libjournal_client,
2303 libbasic_gcrypt]
2304 endif
2305
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 executable('systemd-timesyncd',
2307 systemd_timesyncd_sources,
2308 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002309 link_with : [timesyncd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002310 dependencies : [threads,
2311 libm],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002315
2316 executable('systemd-time-wait-sync',
2317 'src/time-wait-sync/time-wait-sync.c',
2318 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002319 link_with : [timesyncd_link_with],
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002320 install_rpath : rootlibexecdir,
2321 install : true,
2322 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323endif
2324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 executable('systemd-machined',
2327 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 link_with : [libmachine_core,
2330 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002331 install_rpath : rootlibexecdir,
2332 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 install_dir : rootlibexecdir)
2334
2335 exe = executable('machinectl',
2336 'src/machine/machinectl.c',
2337 include_directories : includes,
2338 link_with : [libshared],
2339 dependencies : [threads,
2340 libxz,
2341 liblz4],
2342 install_rpath : rootlibexecdir,
2343 install : true,
2344 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002345 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346endif
2347
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002348if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002349 executable('systemd-importd',
2350 systemd_importd_sources,
2351 include_directories : includes,
2352 link_with : [libshared],
2353 dependencies : [threads],
2354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 systemd_pull = executable('systemd-pull',
2359 systemd_pull_sources,
2360 include_directories : includes,
2361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002362 dependencies : [versiondep,
2363 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002364 libz,
2365 libbzip2,
2366 libxz,
2367 libgcrypt],
2368 install_rpath : rootlibexecdir,
2369 install : true,
2370 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002372 systemd_import = executable('systemd-import',
2373 systemd_import_sources,
2374 include_directories : includes,
2375 link_with : [libshared],
2376 dependencies : [libcurl,
2377 libz,
2378 libbzip2,
2379 libxz],
2380 install_rpath : rootlibexecdir,
2381 install : true,
2382 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002384 systemd_import_fs = executable('systemd-import-fs',
2385 systemd_import_fs_sources,
2386 include_directories : includes,
2387 link_with : [libshared],
2388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootlibexecdir)
2391
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002392 systemd_export = executable('systemd-export',
2393 systemd_export_sources,
2394 include_directories : includes,
2395 link_with : [libshared],
2396 dependencies : [libcurl,
2397 libz,
2398 libbzip2,
2399 libxz],
2400 install_rpath : rootlibexecdir,
2401 install : true,
2402 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002403
2404 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405endif
2406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002407if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 exe = executable('systemd-journal-upload',
2409 systemd_journal_upload_sources,
2410 include_directories : includes,
2411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002412 dependencies : [versiondep,
2413 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002414 libcurl,
2415 libgnutls,
2416 libxz,
2417 liblz4],
2418 install_rpath : rootlibexecdir,
2419 install : true,
2420 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002421 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422endif
2423
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002424if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002425 s_j_remote = executable('systemd-journal-remote',
2426 systemd_journal_remote_sources,
2427 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002428 link_with : [libshared,
2429 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002430 dependencies : [threads,
2431 libmicrohttpd,
2432 libgnutls,
2433 libxz,
2434 liblz4],
2435 install_rpath : rootlibexecdir,
2436 install : true,
2437 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002439 s_j_gatewayd = executable('systemd-journal-gatewayd',
2440 systemd_journal_gatewayd_sources,
2441 include_directories : includes,
2442 link_with : [libshared],
2443 dependencies : [threads,
2444 libmicrohttpd,
2445 libgnutls,
2446 libxz,
2447 liblz4],
2448 install_rpath : rootlibexecdir,
2449 install : true,
2450 install_dir : rootlibexecdir)
2451 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452endif
2453
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002454if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 executable('systemd-coredump',
2456 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002458 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 libacl,
2461 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462 libxz,
2463 liblz4],
2464 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002465 install : true,
2466 install_dir : rootlibexecdir)
2467
2468 exe = executable('coredumpctl',
2469 coredumpctl_sources,
2470 include_directories : includes,
2471 link_with : [libshared],
2472 dependencies : [threads,
2473 libxz,
2474 liblz4],
2475 install_rpath : rootlibexecdir,
2476 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002477 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002478endif
2479
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002480if conf.get('ENABLE_PSTORE') == 1
2481 executable('systemd-pstore',
2482 systemd_pstore_sources,
2483 include_directories : includes,
2484 link_with : [libshared],
2485 dependencies : [threads,
2486 libacl,
2487 libdw,
2488 libxz,
2489 liblz4],
2490 install_rpath : rootlibexecdir,
2491 install : true,
2492 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002493endif
2494
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002495if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002496 exe = executable('systemd-binfmt',
2497 'src/binfmt/binfmt.c',
2498 include_directories : includes,
2499 link_with : [libshared],
2500 install_rpath : rootlibexecdir,
2501 install : true,
2502 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002503 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504
2505 meson.add_install_script('sh', '-c',
2506 mkdir_p.format(binfmtdir))
2507 meson.add_install_script('sh', '-c',
2508 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2509endif
2510
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002511if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002512 exe = executable('systemd-repart',
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002513 systemd_repart_sources,
2514 include_directories : includes,
2515 link_with : [libshared],
2516 dependencies : [threads,
2517 libcryptsetup,
2518 libblkid,
2519 libfdisk,
2520 libopenssl],
2521 install_rpath : rootlibexecdir,
2522 install : true,
2523 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002524
2525 if want_tests != 'false'
2526 test('test-repart',
2527 test_repart_sh,
2528 args : exe.full_path())
2529 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002530endif
2531
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002532if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002533 executable('systemd-vconsole-setup',
2534 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002535 include_directories : includes,
2536 link_with : [libshared],
2537 install_rpath : rootlibexecdir,
2538 install : true,
2539 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540endif
2541
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002542if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 executable('systemd-random-seed',
2544 'src/random-seed/random-seed.c',
2545 include_directories : includes,
2546 link_with : [libshared],
2547 install_rpath : rootlibexecdir,
2548 install : true,
2549 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550endif
2551
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002552if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002553 executable('systemd-firstboot',
2554 'src/firstboot/firstboot.c',
2555 include_directories : includes,
2556 link_with : [libshared],
2557 dependencies : [libcrypt],
2558 install_rpath : rootlibexecdir,
2559 install : true,
2560 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002561endif
2562
2563executable('systemd-remount-fs',
2564 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002566 link_with : [libcore_shared,
2567 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002568 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569 install : true,
2570 install_dir : rootlibexecdir)
2571
2572executable('systemd-machine-id-setup',
2573 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002575 link_with : [libcore_shared,
2576 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002577 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002578 install : true,
2579 install_dir : rootbindir)
2580
2581executable('systemd-fsck',
2582 'src/fsck/fsck.c',
2583 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002584 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002585 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586 install : true,
2587 install_dir : rootlibexecdir)
2588
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002589executable('systemd-growfs',
2590 'src/partition/growfs.c',
2591 include_directories : includes,
2592 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002593 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootlibexecdir)
2597
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002598executable('systemd-makefs',
2599 'src/partition/makefs.c',
2600 include_directories : includes,
2601 link_with : [libshared],
2602 install_rpath : rootlibexecdir,
2603 install : true,
2604 install_dir : rootlibexecdir)
2605
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606executable('systemd-sleep',
2607 'src/sleep/sleep.c',
2608 include_directories : includes,
2609 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002610 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611 install : true,
2612 install_dir : rootlibexecdir)
2613
Yu Watanabed25e1272019-01-03 02:32:57 +09002614install_data('src/sleep/sleep.conf',
2615 install_dir : pkgsysconfdir)
2616
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002617exe = executable('systemd-sysctl',
2618 'src/sysctl/sysctl.c',
2619 include_directories : includes,
2620 link_with : [libshared],
2621 install_rpath : rootlibexecdir,
2622 install : true,
2623 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002624public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002625
2626executable('systemd-ac-power',
2627 'src/ac-power/ac-power.c',
2628 include_directories : includes,
2629 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002630 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631 install : true,
2632 install_dir : rootlibexecdir)
2633
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634exe = executable('systemd-detect-virt',
2635 'src/detect-virt/detect-virt.c',
2636 include_directories : includes,
2637 link_with : [libshared],
2638 install_rpath : rootlibexecdir,
2639 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002640public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642exe = executable('systemd-delta',
2643 'src/delta/delta.c',
2644 include_directories : includes,
2645 link_with : [libshared],
2646 install_rpath : rootlibexecdir,
2647 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002648public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002649
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650exe = executable('systemd-escape',
2651 'src/escape/escape.c',
2652 include_directories : includes,
2653 link_with : [libshared],
2654 install_rpath : rootlibexecdir,
2655 install : true,
2656 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002657public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002658
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659exe = executable('systemd-notify',
2660 'src/notify/notify.c',
2661 include_directories : includes,
2662 link_with : [libshared],
2663 install_rpath : rootlibexecdir,
2664 install : true,
2665 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002666public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002667
2668executable('systemd-volatile-root',
2669 'src/volatile-root/volatile-root.c',
2670 include_directories : includes,
2671 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002672 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002673 install : true,
2674 install_dir : rootlibexecdir)
2675
2676executable('systemd-cgroups-agent',
2677 'src/cgroups-agent/cgroups-agent.c',
2678 include_directories : includes,
2679 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002680 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002681 install : true,
2682 install_dir : rootlibexecdir)
2683
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002684exe = executable('systemd-id128',
2685 'src/id128/id128.c',
2686 include_directories : includes,
2687 link_with : [libshared],
2688 install_rpath : rootlibexecdir,
2689 install : true)
2690public_programs += exe
2691
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002692exe = executable('systemd-path',
2693 'src/path/path.c',
2694 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002695 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002696 install_rpath : rootlibexecdir,
2697 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002698public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002699
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002700exe = executable('systemd-ask-password',
2701 'src/ask-password/ask-password.c',
2702 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002703 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002704 install_rpath : rootlibexecdir,
2705 install : true,
2706 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002707public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708
2709executable('systemd-reply-password',
2710 'src/reply-password/reply-password.c',
2711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002712 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002713 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714 install : true,
2715 install_dir : rootlibexecdir)
2716
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002717exe = executable('systemd-tty-ask-password-agent',
2718 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2719 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002720 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002721 install_rpath : rootlibexecdir,
2722 install : true,
2723 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002724public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002726exe = executable('systemd-cgls',
2727 'src/cgls/cgls.c',
2728 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002729 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002730 install_rpath : rootlibexecdir,
2731 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002732public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002733
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002734exe = executable('systemd-cgtop',
2735 'src/cgtop/cgtop.c',
2736 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002738 install_rpath : rootlibexecdir,
2739 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002740public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
2742executable('systemd-initctl',
2743 'src/initctl/initctl.c',
2744 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002745 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002746 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002747 install : true,
2748 install_dir : rootlibexecdir)
2749
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002750exe = executable('systemd-mount',
2751 'src/mount/mount-tool.c',
2752 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002753 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002754 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002755 install_rpath : rootlibexecdir,
2756 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002757public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002758
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002759meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002760 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002761
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002762exe = executable('systemd-run',
2763 'src/run/run.c',
2764 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002765 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002766 install_rpath : rootlibexecdir,
2767 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002768public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002769
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002770exe = executable('systemd-stdio-bridge',
2771 'src/stdio-bridge/stdio-bridge.c',
2772 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002773 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002774 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002775 install_rpath : rootlibexecdir,
2776 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002777public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002778
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002779exe = executable('busctl',
2780 'src/busctl/busctl.c',
2781 'src/busctl/busctl-introspect.c',
2782 'src/busctl/busctl-introspect.h',
2783 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002784 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002785 install_rpath : rootlibexecdir,
2786 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002787public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002788
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002789if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002790 exe = executable('systemd-sysusers',
2791 'src/sysusers/sysusers.c',
2792 include_directories : includes,
2793 link_with : [libshared],
2794 install_rpath : rootlibexecdir,
2795 install : true,
2796 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002797 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002798endif
2799
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002800if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002801 exe = executable('systemd-tmpfiles',
2802 'src/tmpfiles/tmpfiles.c',
2803 include_directories : includes,
2804 link_with : [libshared],
2805 dependencies : [libacl],
2806 install_rpath : rootlibexecdir,
2807 install : true,
2808 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002809 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002810
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002811 if want_tests != 'false'
2812 test('test-systemd-tmpfiles',
2813 test_systemd_tmpfiles_py,
2814 # https://github.com/mesonbuild/meson/issues/2681
2815 args : exe.full_path())
2816 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002817endif
2818
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002819if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002820 exe = executable('systemd-hwdb',
2821 'src/hwdb/hwdb.c',
2822 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2823 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002824 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002825 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002826 install : true,
2827 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002828 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002829endif
2830
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002831if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 executable('systemd-quotacheck',
2833 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002834 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002835 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002836 install_rpath : rootlibexecdir,
2837 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002839endif
2840
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002841exe = executable('systemd-socket-proxyd',
2842 'src/socket-proxy/socket-proxyd.c',
2843 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002844 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002845 dependencies : [threads],
2846 install_rpath : rootlibexecdir,
2847 install : true,
2848 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002849public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002850
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002851exe = executable('systemd-udevd',
2852 systemd_udevd_sources,
2853 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002854 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002855 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002856 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002857 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002858 dependencies : [versiondep,
2859 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002860 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002861 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002862 libacl,
2863 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002864 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002865 install : true,
2866 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002867public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002868
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002869exe = executable('udevadm',
2870 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002871 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002872 include_directories : includes,
2873 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002874 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002875 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002876 dependencies : [versiondep,
2877 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002878 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002879 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002880 libacl,
2881 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002882 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002883 install : true,
2884 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002885public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002886
2887executable('systemd-shutdown',
2888 systemd_shutdown_sources,
2889 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002890 link_with : [libcore_shared,
2891 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002892 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002893 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002894 install : true,
2895 install_dir : rootlibexecdir)
2896
2897executable('systemd-update-done',
2898 'src/update-done/update-done.c',
2899 include_directories : includes,
2900 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002901 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902 install : true,
2903 install_dir : rootlibexecdir)
2904
2905executable('systemd-update-utmp',
2906 'src/update-utmp/update-utmp.c',
2907 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002908 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002910 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002911 install : true,
2912 install_dir : rootlibexecdir)
2913
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002914if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002915 executable('systemd-modules-load',
2916 'src/modules-load/modules-load.c',
2917 include_directories : includes,
2918 link_with : [libshared],
2919 dependencies : [libkmod],
2920 install_rpath : rootlibexecdir,
2921 install : true,
2922 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002923
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002924 meson.add_install_script('sh', '-c',
2925 mkdir_p.format(modulesloaddir))
2926 meson.add_install_script('sh', '-c',
2927 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002928endif
2929
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002930exe = executable('systemd-nspawn',
2931 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002932 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002933 link_with : [libcore_shared,
2934 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002935 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002936 dependencies : [libblkid,
2937 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002938 install_rpath : rootlibexecdir,
2939 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002940public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002942if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002943 executable('systemd-networkd',
2944 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002945 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002946 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002947 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002948 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002949 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002950 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002951 install_rpath : rootlibexecdir,
2952 install : true,
2953 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002954
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002955 executable('systemd-networkd-wait-online',
2956 systemd_networkd_wait_online_sources,
2957 include_directories : includes,
2958 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002959 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002960 install_rpath : rootlibexecdir,
2961 install : true,
2962 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002963
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002964 exe = executable('networkctl',
2965 networkctl_sources,
2966 include_directories : includes,
2967 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002968 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002969 install_rpath : rootlibexecdir,
2970 install : true,
2971 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002972 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002973
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01002974 exe = executable('systemd-network-generator',
Yu Watanabe426c1d32019-07-13 03:35:04 +09002975 network_generator_sources,
2976 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002977 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002978 install_rpath : rootlibexecdir,
2979 install : true,
2980 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01002981
2982 if want_tests != 'false'
2983 test('test-network-generator-conversion',
2984 test_network_generator_conversion_sh,
2985 # https://github.com/mesonbuild/meson/issues/2681
2986 args : exe.full_path())
2987 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002988endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002989
2990executable('systemd-sulogin-shell',
2991 ['src/sulogin-shell/sulogin-shell.c'],
2992 include_directories : includes,
2993 link_with : [libshared],
2994 install_rpath : rootlibexecdir,
2995 install : true,
2996 install_dir : rootlibexecdir)
2997
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002998############################################################
2999
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003000custom_target(
3001 'systemd-runtest.env',
3002 output : 'systemd-runtest.env',
3003 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003004 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07003005 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003006 '} >@OUTPUT@'],
3007 build_by_default : true)
3008
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003009foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003010 sources = tuple[0]
3011 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3012 dependencies = tuple[2]
3013 condition = tuple.length() >= 4 ? tuple[3] : ''
3014 type = tuple.length() >= 5 ? tuple[4] : ''
3015 defs = tuple.length() >= 6 ? tuple[5] : []
3016 incs = tuple.length() >= 7 ? tuple[6] : includes
3017 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003018
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003019 name = sources[0].split('/')[-1].split('.')[0]
3020 if type.startswith('timeout=')
3021 timeout = type.split('=')[1].to_int()
3022 type = ''
3023 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003024
3025 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003026 exe = executable(
3027 name,
3028 sources,
3029 include_directories : incs,
3030 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003031 dependencies : [versiondep,
3032 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003033 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003034 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003035 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003036 install : install_tests,
3037 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003038
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003039 if type == 'manual'
3040 message('@0@ is a manual test'.format(name))
3041 elif type == 'unsafe' and want_tests != 'unsafe'
3042 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003043 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003044 test(name, exe,
3045 env : test_env,
3046 timeout : timeout)
3047 endif
3048 else
3049 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3050 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003051endforeach
3052
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003053exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003054 'test-libsystemd-sym',
3055 test_libsystemd_sym_c,
3056 include_directories : includes,
3057 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003058 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003059 install : install_tests,
3060 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003061if want_tests != 'false'
3062 test('test-libsystemd-sym', exe)
3063endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003064
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003065exe = executable(
3066 'test-libsystemd-static-sym',
3067 test_libsystemd_sym_c,
3068 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003069 link_with : [install_libsystemd_static],
3070 dependencies : [threads], # threads is already included in dependencies on the library,
3071 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003072 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003073 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003074 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003075if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003076 test('test-libsystemd-static-sym', exe)
3077endif
3078
3079exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003080 'test-libudev-sym',
3081 test_libudev_sym_c,
3082 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003083 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003084 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003085 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003086 install : install_tests,
3087 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003088if want_tests != 'false'
3089 test('test-libudev-sym', exe)
3090endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003091
3092exe = executable(
3093 'test-libudev-static-sym',
3094 test_libudev_sym_c,
3095 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003096 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003097 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003098 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003099 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003100 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003101if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003102 test('test-libudev-static-sym', exe)
3103endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003104
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003105############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003106
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003107fuzzer_exes = []
3108
Michael Olbrich59967402018-11-11 11:27:35 +01003109if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003110foreach tuple : fuzzers
3111 sources = tuple[0]
3112 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3113 dependencies = tuple[2]
3114 defs = tuple.length() >= 4 ? tuple[3] : []
3115 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003116 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003117
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003118 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003119 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003120 elif want_libfuzzer
3121 if fuzzing_engine.found()
3122 dependencies += fuzzing_engine
3123 else
3124 link_args += ['-fsanitize=fuzzer']
3125 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003126 else
3127 sources += 'src/fuzz/fuzz-main.c'
3128 endif
3129
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003130 if want_fuzzbuzz
3131 sources += 'src/fuzz/fuzzer-entry-point.c'
3132 endif
3133
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003134 name = sources[0].split('/')[-1].split('.')[0]
3135
3136 fuzzer_exes += executable(
3137 name,
3138 sources,
3139 include_directories : [incs, include_directories('src/fuzz')],
3140 link_with : link_with,
3141 dependencies : dependencies,
3142 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003143 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003144 install : false)
3145endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003146endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003147
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003148run_target('fuzzers',
3149 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003150 command : ['true'])
3151
3152############################################################
3153
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003154make_directive_index_py = find_program('tools/make-directive-index.py')
3155make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003156xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003157hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003158autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003159
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003160subdir('sysctl.d')
3161subdir('sysusers.d')
3162subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003163subdir('hwdb.d')
3164subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003165subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003166subdir('network')
3167subdir('man')
3168subdir('shell-completion/bash')
3169subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003170subdir('docs/sysvinit')
3171subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003173install_subdir('factory/etc',
3174 install_dir : factorydir)
3175
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003176install_data('xorg/50-systemd-user.sh',
3177 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003178install_data('modprobe.d/systemd.conf',
3179 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003180install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003181 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003182 'NEWS',
3183 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303184 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003185 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003186 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003187 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003188 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003189 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003190 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003191 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3192 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003193
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003194meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3195meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3196
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003197############################################################
3198
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003199meson_check_help = find_program('tools/meson-check-help.sh')
3200
3201foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003202 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003203 if want_tests != 'false'
3204 test('check-help-' + name,
3205 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003206 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003207 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003208endforeach
3209
3210############################################################
3211
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003212check_directives_sh = find_program('tools/check-directives.sh')
3213
3214if want_tests != 'false'
3215 test('check-directives',
3216 check_directives_sh,
3217 args : project_source_root)
3218endif
3219
3220############################################################
3221
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003222# Enable tests for all supported sanitizers
3223foreach tuple : sanitizers
3224 sanitizer = tuple[0]
3225 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003226
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003227 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003228 prev = ''
3229 foreach p : fuzz_regression_tests
3230 b = p.split('/')[-2]
3231 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003232
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003233 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003234
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003235 if name != prev
3236 if want_tests == 'false'
3237 message('Not compiling @0@ because tests is set to false'.format(name))
3238 elif slow_tests
3239 exe = custom_target(
3240 name,
3241 output : name,
3242 depends : build,
3243 command : [env, 'ln', '-fs',
3244 join_paths(build.full_path(), b),
3245 '@OUTPUT@'],
3246 build_by_default : true)
3247 else
3248 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3249 endif
3250 endif
3251 prev = name
3252
3253 if want_tests != 'false' and slow_tests
3254 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3255 env,
3256 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003257 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003258 endif
3259 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003260 endif
3261endforeach
3262
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003263
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003264############################################################
3265
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003266if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003267 all_files = run_command(
3268 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003269 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003270 'ls-files',
3271 ':/*.[ch]'])
3272 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003273
userwithuide85a6902017-08-09 13:41:44 +00003274 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003275 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003276 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003277 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003278 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003279 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003280 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003281endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003282
3283if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003284 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003285 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003286 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003287 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003288endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003289
3290if git.found()
3291 git_head = run_command(
3292 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003293 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003294 'rev-parse', 'HEAD']).stdout().strip()
3295 git_head_short = run_command(
3296 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003297 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003298 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3299
3300 run_target(
3301 'git-snapshot',
3302 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003303 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003304 git_head_short),
3305 '--prefix', 'systemd-@0@/'.format(git_head),
3306 'HEAD'])
3307endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003308
3309############################################################
3310
Lennart Poettering51b13862017-12-20 12:51:14 +01003311meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3312run_target(
3313 'check-api-docs',
3314 depends : [man, libsystemd, libudev],
3315 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3316
3317############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003318watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003319
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003320status = [
3321 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3322
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003323 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003324 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003325 'prefix directory: @0@'.format(prefixdir),
3326 'rootprefix directory: @0@'.format(rootprefixdir),
3327 'sysconf directory: @0@'.format(sysconfdir),
3328 'include directory: @0@'.format(includedir),
3329 'lib directory: @0@'.format(libdir),
3330 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003331 'SysV init scripts: @0@'.format(sysvinit_path),
3332 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003333 'PAM modules directory: @0@'.format(pamlibdir),
3334 'PAM configuration directory: @0@'.format(pamconfdir),
3335 'RPM macros directory: @0@'.format(rpmmacrosdir),
3336 'modprobe.d directory: @0@'.format(modprobedir),
3337 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3338 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3339 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3340 'bash completions directory: @0@'.format(bashcompletiondir),
3341 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003342 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003343 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3344 get_option('debug-tty')),
3345 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003346 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003347 'maximum system UID: @0@'.format(system_uid_max),
3348 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003349 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3350 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3351 'minimum container UID base: @0@'.format(container_uid_base_min),
3352 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003353 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003354 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003355 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003356 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003357 'nobody user name: @0@'.format(nobody_user),
3358 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003359 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003360 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003361
3362 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003363 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003364 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003365 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003366 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003367 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003368 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003369 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003370
3371alt_dns_servers = '\n '.join(dns_servers.split(' '))
3372alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3373status += [
3374 'default DNS servers: @0@'.format(alt_dns_servers),
3375 'default NTP servers: @0@'.format(alt_ntp_servers)]
3376
3377alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3378 '@@0@'.format(time_epoch)).stdout().strip()
3379status += [
3380 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3381
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003382status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003383 'static libsystemd: @0@'.format(static_libsystemd),
3384 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003385
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003386# TODO:
3387# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3388# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3389# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3390
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003391if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003392 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003393
3394 if have_gnu_efi
3395 status += [
3396 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003397 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003398 'EFI lds: @0@'.format(efi_lds),
3399 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003400 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003401 endif
3402endif
3403
3404found = []
3405missing = []
3406
3407foreach tuple : [
3408 ['libcryptsetup'],
3409 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003410 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003411 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003412 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003413 ['AUDIT'],
3414 ['IMA'],
3415 ['AppArmor'],
3416 ['SELinux'],
3417 ['SECCOMP'],
3418 ['SMACK'],
3419 ['zlib'],
3420 ['xz'],
3421 ['lz4'],
3422 ['bzip2'],
3423 ['ACL'],
3424 ['gcrypt'],
3425 ['qrencode'],
3426 ['microhttpd'],
3427 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003428 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003429 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003430 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003431 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003432 ['libidn'],
3433 ['libiptc'],
3434 ['elfutils'],
3435 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003436 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437 ['vconsole'],
3438 ['quotacheck'],
3439 ['tmpfiles'],
3440 ['environment.d'],
3441 ['sysusers'],
3442 ['firstboot'],
3443 ['randomseed'],
3444 ['backlight'],
3445 ['rfkill'],
3446 ['logind'],
3447 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003448 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003449 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003450 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003451 ['importd'],
3452 ['hostnamed'],
3453 ['timedated'],
3454 ['timesyncd'],
3455 ['localed'],
3456 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003457 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003458 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3459 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003460 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003461 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003462 ['polkit'],
3463 ['legacy pkla', install_polkit_pkla],
3464 ['efi'],
3465 ['gnu-efi', have_gnu_efi],
3466 ['kmod'],
3467 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003468 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003469 ['blkid'],
3470 ['dbus'],
3471 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003472 ['nss-myhostname'],
3473 ['nss-mymachines'],
3474 ['nss-resolve'],
3475 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003476 ['hwdb'],
3477 ['tpm'],
3478 ['man pages', want_man],
3479 ['html pages', want_html],
3480 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003481 ['SysV compat'],
3482 ['utmp'],
3483 ['ldconfig'],
3484 ['hibernate'],
3485 ['adm group', get_option('adm-group')],
3486 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003487 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003488 ['debug hashmap'],
3489 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003490 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003491 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003492 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003493 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003494 ['link-udev-shared', get_option('link-udev-shared')],
3495 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003496 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003497 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003498]
3499
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003500 if tuple.length() >= 2
3501 cond = tuple[1]
3502 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003503 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3504 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003505 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003506 endif
3507 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003508 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003509 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003510 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003511 endif
3512endforeach
3513
3514status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003515 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003516 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003517 '',
3518 'disabled features: @0@'.format(', '.join(missing)),
3519 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003520message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003521
3522if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003523 warning('\n' +
3524 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3525 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3526 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003527endif