blob: d3bdfada8557f7ecede15ac3ee91933d90fd9792 [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
Davide Cavalca1485aac2019-02-27 11:19:07 -050053git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040054if git_hook.returncode() == 0
55 message(git_hook.stdout().strip())
56endif
57
58#####################################################################
59
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010060if get_option('split-usr') == 'auto'
61 split_usr = run_command('test', '-L', '/bin').returncode() != 0
62else
63 split_usr = get_option('split-usr') == 'true'
64endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010065conf.set10('HAVE_SPLIT_USR', split_usr,
66 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010068if get_option('split-bin') == 'auto'
69 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
70else
71 split_bin = get_option('split-bin') == 'true'
72endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010073conf.set10('HAVE_SPLIT_BIN', split_bin,
74 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010075
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010076rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010077# Unusual rootprefixdir values are used by some distros
78# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010079rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010080if rootprefixdir == ''
81 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010082endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010083rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040084
85sysvinit_path = get_option('sysvinit-path')
86sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090087conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020088 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040089
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020090conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
91conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010092conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020093
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010094# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095# encountered, so this should canonicalize various paths when they are
96# absolute or relative.
97prefixdir = get_option('prefix')
98if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040099 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100endif
101bindir = join_paths(prefixdir, get_option('bindir'))
102libdir = join_paths(prefixdir, get_option('libdir'))
103sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
104includedir = join_paths(prefixdir, get_option('includedir'))
105datadir = join_paths(prefixdir, get_option('datadir'))
106localstatedir = join_paths('/', get_option('localstatedir'))
107
108rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100109rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400110rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
111
112rootlibdir = get_option('rootlibdir')
113if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400114 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400115endif
116
117# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200118pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
119pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400120polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
121polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
122polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400123xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900124rpmmacrosdir = get_option('rpmmacrosdir')
125if rpmmacrosdir != 'no'
126 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
127endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200128modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400129
130# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400131pkgdatadir = join_paths(datadir, 'systemd')
132environmentdir = join_paths(prefixdir, 'lib/environment.d')
133pkgsysconfdir = join_paths(sysconfdir, 'systemd')
134userunitdir = join_paths(prefixdir, 'lib/systemd/user')
135userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
136tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
137sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
138sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
139binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
140modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
141networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
142pkgincludedir = join_paths(includedir, 'systemd')
143systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
144usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
145systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
146userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
147systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
148systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
149systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
150systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
151udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400152udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
153udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
154catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
155kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
156factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400157bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
158testsdir = join_paths(prefixdir, 'lib/systemd/tests')
159systemdstatedir = join_paths(localstatedir, 'lib/systemd')
160catalogstatedir = join_paths(systemdstatedir, 'catalog')
161randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200162profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200163ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164
tblume75aaade2018-02-01 22:46:15 +0100165docdir = get_option('docdir')
166if docdir == ''
167 docdir = join_paths(datadir, 'doc/systemd')
168endif
169
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170dbuspolicydir = get_option('dbuspolicydir')
171if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175dbussessionservicedir = get_option('dbussessionservicedir')
176if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400177 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178endif
179
180dbussystemservicedir = get_option('dbussystemservicedir')
181if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400182 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183endif
184
185pamlibdir = get_option('pamlibdir')
186if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400187 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400188endif
189
190pamconfdir = get_option('pamconfdir')
191if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400192 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193endif
194
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100195memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200196status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100197
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400198conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
201conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
202conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400203conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100204
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100205conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100206
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400208conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
209conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
211conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
212conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
213conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100214conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100215conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
218conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
219conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100220conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400221conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400222conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
223conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
225conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
226conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
227conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
228conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
229conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400230conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
231conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700232conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700233conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400235conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236conf.set_quoted('LIBDIR', libdir)
237conf.set_quoted('ROOTLIBDIR', rootlibdir)
238conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
239conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400240conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
241conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200242conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400243conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
244conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
245conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
246conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200247conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200248conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200249conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100250conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200251conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400252
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100254substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100255substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400256substs.set('exec_prefix', prefixdir)
257substs.set('libdir', libdir)
258substs.set('rootlibdir', rootlibdir)
259substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100260substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400261substs.set('bindir', bindir)
262substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400263substs.set('rootlibexecdir', rootlibexecdir)
264substs.set('systemunitdir', systemunitdir)
265substs.set('userunitdir', userunitdir)
266substs.set('systempresetdir', systempresetdir)
267substs.set('userpresetdir', userpresetdir)
268substs.set('udevhwdbdir', udevhwdbdir)
269substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400270substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200271substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272substs.set('catalogdir', catalogdir)
273substs.set('tmpfilesdir', tmpfilesdir)
274substs.set('sysusersdir', sysusersdir)
275substs.set('sysctldir', sysctldir)
276substs.set('binfmtdir', binfmtdir)
277substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200278substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400279substs.set('systemgeneratordir', systemgeneratordir)
280substs.set('usergeneratordir', usergeneratordir)
281substs.set('systemenvgeneratordir', systemenvgeneratordir)
282substs.set('userenvgeneratordir', userenvgeneratordir)
283substs.set('systemshutdowndir', systemshutdowndir)
284substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400285substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400286substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400287substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
288substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
289substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100290substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200291substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200292substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200293substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400294
295#####################################################################
296
297cc = meson.get_compiler('c')
298pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400299check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100300meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400301
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200302want_tests = get_option('tests')
303slow_tests = want_tests != 'false' and get_option('slow-tests')
304install_tests = get_option('install-tests')
305
James Hilliard46e63a22018-12-27 09:16:20 +0800306if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200307 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100308 cxx = meson.get_compiler('cpp')
309 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200310else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200311 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400312endif
313
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500314if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200315 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
316 if fuzzing_engine.found()
317 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
318 elif cc.has_argument('-fsanitize=fuzzer-no-link')
319 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
320 else
321 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
322 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200323elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500324 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000325elif want_fuzzbuzz
326 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 -0500327endif
328
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100329# Those generate many false positives, and we do not want to change the code to
330# avoid them.
331basic_disabled_warnings = [
332 '-Wno-unused-parameter',
333 '-Wno-missing-field-initializers',
334 '-Wno-unused-result',
335 '-Wno-format-signedness',
336]
337if get_option('b_ndebug') == 'true'
338 # With asserts disabled with get a bunch of warnings about variables which
339 # are used only in the asserts. This is not useful at all, so let's just silence
340 # those warnings.
341 basic_disabled_warnings += [
342 '-Wno-unused-variable',
343 '-Wno-unused-but-set-variable',
344 ]
345endif
346
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-Werror=undef',
349 '-Wlogical-op',
350 '-Wmissing-include-dirs',
351 '-Wold-style-definition',
352 '-Wpointer-arith',
353 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900354 '-Wfloat-equal',
355 '-Wsuggest-attribute=noreturn',
356 '-Werror=missing-prototypes',
357 '-Werror=implicit-function-declaration',
358 '-Werror=missing-declarations',
359 '-Werror=return-type',
360 '-Werror=incompatible-pointer-types',
361 '-Werror=format=2',
362 '-Wstrict-prototypes',
363 '-Wredundant-decls',
364 '-Wmissing-noreturn',
365 '-Wimplicit-fallthrough=5',
366 '-Wshadow',
367 '-Wendif-labels',
368 '-Wstrict-aliasing=2',
369 '-Wwrite-strings',
370 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200371 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200372 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900373 '-Wdate-time',
374 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700375
376 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100377 '-Wno-error=#warnings', # clang
378 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700379
380 # work-around for gcc 7.1 turning this on on its own.
381 '-Wno-error=nonnull',
382
383 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
384 # optimizations enabled, producing essentially false positives.
385 '-Wno-maybe-uninitialized',
386
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387 '-ffast-math',
388 '-fno-common',
389 '-fdiagnostics-show-option',
390 '-fno-strict-aliasing',
391 '-fvisibility=hidden',
392 '-fstack-protector',
393 '-fstack-protector-strong',
394 '--param=ssp-buffer-size=4',
395]
396
397# --as-needed and --no-undefined are provided by meson by default,
398# run mesonconf to see what is enabled
399possible_link_flags = [
400 '-Wl,-z,relro',
401 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200402 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900405if cc.get_id() == 'clang'
406 possible_cc_flags += [
407 '-Wno-typedef-redefinition',
408 '-Wno-gnu-variable-sized-type-not-at-end',
409 ]
410endif
411
412if get_option('buildtype') != 'debug'
413 possible_cc_flags += [
414 '-ffunction-sections',
415 '-fdata-sections',
416 ]
417
418 possible_link_flags += '-Wl,--gc-sections'
419endif
420
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100421add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900422add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900423add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900424
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800425if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 #include <time.h>
427 #include <inttypes.h>
428 typedef uint64_t usec_t;
429 usec_t now(clockid_t clock);
430 int main(void) {
431 struct timespec now;
432 return 0;
433 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100434''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400435 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436endif
437
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100438if cxx_cmd != ''
439 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
440endif
441
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200442cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400443
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200444has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446#####################################################################
447# compilation result tests
448
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400449conf.set('_GNU_SOURCE', true)
450conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200451conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
456conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
457
458decl_headers = '''
459#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100460#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400461'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462
463foreach decl : ['char16_t',
464 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100465 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400467
468 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200469 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
470
471 if decl == 'struct statx'
472 if have
473 want_linux_stat_h = false
474 else
475 have = cc.sizeof(decl,
476 prefix : decl_headers + '#include <linux/stat.h>',
477 args : '-D_GNU_SOURCE') > 0
478 want_linux_stat_h = have
479 endif
480 endif
481
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483endforeach
484
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200485conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700486
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200488 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489endforeach
490
491foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100493 ['gettid', '''#include <sys/types.h>
494 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100495 ['pivot_root', '''#include <stdlib.h>
496 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498 #include <sys/stat.h>
499 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100501 ['renameat2', '''#include <stdio.h>
502 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 ['kcmp', '''#include <linux/kcmp.h>'''],
504 ['keyctl', '''#include <sys/types.h>
505 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200508 ['bpf', '''#include <sys/syscall.h>
509 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100510 ['statx', '''#include <sys/types.h>
511 #include <sys/stat.h>
512 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100513 ['explicit_bzero' , '''#include <string.h>'''],
514 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100515 ['set_mempolicy', '''#include <stdlib.h>
516 #include <unistd.h>'''],
517 ['get_mempolicy', '''#include <stdlib.h>
518 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200519 ['pidfd_send_signal', '''#include <stdlib.h>
520 #include <unistd.h>
521 #include <signal.h>
522 #include <sys/wait.h>'''],
523 ['pidfd_open', '''#include <stdlib.h>
524 #include <unistd.h>
525 #include <signal.h>
526 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100527 ['rt_sigqueueinfo', '''#include <stdlib.h>
528 #include <unistd.h>
529 #include <signal.h>
530 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400531]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532
Lennart Poettering85db59b2017-12-25 12:01:14 +0100533 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200534 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535endforeach
536
Lennart Poettering85db59b2017-12-25 12:01:14 +0100537if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200538 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200539 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400540else
541 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200542 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200543 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400544endif
545
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546#####################################################################
547
Davide Cavalca1485aac2019-02-27 11:19:07 -0500548vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
549 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100550 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100551 meson.project_version()]
552
Louis Taylord1084aa2019-01-21 21:45:36 +0000553version_h = vcs_tag(
554 input : 'src/version/version.h.in',
555 output : 'version.h',
556 command: vcs_tagger)
557
558versiondep = declare_dependency(sources: version_h)
559
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400562m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400564git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100565env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100566perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567
Davide Cavalca1485aac2019-02-27 11:19:07 -0500568meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400569mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400570test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
571splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400572
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
574# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500575progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ['kmod', '/usr/bin/kmod' ],
578 ['kexec', '/usr/sbin/kexec' ],
579 ['sulogin', '/usr/sbin/sulogin' ],
580 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
581 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
582 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
583 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200584 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585 ]
586foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 path = get_option(prog[0] + '-path')
588 if path != ''
589 message('Using @1@ for @0@'.format(prog[0], path))
590 else
591 exe = find_program(prog[0],
592 '/usr/sbin/' + prog[0],
593 '/sbin/' + prog[0],
594 required: false)
595 path = exe.found() ? exe.path() : prog[1]
596 endif
597 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
598 conf.set_quoted(name, path)
599 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endforeach
601
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500602conf.set_quoted('TELINIT', get_option('telinit-path'))
603
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400604if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100605 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607
608############################################################
609
610gperf = find_program('gperf')
611
612gperf_test_format = '''
613#include <string.h>
614const char * in_word_set(const char *, @0@);
615@1@
616'''
617gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
618gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
619gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
620if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
624 if cc.compiles(gperf_test)
625 gperf_len_type = 'unsigned'
626 else
627 error('unable to determine gperf len type')
628 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endif
630message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631conf.set('GPERF_LEN_TYPE', gperf_len_type,
632 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634############################################################
635
636if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100639foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'linux/memfd.h',
641 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200642 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'valgrind/memcheck.h',
644 'valgrind/valgrind.h',
645 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200647 conf.set10('HAVE_' + header.underscorify().to_upper(),
648 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649endforeach
650
651############################################################
652
653conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400654conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
655gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656
657default_hierarchy = get_option('default-hierarchy')
658conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
659 description : 'default cgroup hierarchy as string')
660if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
667
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100668default_net_naming_scheme = get_option('default-net-naming-scheme')
669conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
670
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900672if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900674 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676conf.set('TIME_EPOCH', time_epoch)
677
678system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900679if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400680 system_uid_max = run_command(
681 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800682 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
683 '/etc/login.defs').stdout().strip()
684 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900685 system_uid_max = 999
686 else
687 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800688 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690conf.set('SYSTEM_UID_MAX', system_uid_max)
691substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900694if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400695 system_gid_max = run_command(
696 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800697 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
698 '/etc/login.defs').stdout().strip()
699 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900700 system_gid_max = 999
701 else
702 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800703 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705conf.set('SYSTEM_GID_MAX', system_gid_max)
706substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707
Yu Watanabeac093402018-05-10 16:04:16 +0900708dynamic_uid_min = get_option('dynamic-uid-min')
709dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100710conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
711conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
712substs.set('dynamicuidmin', dynamic_uid_min)
713substs.set('dynamicuidmax', dynamic_uid_max)
714
Yu Watanabeac093402018-05-10 16:04:16 +0900715container_uid_base_min = get_option('container-uid-base-min')
716container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100717conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
718conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
719substs.set('containeruidbasemin', container_uid_base_min)
720substs.set('containeruidbasemax', container_uid_base_max)
721
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722nobody_user = get_option('nobody-user')
723nobody_group = get_option('nobody-group')
724
Chen Qi2484bff2018-07-23 14:53:09 +0800725if not meson.is_cross_build()
726 getent_result = run_command('getent', 'passwd', '65534')
727 if getent_result.returncode() == 0
728 name = getent_result.stdout().split(':')[0]
729 if name != nobody_user
730 warning('\n' +
731 '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) +
732 'Your build will result in an user table setup that is incompatible with the local system.')
733 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100734 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800735 id_result = run_command('id', '-u', nobody_user)
736 if id_result.returncode() == 0
737 id = id_result.stdout().to_int()
738 if id != 65534
739 warning('\n' +
740 '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) +
741 'Your build will result in an user table setup that is incompatible with the local system.')
742 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744
Chen Qi2484bff2018-07-23 14:53:09 +0800745 getent_result = run_command('getent', 'group', '65534')
746 if getent_result.returncode() == 0
747 name = getent_result.stdout().split(':')[0]
748 if name != nobody_group
749 warning('\n' +
750 '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) +
751 'Your build will result in an group table setup that is incompatible with the local system.')
752 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100753 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800754 id_result = run_command('id', '-g', nobody_group)
755 if id_result.returncode() == 0
756 id = id_result.stdout().to_int()
757 if id != 65534
758 warning('\n' +
759 '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) +
760 'Your build will result in an group table setup that is incompatible with the local system.')
761 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100762 endif
763endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900764if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900765 warning('\n' +
766 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
767 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900768endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100769
770conf.set_quoted('NOBODY_USER_NAME', nobody_user)
771conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900772substs.set('NOBODY_USER_NAME', nobody_user)
773substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100774
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775tty_gid = get_option('tty-gid')
776conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400777substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Ikey Doherty84786b82017-12-03 12:28:23 +0000779# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900780users_gid = get_option('users-gid')
781substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000782
Yu Watanabe348b4432018-05-07 18:17:35 +0900783conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
784conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785
Michael Bieblace5e312018-07-13 23:36:13 +0200786dev_kvm_mode = get_option('dev-kvm-mode')
787substs.set('DEV_KVM_MODE', dev_kvm_mode)
788conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100789group_render_mode = get_option('group-render-mode')
790substs.set('GROUP_RENDER_MODE', group_render_mode)
791conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400793kill_user_processes = get_option('default-kill-user-processes')
794conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100795conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400796substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400798dns_servers = get_option('dns-servers')
799conf.set_quoted('DNS_SERVERS', dns_servers)
800substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400802ntp_servers = get_option('ntp-servers')
803conf.set_quoted('NTP_SERVERS', ntp_servers)
804substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Dave Reisner8ca9e922018-12-28 07:38:36 -0500806default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900807if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800808 if not meson.is_cross_build()
809 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
810 default_locale = run_command(choose_default_locale_sh).stdout().strip()
811 else
812 default_locale = 'C.UTF-8'
813 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900814endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500815conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
816
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
818
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200819service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700820watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
821substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200822
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400823substs.set('SUSHELL', get_option('debug-shell'))
824substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200825conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827enable_debug_hashmap = false
828enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900829enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200830foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900831 if name == 'hashmap'
832 enable_debug_hashmap = true
833 elif name == 'mmap-cache'
834 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900835 elif name == 'siphash'
836 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900837 else
838 message('unknown debug option "@0@", ignoring'.format(name))
839 endif
840endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
842conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900843conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400844
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200845conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200846conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200847
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100848default_user_path = get_option('user-path')
849if default_user_path != ''
850 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100851 default_user_path_display = default_user_path
852else
853 # meson 0.49 fails when ?: is used in .format()
854 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100855endif
856
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100857
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858#####################################################################
859
860threads = dependency('threads')
861librt = cc.find_library('rt')
862libm = cc.find_library('m')
863libdl = cc.find_library('dl')
864libcrypt = cc.find_library('crypt')
865
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400866libcap = dependency('libcap', required : false)
867if not libcap.found()
868 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
869 libcap = cc.find_library('cap')
870endif
871
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100873 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100875want_libfdisk = get_option('fdisk')
876if want_libfdisk != 'false' and not skip_deps
877 libfdisk = dependency('fdisk',
878 required : want_libfdisk == 'true')
879 have = libfdisk.found()
880else
881 have = false
882 libfdisk = []
883endif
884conf.set10('HAVE_LIBFDISK', have)
885
Lennart Poettering70a5db52019-07-04 18:35:39 +0200886want_pwquality = get_option('pwquality')
887if want_pwquality != 'false' and not skip_deps
888 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
889 have = libpwquality.found()
890else
891 have = false
892 libpwquality = []
893endif
894conf.set10('HAVE_PWQUALITY', have)
895
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000897if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400899 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000909if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libselinux = dependency('libselinux',
911 version : '>= 2.1.9',
912 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000921if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libapparmor = dependency('libapparmor',
923 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931smack_run_label = get_option('smack-run-label')
932if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
935
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400936want_polkit = get_option('polkit')
937install_polkit = false
938install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000939if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libpolkit = dependency('polkit-gobject-1',
943 required : false)
944 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
945 message('Old polkit detected, will install pkla files')
946 install_polkit_pkla = true
947 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000952if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957 libacl = []
958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400960
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000972if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000982if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libkmod = dependency('libkmod',
984 version : '>= 15',
985 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000994if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libpam = cc.find_library('pam', required : want_pam == 'true')
996 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libpam = []
1001 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004
1005want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001006if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libmicrohttpd = dependency('libmicrohttpd',
1008 version : '>= 0.9.33',
1009 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001018if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001020 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001023
1024 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1025 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001033if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcurl = dependency('libcurl',
1035 version : '>= 7.32.0',
1036 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001045want_libidn2 = get_option('libidn2')
1046if want_libidn == 'true' and want_libidn2 == 'true'
1047 error('libidn and libidn2 cannot be requested simultaneously')
1048endif
1049
Yu Watanabe1b931392019-06-29 03:13:30 +09001050if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001051 libidn = dependency('libidn2',
1052 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libidn.found()
1054else
1055 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001056 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001059if not have and want_libidn != 'false' and not skip_deps
1060 # libidn is used for both libidn and libidn2 objects
1061 libidn = dependency('libidn',
1062 required : want_libidn == 'true')
1063 have = libidn.found()
1064else
1065 have = false
1066endif
1067conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001070if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libiptc = dependency('libiptc',
1072 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001081if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libqrencode = dependency('libqrencode',
1083 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001092if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1094 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
1098endif
1099if not have
1100 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libgcrypt = []
1102 libgpg_error = []
1103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001107if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libgnutls = dependency('gnutls',
1109 version : '>= 3.1.4',
1110 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001118want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001119if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001120 libopenssl = dependency('openssl',
1121 version : '>= 1.1.0',
1122 required : want_openssl == 'true')
1123 have = libopenssl.found()
1124else
1125 have = false
1126 libopenssl = []
1127endif
1128conf.set10('HAVE_OPENSSL', have)
1129
Lennart Poettering839fddb2019-11-05 11:49:27 +01001130want_p11kit = get_option('p11kit')
1131if want_p11kit != 'false' and not skip_deps
1132 libp11kit = dependency('p11-kit-1',
1133 version : '>= 0.23.3',
1134 required : want_p11kit == 'true')
1135 have = libp11kit.found()
1136else
1137 have = false
1138 libp11kit = []
1139endif
1140conf.set10('HAVE_P11KIT', have)
1141
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001143if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libdw = dependency('libdw',
1145 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001154if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libz = dependency('zlib',
1156 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001165if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libbzip2 = cc.find_library('bz2',
1167 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
1175want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001176if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 libxz = dependency('liblzma',
1178 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
1186want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001187if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001189 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001198want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001199if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001200 libxkbcommon = dependency('xkbcommon',
1201 version : '>= 0.3.0',
1202 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001204else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001206 libxkbcommon = []
1207endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001209
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001210want_pcre2 = get_option('pcre2')
1211if want_pcre2 != 'false'
1212 libpcre2 = dependency('libpcre2-8',
1213 required : want_pcre2 == 'true')
1214 have = libpcre2.found()
1215else
1216 have = false
1217 libpcre2 = []
1218endif
1219conf.set10('HAVE_PCRE2', have)
1220
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001222if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 libglib = dependency('glib-2.0',
1224 version : '>= 2.22.0',
1225 required : want_glib == 'true')
1226 libgobject = dependency('gobject-2.0',
1227 version : '>= 2.22.0',
1228 required : want_glib == 'true')
1229 libgio = dependency('gio-2.0',
1230 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001231 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001232else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 libglib = []
1235 libgobject = []
1236 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239
1240want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001241if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001242 libdbus = dependency('dbus-1',
1243 version : '>= 1.3.2',
1244 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001248 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001249endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251
Yu Watanabe42303dc2017-06-18 05:22:32 +09001252default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001253if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001254 default_dnssec = 'no'
1255endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001256if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001257 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1258 default_dnssec = 'no'
1259endif
1260conf.set('DEFAULT_DNSSEC_MODE',
1261 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1262substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1263
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001264dns_over_tls = get_option('dns-over-tls')
1265if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001266 if dns_over_tls == 'openssl'
1267 have_gnutls = false
1268 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001269 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001270 if dns_over_tls == 'gnutls' and not have_gnutls
1271 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1272 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001273 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001274 if dns_over_tls == 'gnutls' or have_gnutls
1275 have_openssl = false
1276 else
1277 have_openssl = conf.get('HAVE_OPENSSL') == 1
1278 if dns_over_tls != 'auto' and not have_openssl
1279 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001280 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001281 endif
1282 endif
1283 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001284else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001285 have = false
1286 have_gnutls = false
1287 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001288endif
1289conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001290conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1291conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001292
Iwan Timmerc9299be2018-06-13 20:26:24 +02001293default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001294if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001295 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001296endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001297if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001298 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 +02001299 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001300endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001301conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1302 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1303substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001304
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001305want_repart = get_option('repart')
1306if want_repart != 'false'
1307 have = (conf.get('HAVE_OPENSSL') == 1 and
1308 conf.get('HAVE_LIBFDISK') == 1)
1309 if want_repart == 'true' and not have
1310 error('repart support was requested, but dependencies are not available')
1311 endif
1312else
1313 have = false
1314endif
1315conf.set10('ENABLE_REPART', have)
1316
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001318if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001319 have = (conf.get('HAVE_LIBCURL') == 1 and
1320 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001321 conf.get('HAVE_XZ') == 1 and
1322 conf.get('HAVE_GCRYPT') == 1)
1323 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 error('importd support was requested, but dependencies are not available')
1325 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001326else
1327 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001330
Lennart Poettering70a5db52019-07-04 18:35:39 +02001331want_homed = get_option('homed')
1332if want_homed != 'false'
1333 have = (conf.get('HAVE_OPENSSL') == 1 and
1334 conf.get('HAVE_LIBFDISK') == 1 and
1335 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1336 if want_homed == 'true' and not have
1337 error('homed support was requested, but dependencies are not available')
1338 endif
1339else
1340 have = false
1341endif
1342conf.set10('ENABLE_HOMED', have)
1343
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001344have = have and conf.get('HAVE_PAM') == 1
1345conf.set10('ENABLE_PAM_HOME', have)
1346
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001348if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001349 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1350 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1352 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001353 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 # config should be installed when any of the programs are built.
1355 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1356 error('remote support was requested, but dependencies are not available')
1357 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001358 have = have_deps[0] or have_deps[1]
1359else
1360 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001362conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001364foreach term : ['utmp',
1365 'hibernate',
1366 'environment-d',
1367 'binfmt',
1368 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001369 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001370 'resolve',
1371 'logind',
1372 'hostnamed',
1373 'localed',
1374 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001375 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001376 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001377 'networkd',
1378 'timedated',
1379 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001380 'firstboot',
1381 'randomseed',
1382 'backlight',
1383 'vconsole',
1384 'quotacheck',
1385 'sysusers',
1386 'tmpfiles',
1387 'hwdb',
1388 'rfkill',
1389 'ldconfig',
1390 'efi',
1391 'tpm',
1392 'ima',
1393 'smack',
1394 'gshadow',
1395 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001396 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001397 'nss-systemd']
1398 have = get_option(term)
1399 name = 'ENABLE_' + term.underscorify().to_upper()
1400 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401endforeach
1402
Yu Watanabe08540a92018-07-18 09:25:57 +09001403foreach tuple : [['nss-mymachines', 'machined'],
1404 ['nss-resolve', 'resolve']]
1405 want = get_option(tuple[0])
1406 if want != 'false'
1407 have = get_option(tuple[1])
1408 if want == 'true' and not have
1409 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1410 endif
1411 else
1412 have = false
1413 endif
1414 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1415 conf.set10(name, have)
1416endforeach
1417
1418enable_nss = false
1419foreach term : ['ENABLE_NSS_MYHOSTNAME',
1420 'ENABLE_NSS_MYMACHINES',
1421 'ENABLE_NSS_RESOLVE',
1422 'ENABLE_NSS_SYSTEMD']
1423 if conf.get(term) == 1
1424 enable_nss = true
1425 endif
1426endforeach
1427conf.set10('ENABLE_NSS', enable_nss)
1428
Yu Watanabe348b4432018-05-07 18:17:35 +09001429conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001430
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001431tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001432fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001433
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001434conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001435
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436#####################################################################
1437
1438if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001439 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001440
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001441 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001442 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001443 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001444 elif efi_arch == 'x86_64'
1445 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001446 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 elif efi_arch == 'arm'
1448 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001449 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001450 elif efi_arch == 'aarch64'
1451 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001452 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001453 else
1454 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001455 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001458 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001459 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001460
Yu Watanabeac093402018-05-10 16:04:16 +09001461 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001462else
1463 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001465conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466
1467#####################################################################
1468
1469config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 output : 'config.h',
1471 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
Yu Watanabe348b4432018-05-07 18:17:35 +09001473meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1474
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001476 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477 'src/shared',
1478 'src/systemd',
1479 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001480 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001481 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482 'src/resolve',
1483 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001484 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485 'src/login',
1486 'src/udev',
1487 'src/libudev',
1488 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001489 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001490 'src/libsystemd/sd-bus',
1491 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001492 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493 'src/libsystemd/sd-hwdb',
1494 'src/libsystemd/sd-id128',
1495 'src/libsystemd/sd-netlink',
1496 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001497 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001499 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500
1501add_project_arguments('-include', 'config.h', language : 'c')
1502
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001503generate_gperfs = find_program('tools/generate-gperfs.py')
1504
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505subdir('po')
1506subdir('catalog')
1507subdir('src/systemd')
1508subdir('src/basic')
1509subdir('src/libsystemd')
1510subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001513
1514libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001515 'journal-core',
1516 libjournal_core_sources,
1517 journald_gperf_c,
1518 include_directories : includes,
1519 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520
Davide Cavalca1485aac2019-02-27 11:19:07 -05001521libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001524 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001525 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 include_directories : includes,
1527 link_args : ['-shared',
1528 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001529 link_with : [libbasic,
1530 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001531 link_whole : [libsystemd_static,
1532 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 dependencies : [threads,
1534 librt,
1535 libxz,
1536 liblz4],
1537 link_depends : libsystemd_sym,
1538 install : true,
1539 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001540
Davide Cavalca70848ec2018-04-09 02:43:35 -07001541static_libsystemd = get_option('static-libsystemd')
1542static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1543
1544install_libsystemd_static = static_library(
1545 'systemd',
1546 libsystemd_sources,
1547 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001548 basic_sources,
1549 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001550 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001551 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001552 build_by_default : static_libsystemd != 'false',
1553 install : static_libsystemd != 'false',
1554 install_dir : rootlibdir,
1555 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1556 dependencies : [threads,
1557 librt,
1558 libxz,
1559 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001560 libcap,
1561 libblkid,
1562 libmount,
1563 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001564 libgcrypt],
1565 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1566
Mario Limonciellob61d7772019-09-09 22:49:35 +01001567#Generate autosuspend rules
1568make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1569
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570############################################################
1571
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001572# binaries that have --help and are intended for use by humans,
1573# usually, but not always, installed in /bin.
1574public_programs = []
1575
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576subdir('src/libudev')
1577subdir('src/shared')
1578subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001579subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580subdir('src/udev')
1581subdir('src/network')
1582
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001583subdir('src/analyze')
1584subdir('src/journal-remote')
1585subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001586subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001587subdir('src/hostname')
1588subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001589subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001590subdir('src/kernel-install')
1591subdir('src/locale')
1592subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001593subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001594subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001595subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001596subdir('src/nspawn')
1597subdir('src/resolve')
1598subdir('src/timedate')
1599subdir('src/timesync')
1600subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001601subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001602
1603subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001604subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001605subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001606subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001607
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001608############################################################
1609
1610# only static linking apart from libdl, to make sure that the
1611# module is linked to all libraries that it uses.
1612test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 'test-dlopen',
1614 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001615 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 include_directories : includes,
1617 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001618 dependencies : [libdl],
1619 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001620
Yu Watanabe08540a92018-07-18 09:25:57 +09001621foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001622 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001623 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1624 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001625
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001626 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 if condition
1628 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001629
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001631 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001632
Lennart Poettering1684c562019-07-04 18:31:11 +02001633 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1634 if tuple.length() > 2
1635 sources += tuple[2].split()
1636 endif
1637
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 nss = shared_library(
1639 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001640 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001641 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 version : '2',
1643 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001644 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1645 link_args : ['-Wl,-z,nodelete',
1646 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001647 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001648 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001649 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001650 libbasic],
1651 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001652 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 link_depends : sym,
1654 install : true,
1655 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001656
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 # We cannot use shared_module because it does not support version suffix.
1658 # Unfortunately shared_library insists on creating the symlink…
1659 meson.add_install_script('sh', '-c',
1660 'rm $DESTDIR@0@/libnss_@1@.so'
1661 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001662
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001663 if want_tests != 'false'
1664 test('dlopen-nss_' + module,
1665 test_dlopen,
1666 # path to dlopen must include a slash
1667 args : nss.full_path())
1668 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001669 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001670endforeach
1671
1672############################################################
1673
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674executable('systemd',
1675 systemd_sources,
1676 include_directories : includes,
1677 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001678 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001679 dependencies : [versiondep,
1680 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681 librt,
1682 libseccomp,
1683 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001684 libmount,
1685 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001686 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001687 install : true,
1688 install_dir : rootlibexecdir)
1689
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001690meson.add_install_script(meson_make_symlink,
1691 join_paths(rootlibexecdir, 'systemd'),
1692 join_paths(rootsbindir, 'init'))
1693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694exe = executable('systemd-analyze',
1695 systemd_analyze_sources,
1696 include_directories : includes,
1697 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001698 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001699 dependencies : [versiondep,
1700 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001701 librt,
1702 libseccomp,
1703 libselinux,
1704 libmount,
1705 libblkid],
1706 install_rpath : rootlibexecdir,
1707 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001708public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709
1710executable('systemd-journald',
1711 systemd_journald_sources,
1712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001713 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001714 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715 dependencies : [threads,
1716 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001717 liblz4,
1718 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001719 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720 install : true,
1721 install_dir : rootlibexecdir)
1722
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723exe = executable('systemd-cat',
1724 systemd_cat_sources,
1725 include_directories : includes,
1726 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001727 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001728 dependencies : [threads],
1729 install_rpath : rootlibexecdir,
1730 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001731public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001733exe = executable('journalctl',
1734 journalctl_sources,
1735 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001736 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001737 dependencies : [threads,
1738 libqrencode,
1739 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001740 liblz4,
1741 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001745public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001746
1747executable('systemd-getty-generator',
1748 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001750 link_with : [libshared],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754
1755executable('systemd-debug-generator',
1756 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001763executable('systemd-run-generator',
1764 'src/run-generator/run-generator.c',
1765 include_directories : includes,
1766 link_with : [libshared],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : systemgeneratordir)
1770
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001771executable('systemd-fstab-generator',
1772 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001773 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001774 link_with : [libcore_shared,
1775 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001780if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('30-systemd-environment-d-generator',
1782 'src/environment-d-generator/environment-d-generator.c',
1783 include_directories : includes,
1784 link_with : [libshared],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001788
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 meson.add_install_script(meson_make_symlink,
1790 join_paths(sysconfdir, 'environment'),
1791 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792endif
1793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001794if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 executable('systemd-hibernate-resume-generator',
1796 'src/hibernate-resume/hibernate-resume-generator.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 install_rpath : rootlibexecdir,
1800 install : true,
1801 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 executable('systemd-hibernate-resume',
1804 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001805 include_directories : includes,
1806 link_with : [libshared],
1807 install_rpath : rootlibexecdir,
1808 install : true,
1809 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810endif
1811
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001812if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 executable('systemd-gpt-auto-generator',
1814 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001815 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001817 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 dependencies : libblkid,
1819 install_rpath : rootlibexecdir,
1820 install : true,
1821 install_dir : systemgeneratordir)
1822
1823 exe = executable('systemd-dissect',
1824 'src/dissect/dissect.c',
1825 include_directories : includes,
1826 link_with : [libshared],
1827 install_rpath : rootlibexecdir,
1828 install : true,
1829 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001830 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001831endif
1832
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001833if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 executable('systemd-resolved',
1835 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001836 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001837 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001838 libbasic_gcrypt,
1839 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001840 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001841 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 install : true,
1843 install_dir : rootlibexecdir)
1844
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001845 exe = executable('resolvectl',
1846 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001847 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001848 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001849 libbasic_gcrypt,
1850 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001852 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 libm,
1854 libidn],
1855 install_rpath : rootlibexecdir,
1856 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001857 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001858
1859 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001860 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001861 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001862
1863 meson.add_install_script(meson_make_symlink,
1864 join_paths(bindir, 'resolvectl'),
1865 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001866endif
1867
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001868if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869 executable('systemd-logind',
1870 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001871 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001872 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001873 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001874 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001876 install_rpath : rootlibexecdir,
1877 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001878 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001879
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 exe = executable('loginctl',
1881 loginctl_sources,
1882 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001883 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001884 dependencies : [threads,
1885 liblz4,
1886 libxz],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001890 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 exe = executable('systemd-inhibit',
1893 'src/login/inhibit.c',
1894 include_directories : includes,
1895 link_with : [libshared],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001899 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001901 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001902 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 pam_systemd = shared_library(
1904 'pam_systemd',
1905 pam_systemd_c,
1906 name_prefix : '',
1907 include_directories : includes,
1908 link_args : ['-shared',
1909 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001910 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 libshared_static],
1912 dependencies : [threads,
1913 libpam,
1914 libpam_misc],
1915 link_depends : pam_systemd_sym,
1916 install : true,
1917 install_dir : pamlibdir)
1918
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001919 if want_tests != 'false'
1920 test('dlopen-pam_systemd',
1921 test_dlopen,
1922 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001923 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001924 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001927 executable('systemd-user-runtime-dir',
1928 user_runtime_dir_sources,
1929 include_directories : includes,
1930 link_with : [libshared],
1931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : rootlibexecdir)
1934endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001936if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 executable('systemd-user-sessions',
1938 'src/user-sessions/user-sessions.c',
1939 include_directories : includes,
1940 link_with : [libshared],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944endif
1945
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001946if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 exe = executable('bootctl',
1948 'src/boot/bootctl.c',
1949 include_directories : includes,
1950 link_with : [libshared],
1951 dependencies : [libblkid],
1952 install_rpath : rootlibexecdir,
1953 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001954 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001955
1956 executable('systemd-bless-boot',
1957 'src/boot/bless-boot.c',
1958 include_directories : includes,
1959 link_with : [libshared],
1960 dependencies : [libblkid],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001964
1965 executable('systemd-bless-boot-generator',
1966 'src/boot/bless-boot-generator.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972endif
1973
Lennart Poetteringf876f532018-06-25 16:07:33 +02001974executable('systemd-boot-check-no-failures',
1975 'src/boot/boot-check-no-failures.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 dependencies : [libblkid],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootlibexecdir)
1982
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001983exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [threads],
1987 install_rpath : rootlibexecdir,
1988 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001989public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990
Felipe Satelerf3794362018-05-22 15:08:57 -04001991
1992if get_option('link-systemctl-shared')
1993 systemctl_link_with = [libshared]
1994else
1995 systemctl_link_with = [libsystemd_static,
1996 libshared_static,
1997 libjournal_client,
1998 libbasic_gcrypt]
1999endif
2000
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01002001exe = executable('systemctl',
2002 'src/systemctl/systemctl.c',
2003 'src/systemctl/sysv-compat.h',
2004 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002005 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002006 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007 dependencies : [threads,
2008 libcap,
2009 libselinux,
2010 libxz,
2011 liblz4],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002015public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002016
Lennart Poettering61d05782018-04-16 21:41:40 +02002017if conf.get('ENABLE_PORTABLED') == 1
2018 executable('systemd-portabled',
2019 systemd_portabled_sources,
2020 include_directories : includes,
2021 link_with : [libshared],
2022 dependencies : [threads],
2023 install_rpath : rootlibexecdir,
2024 install : true,
2025 install_dir : rootlibexecdir)
2026
2027 exe = executable('portablectl', 'src/portable/portablectl.c',
2028 include_directories : includes,
2029 link_with : [libshared],
2030 dependencies : [threads],
2031 install_rpath : rootlibexecdir,
2032 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002033 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002034 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002035endif
2036
Lennart Poetteringd093b622019-07-04 18:33:30 +02002037if conf.get('ENABLE_USERDB') == 1
2038 executable('systemd-userwork',
2039 systemd_userwork_sources,
2040 include_directories : includes,
2041 link_with : [libshared],
2042 dependencies : [threads],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : rootlibexecdir)
2046
2047 executable('systemd-userdbd',
2048 systemd_userdbd_sources,
2049 include_directories : includes,
2050 link_with : [libshared],
2051 dependencies : [threads],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002055
2056 executable('userdbctl',
2057 userdbctl_sources,
2058 include_directories : includes,
2059 link_with : [libshared],
2060 dependencies : [threads],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002064endif
2065
Lennart Poettering70a5db52019-07-04 18:35:39 +02002066if conf.get('ENABLE_HOMED') == 1
2067 executable('systemd-homework',
2068 systemd_homework_sources,
2069 include_directories : includes,
2070 link_with : [libshared],
2071 dependencies : [threads,
2072 libcryptsetup,
2073 libblkid,
2074 libcrypt,
2075 libopenssl,
2076 libfdisk,
2077 libp11kit],
2078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : rootlibexecdir)
2081
2082 executable('systemd-homed',
2083 systemd_homed_sources,
2084 include_directories : includes,
2085 link_with : [libshared],
2086 dependencies : [threads,
2087 libcrypt,
2088 libopenssl,
2089 libpwquality],
2090 install_rpath : rootlibexecdir,
2091 install : true,
2092 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002093
2094 executable('homectl',
2095 homectl_sources,
2096 include_directories : includes,
2097 link_with : [libshared],
2098 dependencies : [threads,
2099 libcrypt,
2100 libopenssl,
2101 libp11kit,
2102 libpwquality],
2103 install_rpath : rootlibexecdir,
2104 install : true,
2105 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002106
2107 if conf.get('HAVE_PAM') == 1
2108 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2109 pam_systemd = shared_library(
2110 'pam_systemd_home',
2111 pam_systemd_home_c,
2112 name_prefix : '',
2113 include_directories : includes,
2114 link_args : ['-shared',
2115 '-Wl,--version-script=' + version_script_arg],
2116 link_with : [libsystemd_static,
2117 libshared_static],
2118 dependencies : [threads,
2119 libpam,
2120 libpam_misc,
2121 libcrypt],
2122 link_depends : pam_systemd_home_sym,
2123 install : true,
2124 install_dir : pamlibdir)
2125 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002126endif
2127
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002128foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2129 meson.add_install_script(meson_make_symlink,
2130 join_paths(rootbindir, 'systemctl'),
2131 join_paths(rootsbindir, alias))
2132endforeach
2133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002134if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 executable('systemd-backlight',
2136 'src/backlight/backlight.c',
2137 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002138 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002142endif
2143
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002144if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 executable('systemd-rfkill',
2146 'src/rfkill/rfkill.c',
2147 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002148 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152endif
2153
2154executable('systemd-system-update-generator',
2155 'src/system-update-generator/system-update-generator.c',
2156 include_directories : includes,
2157 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002158 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159 install : true,
2160 install_dir : systemgeneratordir)
2161
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002162if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002163 systemd_cryptsetup_sources = files('''
2164 src/cryptsetup/cryptsetup.c
2165 src/cryptsetup/cryptsetup-pkcs11.h
2166'''.split())
2167
2168 if conf.get('HAVE_P11KIT') == 1
2169 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2170 endif
2171
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002172 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002173 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 include_directories : includes,
2175 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002176 dependencies : [libcryptsetup,
2177 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178 install_rpath : rootlibexecdir,
2179 install : true,
2180 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-cryptsetup-generator',
2183 'src/cryptsetup/cryptsetup-generator.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 dependencies : [libcryptsetup],
2187 install_rpath : rootlibexecdir,
2188 install : true,
2189 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002191 executable('systemd-veritysetup',
2192 'src/veritysetup/veritysetup.c',
2193 include_directories : includes,
2194 link_with : [libshared],
2195 dependencies : [libcryptsetup],
2196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 executable('systemd-veritysetup-generator',
2201 'src/veritysetup/veritysetup-generator.c',
2202 include_directories : includes,
2203 link_with : [libshared],
2204 dependencies : [libcryptsetup],
2205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208endif
2209
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002210if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002211 executable('systemd-sysv-generator',
2212 'src/sysv-generator/sysv-generator.c',
2213 include_directories : includes,
2214 link_with : [libshared],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 executable('systemd-rc-local-generator',
2220 'src/rc-local-generator/rc-local-generator.c',
2221 include_directories : includes,
2222 link_with : [libshared],
2223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226endif
2227
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002228if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002229 executable('systemd-hostnamed',
2230 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002231 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002234 install : true,
2235 install_dir : rootlibexecdir)
2236
2237 exe = executable('hostnamectl',
2238 'src/hostname/hostnamectl.c',
2239 include_directories : includes,
2240 link_with : [libshared],
2241 install_rpath : rootlibexecdir,
2242 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002243 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244endif
2245
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002246if conf.get('ENABLE_LOCALED') == 1
2247 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 # logind will load libxkbcommon.so dynamically on its own
2249 deps = [libdl]
2250 else
2251 deps = []
2252 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002253
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002254 executable('systemd-localed',
2255 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002256 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002257 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002258 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002260 install : true,
2261 install_dir : rootlibexecdir)
2262
2263 exe = executable('localectl',
2264 localectl_sources,
2265 include_directories : includes,
2266 link_with : [libshared],
2267 install_rpath : rootlibexecdir,
2268 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002269 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270endif
2271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002272if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 executable('systemd-timedated',
2274 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002276 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 install_rpath : rootlibexecdir,
2278 install : true,
2279 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002280endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002281
Yu Watanabe6129ec82018-05-03 18:07:43 +09002282if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 exe = executable('timedatectl',
2284 'src/timedate/timedatectl.c',
2285 include_directories : includes,
2286 install_rpath : rootlibexecdir,
2287 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002288 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002290 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002291endif
2292
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002293if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002294 if get_option('link-timesyncd-shared')
2295 timesyncd_link_with = [libshared]
2296 else
2297 timesyncd_link_with = [libsystemd_static,
2298 libshared_static,
2299 libjournal_client,
2300 libbasic_gcrypt]
2301 endif
2302
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 executable('systemd-timesyncd',
2304 systemd_timesyncd_sources,
2305 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002306 link_with : [timesyncd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 dependencies : [threads,
2308 libm],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002312
2313 executable('systemd-time-wait-sync',
2314 'src/time-wait-sync/time-wait-sync.c',
2315 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002316 link_with : [timesyncd_link_with],
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002317 install_rpath : rootlibexecdir,
2318 install : true,
2319 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320endif
2321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002322if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 executable('systemd-machined',
2324 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 link_with : [libmachine_core,
2327 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328 install_rpath : rootlibexecdir,
2329 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002330 install_dir : rootlibexecdir)
2331
2332 exe = executable('machinectl',
2333 'src/machine/machinectl.c',
2334 include_directories : includes,
2335 link_with : [libshared],
2336 dependencies : [threads,
2337 libxz,
2338 liblz4],
2339 install_rpath : rootlibexecdir,
2340 install : true,
2341 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002342 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343endif
2344
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002345if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 executable('systemd-importd',
2347 systemd_importd_sources,
2348 include_directories : includes,
2349 link_with : [libshared],
2350 dependencies : [threads],
2351 install_rpath : rootlibexecdir,
2352 install : true,
2353 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002355 systemd_pull = executable('systemd-pull',
2356 systemd_pull_sources,
2357 include_directories : includes,
2358 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002359 dependencies : [versiondep,
2360 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002361 libz,
2362 libbzip2,
2363 libxz,
2364 libgcrypt],
2365 install_rpath : rootlibexecdir,
2366 install : true,
2367 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002369 systemd_import = executable('systemd-import',
2370 systemd_import_sources,
2371 include_directories : includes,
2372 link_with : [libshared],
2373 dependencies : [libcurl,
2374 libz,
2375 libbzip2,
2376 libxz],
2377 install_rpath : rootlibexecdir,
2378 install : true,
2379 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002381 systemd_import_fs = executable('systemd-import-fs',
2382 systemd_import_fs_sources,
2383 include_directories : includes,
2384 link_with : [libshared],
2385 install_rpath : rootlibexecdir,
2386 install : true,
2387 install_dir : rootlibexecdir)
2388
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002389 systemd_export = executable('systemd-export',
2390 systemd_export_sources,
2391 include_directories : includes,
2392 link_with : [libshared],
2393 dependencies : [libcurl,
2394 libz,
2395 libbzip2,
2396 libxz],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002400
2401 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402endif
2403
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002404if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002405 exe = executable('systemd-journal-upload',
2406 systemd_journal_upload_sources,
2407 include_directories : includes,
2408 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002409 dependencies : [versiondep,
2410 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002411 libcurl,
2412 libgnutls,
2413 libxz,
2414 liblz4],
2415 install_rpath : rootlibexecdir,
2416 install : true,
2417 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002418 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419endif
2420
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002421if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002422 s_j_remote = executable('systemd-journal-remote',
2423 systemd_journal_remote_sources,
2424 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002425 link_with : [libshared,
2426 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002427 dependencies : [threads,
2428 libmicrohttpd,
2429 libgnutls,
2430 libxz,
2431 liblz4],
2432 install_rpath : rootlibexecdir,
2433 install : true,
2434 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002436 s_j_gatewayd = executable('systemd-journal-gatewayd',
2437 systemd_journal_gatewayd_sources,
2438 include_directories : includes,
2439 link_with : [libshared],
2440 dependencies : [threads,
2441 libmicrohttpd,
2442 libgnutls,
2443 libxz,
2444 liblz4],
2445 install_rpath : rootlibexecdir,
2446 install : true,
2447 install_dir : rootlibexecdir)
2448 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449endif
2450
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002451if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 executable('systemd-coredump',
2453 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002455 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 libacl,
2458 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459 libxz,
2460 liblz4],
2461 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462 install : true,
2463 install_dir : rootlibexecdir)
2464
2465 exe = executable('coredumpctl',
2466 coredumpctl_sources,
2467 include_directories : includes,
2468 link_with : [libshared],
2469 dependencies : [threads,
2470 libxz,
2471 liblz4],
2472 install_rpath : rootlibexecdir,
2473 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002474 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475endif
2476
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002477if conf.get('ENABLE_PSTORE') == 1
2478 executable('systemd-pstore',
2479 systemd_pstore_sources,
2480 include_directories : includes,
2481 link_with : [libshared],
2482 dependencies : [threads,
2483 libacl,
2484 libdw,
2485 libxz,
2486 liblz4],
2487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002490endif
2491
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002492if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002493 exe = executable('systemd-binfmt',
2494 'src/binfmt/binfmt.c',
2495 include_directories : includes,
2496 link_with : [libshared],
2497 install_rpath : rootlibexecdir,
2498 install : true,
2499 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002500 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002501
2502 meson.add_install_script('sh', '-c',
2503 mkdir_p.format(binfmtdir))
2504 meson.add_install_script('sh', '-c',
2505 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2506endif
2507
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002508if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002509 exe = executable('systemd-repart',
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002510 systemd_repart_sources,
2511 include_directories : includes,
2512 link_with : [libshared],
2513 dependencies : [threads,
2514 libcryptsetup,
2515 libblkid,
2516 libfdisk,
2517 libopenssl],
2518 install_rpath : rootlibexecdir,
2519 install : true,
2520 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002521
2522 if want_tests != 'false'
2523 test('test-repart',
2524 test_repart_sh,
2525 args : exe.full_path())
2526 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002527endif
2528
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002529if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002530 executable('systemd-vconsole-setup',
2531 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532 include_directories : includes,
2533 link_with : [libshared],
2534 install_rpath : rootlibexecdir,
2535 install : true,
2536 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537endif
2538
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002539if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002540 executable('systemd-random-seed',
2541 'src/random-seed/random-seed.c',
2542 include_directories : includes,
2543 link_with : [libshared],
2544 install_rpath : rootlibexecdir,
2545 install : true,
2546 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547endif
2548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002549if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 executable('systemd-firstboot',
2551 'src/firstboot/firstboot.c',
2552 include_directories : includes,
2553 link_with : [libshared],
2554 dependencies : [libcrypt],
2555 install_rpath : rootlibexecdir,
2556 install : true,
2557 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558endif
2559
2560executable('systemd-remount-fs',
2561 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002563 link_with : [libcore_shared,
2564 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002565 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566 install : true,
2567 install_dir : rootlibexecdir)
2568
2569executable('systemd-machine-id-setup',
2570 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002572 link_with : [libcore_shared,
2573 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002574 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002575 install : true,
2576 install_dir : rootbindir)
2577
2578executable('systemd-fsck',
2579 'src/fsck/fsck.c',
2580 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002581 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002582 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002583 install : true,
2584 install_dir : rootlibexecdir)
2585
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002586executable('systemd-growfs',
2587 'src/partition/growfs.c',
2588 include_directories : includes,
2589 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002590 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002591 install_rpath : rootlibexecdir,
2592 install : true,
2593 install_dir : rootlibexecdir)
2594
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002595executable('systemd-makefs',
2596 'src/partition/makefs.c',
2597 include_directories : includes,
2598 link_with : [libshared],
2599 install_rpath : rootlibexecdir,
2600 install : true,
2601 install_dir : rootlibexecdir)
2602
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002603executable('systemd-sleep',
2604 'src/sleep/sleep.c',
2605 include_directories : includes,
2606 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002607 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608 install : true,
2609 install_dir : rootlibexecdir)
2610
Yu Watanabed25e1272019-01-03 02:32:57 +09002611install_data('src/sleep/sleep.conf',
2612 install_dir : pkgsysconfdir)
2613
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614exe = executable('systemd-sysctl',
2615 'src/sysctl/sysctl.c',
2616 include_directories : includes,
2617 link_with : [libshared],
2618 install_rpath : rootlibexecdir,
2619 install : true,
2620 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
2623executable('systemd-ac-power',
2624 'src/ac-power/ac-power.c',
2625 include_directories : includes,
2626 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002627 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628 install : true,
2629 install_dir : rootlibexecdir)
2630
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631exe = executable('systemd-detect-virt',
2632 'src/detect-virt/detect-virt.c',
2633 include_directories : includes,
2634 link_with : [libshared],
2635 install_rpath : rootlibexecdir,
2636 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002637public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639exe = executable('systemd-delta',
2640 'src/delta/delta.c',
2641 include_directories : includes,
2642 link_with : [libshared],
2643 install_rpath : rootlibexecdir,
2644 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002645public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647exe = executable('systemd-escape',
2648 'src/escape/escape.c',
2649 include_directories : includes,
2650 link_with : [libshared],
2651 install_rpath : rootlibexecdir,
2652 install : true,
2653 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002654public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656exe = executable('systemd-notify',
2657 'src/notify/notify.c',
2658 include_directories : includes,
2659 link_with : [libshared],
2660 install_rpath : rootlibexecdir,
2661 install : true,
2662 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002663public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002664
2665executable('systemd-volatile-root',
2666 'src/volatile-root/volatile-root.c',
2667 include_directories : includes,
2668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002669 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002670 install : true,
2671 install_dir : rootlibexecdir)
2672
2673executable('systemd-cgroups-agent',
2674 'src/cgroups-agent/cgroups-agent.c',
2675 include_directories : includes,
2676 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002677 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678 install : true,
2679 install_dir : rootlibexecdir)
2680
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002681exe = executable('systemd-id128',
2682 'src/id128/id128.c',
2683 include_directories : includes,
2684 link_with : [libshared],
2685 install_rpath : rootlibexecdir,
2686 install : true)
2687public_programs += exe
2688
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002689exe = executable('systemd-path',
2690 'src/path/path.c',
2691 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002692 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002693 install_rpath : rootlibexecdir,
2694 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002695public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002696
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002697exe = executable('systemd-ask-password',
2698 'src/ask-password/ask-password.c',
2699 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002700 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002701 install_rpath : rootlibexecdir,
2702 install : true,
2703 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002704public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002705
2706executable('systemd-reply-password',
2707 'src/reply-password/reply-password.c',
2708 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002709 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002710 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002711 install : true,
2712 install_dir : rootlibexecdir)
2713
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002714exe = executable('systemd-tty-ask-password-agent',
2715 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2716 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002717 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002718 install_rpath : rootlibexecdir,
2719 install : true,
2720 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002721public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002723exe = executable('systemd-cgls',
2724 'src/cgls/cgls.c',
2725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002726 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727 install_rpath : rootlibexecdir,
2728 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002729public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002730
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002731exe = executable('systemd-cgtop',
2732 'src/cgtop/cgtop.c',
2733 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002734 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002735 install_rpath : rootlibexecdir,
2736 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002737public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002738
2739executable('systemd-initctl',
2740 'src/initctl/initctl.c',
2741 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002742 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002743 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002744 install : true,
2745 install_dir : rootlibexecdir)
2746
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002747exe = executable('systemd-mount',
2748 'src/mount/mount-tool.c',
2749 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002750 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002751 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002752 install_rpath : rootlibexecdir,
2753 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002754public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002755
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002756meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002757 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002758
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002759exe = executable('systemd-run',
2760 'src/run/run.c',
2761 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002762 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002763 install_rpath : rootlibexecdir,
2764 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002765public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002767exe = executable('systemd-stdio-bridge',
2768 'src/stdio-bridge/stdio-bridge.c',
2769 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002770 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002771 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002772 install_rpath : rootlibexecdir,
2773 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002774public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002775
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002776exe = executable('busctl',
2777 'src/busctl/busctl.c',
2778 'src/busctl/busctl-introspect.c',
2779 'src/busctl/busctl-introspect.h',
2780 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002781 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002782 install_rpath : rootlibexecdir,
2783 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002784public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002785
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002786if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 exe = executable('systemd-sysusers',
2788 'src/sysusers/sysusers.c',
2789 include_directories : includes,
2790 link_with : [libshared],
2791 install_rpath : rootlibexecdir,
2792 install : true,
2793 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002794 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002795endif
2796
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002797if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002798 exe = executable('systemd-tmpfiles',
2799 'src/tmpfiles/tmpfiles.c',
2800 include_directories : includes,
2801 link_with : [libshared],
2802 dependencies : [libacl],
2803 install_rpath : rootlibexecdir,
2804 install : true,
2805 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002806 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002807
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002808 if want_tests != 'false'
2809 test('test-systemd-tmpfiles',
2810 test_systemd_tmpfiles_py,
2811 # https://github.com/mesonbuild/meson/issues/2681
2812 args : exe.full_path())
2813 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002814endif
2815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002816if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 exe = executable('systemd-hwdb',
2818 'src/hwdb/hwdb.c',
2819 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2820 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002821 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002822 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002823 install : true,
2824 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002825 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002826endif
2827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002828if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002829 executable('systemd-quotacheck',
2830 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002831 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002832 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002833 install_rpath : rootlibexecdir,
2834 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002835 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002836endif
2837
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002838exe = executable('systemd-socket-proxyd',
2839 'src/socket-proxy/socket-proxyd.c',
2840 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002841 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002842 dependencies : [threads],
2843 install_rpath : rootlibexecdir,
2844 install : true,
2845 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002846public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002847
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002848exe = executable('systemd-udevd',
2849 systemd_udevd_sources,
2850 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002851 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002852 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002853 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002854 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002855 dependencies : [versiondep,
2856 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002857 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002858 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002859 libacl,
2860 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002861 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002862 install : true,
2863 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002864public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002865
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002866exe = executable('udevadm',
2867 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002868 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002869 include_directories : includes,
2870 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002871 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002872 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002873 dependencies : [versiondep,
2874 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002875 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002876 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002877 libacl,
2878 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002879 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002880 install : true,
2881 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002882public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002883
2884executable('systemd-shutdown',
2885 systemd_shutdown_sources,
2886 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002887 link_with : [libcore_shared,
2888 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002889 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002890 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002891 install : true,
2892 install_dir : rootlibexecdir)
2893
2894executable('systemd-update-done',
2895 'src/update-done/update-done.c',
2896 include_directories : includes,
2897 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002898 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002899 install : true,
2900 install_dir : rootlibexecdir)
2901
2902executable('systemd-update-utmp',
2903 'src/update-utmp/update-utmp.c',
2904 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002905 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002907 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002908 install : true,
2909 install_dir : rootlibexecdir)
2910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002911if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002912 executable('systemd-modules-load',
2913 'src/modules-load/modules-load.c',
2914 include_directories : includes,
2915 link_with : [libshared],
2916 dependencies : [libkmod],
2917 install_rpath : rootlibexecdir,
2918 install : true,
2919 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002920
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002921 meson.add_install_script('sh', '-c',
2922 mkdir_p.format(modulesloaddir))
2923 meson.add_install_script('sh', '-c',
2924 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002925endif
2926
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002927exe = executable('systemd-nspawn',
2928 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002929 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002930 link_with : [libcore_shared,
2931 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002932 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002933 dependencies : [libblkid,
2934 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002935 install_rpath : rootlibexecdir,
2936 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002937public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002938
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002939if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002940 executable('systemd-networkd',
2941 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002942 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002943 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002944 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002945 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002946 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002947 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002948 install_rpath : rootlibexecdir,
2949 install : true,
2950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002952 executable('systemd-networkd-wait-online',
2953 systemd_networkd_wait_online_sources,
2954 include_directories : includes,
2955 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002956 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002957 install_rpath : rootlibexecdir,
2958 install : true,
2959 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002960
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002961 exe = executable('networkctl',
2962 networkctl_sources,
2963 include_directories : includes,
2964 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002965 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002966 install_rpath : rootlibexecdir,
2967 install : true,
2968 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002969 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002970
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01002971 exe = executable('systemd-network-generator',
Yu Watanabe426c1d32019-07-13 03:35:04 +09002972 network_generator_sources,
2973 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002974 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002975 install_rpath : rootlibexecdir,
2976 install : true,
2977 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01002978
2979 if want_tests != 'false'
2980 test('test-network-generator-conversion',
2981 test_network_generator_conversion_sh,
2982 # https://github.com/mesonbuild/meson/issues/2681
2983 args : exe.full_path())
2984 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002985endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002986
2987executable('systemd-sulogin-shell',
2988 ['src/sulogin-shell/sulogin-shell.c'],
2989 include_directories : includes,
2990 link_with : [libshared],
2991 install_rpath : rootlibexecdir,
2992 install : true,
2993 install_dir : rootlibexecdir)
2994
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002995############################################################
2996
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002997custom_target(
2998 'systemd-runtest.env',
2999 output : 'systemd-runtest.env',
3000 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003001 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07003002 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003003 '} >@OUTPUT@'],
3004 build_by_default : true)
3005
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003006foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003007 sources = tuple[0]
3008 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3009 dependencies = tuple[2]
3010 condition = tuple.length() >= 4 ? tuple[3] : ''
3011 type = tuple.length() >= 5 ? tuple[4] : ''
3012 defs = tuple.length() >= 6 ? tuple[5] : []
3013 incs = tuple.length() >= 7 ? tuple[6] : includes
3014 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003015
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 name = sources[0].split('/')[-1].split('.')[0]
3017 if type.startswith('timeout=')
3018 timeout = type.split('=')[1].to_int()
3019 type = ''
3020 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003021
3022 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003023 exe = executable(
3024 name,
3025 sources,
3026 include_directories : incs,
3027 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003028 dependencies : [versiondep,
3029 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003030 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003031 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003032 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003033 install : install_tests,
3034 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003035
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003036 if type == 'manual'
3037 message('@0@ is a manual test'.format(name))
3038 elif type == 'unsafe' and want_tests != 'unsafe'
3039 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003040 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003041 test(name, exe,
3042 env : test_env,
3043 timeout : timeout)
3044 endif
3045 else
3046 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3047 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003048endforeach
3049
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003050exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003051 'test-libsystemd-sym',
3052 test_libsystemd_sym_c,
3053 include_directories : includes,
3054 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003055 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003056 install : install_tests,
3057 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003058if want_tests != 'false'
3059 test('test-libsystemd-sym', exe)
3060endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003061
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003062exe = executable(
3063 'test-libsystemd-static-sym',
3064 test_libsystemd_sym_c,
3065 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003066 link_with : [install_libsystemd_static],
3067 dependencies : [threads], # threads is already included in dependencies on the library,
3068 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003069 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003070 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003071 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003072if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003073 test('test-libsystemd-static-sym', exe)
3074endif
3075
3076exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003077 'test-libudev-sym',
3078 test_libudev_sym_c,
3079 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003080 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003081 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003082 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003083 install : install_tests,
3084 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003085if want_tests != 'false'
3086 test('test-libudev-sym', exe)
3087endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003088
3089exe = executable(
3090 'test-libudev-static-sym',
3091 test_libudev_sym_c,
3092 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003093 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003094 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003095 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003096 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003097 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003098if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003099 test('test-libudev-static-sym', exe)
3100endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003101
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003102############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003103
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003104fuzzer_exes = []
3105
Michael Olbrich59967402018-11-11 11:27:35 +01003106if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003107foreach tuple : fuzzers
3108 sources = tuple[0]
3109 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3110 dependencies = tuple[2]
3111 defs = tuple.length() >= 4 ? tuple[3] : []
3112 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003113 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003114
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003115 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003116 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003117 elif want_libfuzzer
3118 if fuzzing_engine.found()
3119 dependencies += fuzzing_engine
3120 else
3121 link_args += ['-fsanitize=fuzzer']
3122 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003123 else
3124 sources += 'src/fuzz/fuzz-main.c'
3125 endif
3126
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00003127 if want_fuzzbuzz
3128 sources += 'src/fuzz/fuzzer-entry-point.c'
3129 endif
3130
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003131 name = sources[0].split('/')[-1].split('.')[0]
3132
3133 fuzzer_exes += executable(
3134 name,
3135 sources,
3136 include_directories : [incs, include_directories('src/fuzz')],
3137 link_with : link_with,
3138 dependencies : dependencies,
3139 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003140 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003141 install : false)
3142endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003143endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003144
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003145run_target('fuzzers',
3146 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003147 command : ['true'])
3148
3149############################################################
3150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003151make_directive_index_py = find_program('tools/make-directive-index.py')
3152make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003153xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003154hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003155autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003157subdir('sysctl.d')
3158subdir('sysusers.d')
3159subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003160subdir('hwdb.d')
3161subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003162subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003163subdir('network')
3164subdir('man')
3165subdir('shell-completion/bash')
3166subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003167subdir('docs/sysvinit')
3168subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003169
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003170install_subdir('factory/etc',
3171 install_dir : factorydir)
3172
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003173install_data('xorg/50-systemd-user.sh',
3174 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003175install_data('modprobe.d/systemd.conf',
3176 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003177install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003178 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003179 'NEWS',
3180 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303181 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003182 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003183 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003184 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003185 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003186 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003187 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003188 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3189 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003190
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003191meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3192meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3193
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003194############################################################
3195
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003196meson_check_help = find_program('tools/meson-check-help.sh')
3197
3198foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003199 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003200 if want_tests != 'false'
3201 test('check-help-' + name,
3202 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003203 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003204 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003205endforeach
3206
3207############################################################
3208
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003209check_directives_sh = find_program('tools/check-directives.sh')
3210
3211if want_tests != 'false'
3212 test('check-directives',
3213 check_directives_sh,
3214 args : project_source_root)
3215endif
3216
3217############################################################
3218
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003219# Enable tests for all supported sanitizers
3220foreach tuple : sanitizers
3221 sanitizer = tuple[0]
3222 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003223
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003224 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003225 prev = ''
3226 foreach p : fuzz_regression_tests
3227 b = p.split('/')[-2]
3228 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003229
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003230 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003231
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003232 if name != prev
3233 if want_tests == 'false'
3234 message('Not compiling @0@ because tests is set to false'.format(name))
3235 elif slow_tests
3236 exe = custom_target(
3237 name,
3238 output : name,
3239 depends : build,
3240 command : [env, 'ln', '-fs',
3241 join_paths(build.full_path(), b),
3242 '@OUTPUT@'],
3243 build_by_default : true)
3244 else
3245 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3246 endif
3247 endif
3248 prev = name
3249
3250 if want_tests != 'false' and slow_tests
3251 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3252 env,
3253 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003254 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003255 endif
3256 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003257 endif
3258endforeach
3259
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003260
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003261############################################################
3262
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003263if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003264 all_files = run_command(
3265 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003266 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003267 'ls-files',
3268 ':/*.[ch]'])
3269 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003270
userwithuide85a6902017-08-09 13:41:44 +00003271 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003272 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003273 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003274 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003275 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003276 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003277 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003278endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003279
3280if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003281 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003282 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003283 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003284 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003285endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003286
3287if git.found()
3288 git_head = run_command(
3289 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003290 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003291 'rev-parse', 'HEAD']).stdout().strip()
3292 git_head_short = run_command(
3293 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003294 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003295 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3296
3297 run_target(
3298 'git-snapshot',
3299 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003300 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003301 git_head_short),
3302 '--prefix', 'systemd-@0@/'.format(git_head),
3303 'HEAD'])
3304endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003305
3306############################################################
3307
Lennart Poettering51b13862017-12-20 12:51:14 +01003308meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3309run_target(
3310 'check-api-docs',
3311 depends : [man, libsystemd, libudev],
3312 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3313
3314############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003315watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003316
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003317status = [
3318 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3319
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003320 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003321 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003322 'prefix directory: @0@'.format(prefixdir),
3323 'rootprefix directory: @0@'.format(rootprefixdir),
3324 'sysconf directory: @0@'.format(sysconfdir),
3325 'include directory: @0@'.format(includedir),
3326 'lib directory: @0@'.format(libdir),
3327 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003328 'SysV init scripts: @0@'.format(sysvinit_path),
3329 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003330 'PAM modules directory: @0@'.format(pamlibdir),
3331 'PAM configuration directory: @0@'.format(pamconfdir),
3332 'RPM macros directory: @0@'.format(rpmmacrosdir),
3333 'modprobe.d directory: @0@'.format(modprobedir),
3334 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3335 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3336 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3337 'bash completions directory: @0@'.format(bashcompletiondir),
3338 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003339 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003340 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3341 get_option('debug-tty')),
3342 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003343 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003344 'maximum system UID: @0@'.format(system_uid_max),
3345 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003346 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3347 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3348 'minimum container UID base: @0@'.format(container_uid_base_min),
3349 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003350 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003351 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003352 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003353 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003354 'nobody user name: @0@'.format(nobody_user),
3355 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003356 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003357 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003358
3359 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003360 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003361 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003362 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003363 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003364 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003365 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003366 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003367
3368alt_dns_servers = '\n '.join(dns_servers.split(' '))
3369alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3370status += [
3371 'default DNS servers: @0@'.format(alt_dns_servers),
3372 'default NTP servers: @0@'.format(alt_ntp_servers)]
3373
3374alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3375 '@@0@'.format(time_epoch)).stdout().strip()
3376status += [
3377 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3378
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003379status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003380 'static libsystemd: @0@'.format(static_libsystemd),
3381 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003382
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003383# TODO:
3384# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3385# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3386# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3387
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003388if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003389 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003390
3391 if have_gnu_efi
3392 status += [
3393 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003394 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003395 'EFI lds: @0@'.format(efi_lds),
3396 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003397 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003398 endif
3399endif
3400
3401found = []
3402missing = []
3403
3404foreach tuple : [
3405 ['libcryptsetup'],
3406 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003407 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003408 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003409 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003410 ['AUDIT'],
3411 ['IMA'],
3412 ['AppArmor'],
3413 ['SELinux'],
3414 ['SECCOMP'],
3415 ['SMACK'],
3416 ['zlib'],
3417 ['xz'],
3418 ['lz4'],
3419 ['bzip2'],
3420 ['ACL'],
3421 ['gcrypt'],
3422 ['qrencode'],
3423 ['microhttpd'],
3424 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003425 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003426 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003427 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003428 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003429 ['libidn'],
3430 ['libiptc'],
3431 ['elfutils'],
3432 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003433 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003434 ['vconsole'],
3435 ['quotacheck'],
3436 ['tmpfiles'],
3437 ['environment.d'],
3438 ['sysusers'],
3439 ['firstboot'],
3440 ['randomseed'],
3441 ['backlight'],
3442 ['rfkill'],
3443 ['logind'],
3444 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003445 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003446 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003447 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003448 ['importd'],
3449 ['hostnamed'],
3450 ['timedated'],
3451 ['timesyncd'],
3452 ['localed'],
3453 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003454 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003455 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3456 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003457 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003458 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003459 ['polkit'],
3460 ['legacy pkla', install_polkit_pkla],
3461 ['efi'],
3462 ['gnu-efi', have_gnu_efi],
3463 ['kmod'],
3464 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003465 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003466 ['blkid'],
3467 ['dbus'],
3468 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003469 ['nss-myhostname'],
3470 ['nss-mymachines'],
3471 ['nss-resolve'],
3472 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003473 ['hwdb'],
3474 ['tpm'],
3475 ['man pages', want_man],
3476 ['html pages', want_html],
3477 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003478 ['SysV compat'],
3479 ['utmp'],
3480 ['ldconfig'],
3481 ['hibernate'],
3482 ['adm group', get_option('adm-group')],
3483 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003484 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003485 ['debug hashmap'],
3486 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003487 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003488 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003489 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003490 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003491 ['link-udev-shared', get_option('link-udev-shared')],
3492 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003493 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003494 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003495]
3496
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003497 if tuple.length() >= 2
3498 cond = tuple[1]
3499 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003500 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3501 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003502 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003503 endif
3504 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003505 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003506 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003507 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003508 endif
3509endforeach
3510
3511status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003512 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003513 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003514 '',
3515 'disabled features: @0@'.format(', '.join(missing)),
3516 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003517message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003518
3519if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003520 warning('\n' +
3521 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3522 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3523 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003524endif