blob: ee7c28364245864bd8eab150cb7e7e3b35abb444 [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-Szmek7eb8a472019-04-03 10:00:14 +02004 version : '242',
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-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
32
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020033want_ossfuzz = get_option('oss-fuzz')
34want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000035want_fuzzbuzz = get_option('fuzzbuzz')
36if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
37 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020038endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000039
40skip_deps = want_ossfuzz or want_libfuzzer
41fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040043#####################################################################
44
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040045# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050046git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040047if git_hook.returncode() == 0
48 message(git_hook.stdout().strip())
49endif
50
51#####################################################################
52
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010053if get_option('split-usr') == 'auto'
54 split_usr = run_command('test', '-L', '/bin').returncode() != 0
55else
56 split_usr = get_option('split-usr') == 'true'
57endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010058conf.set10('HAVE_SPLIT_USR', split_usr,
59 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010060
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010061if get_option('split-bin') == 'auto'
62 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
63else
64 split_bin = get_option('split-bin') == 'true'
65endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010066conf.set10('HAVE_SPLIT_BIN', split_bin,
67 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010068
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010070# Unusual rootprefixdir values are used by some distros
71# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010072rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010073if rootprefixdir == ''
74 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010075endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010076rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077
78sysvinit_path = get_option('sysvinit-path')
79sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090080conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020081 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020083conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
84conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010085conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020086
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010087# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040088# encountered, so this should canonicalize various paths when they are
89# absolute or relative.
90prefixdir = get_option('prefix')
91if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040092 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040093endif
94bindir = join_paths(prefixdir, get_option('bindir'))
95libdir = join_paths(prefixdir, get_option('libdir'))
96sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
97includedir = join_paths(prefixdir, get_option('includedir'))
98datadir = join_paths(prefixdir, get_option('datadir'))
99localstatedir = join_paths('/', get_option('localstatedir'))
100
101rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100102rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400103rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
104
105rootlibdir = get_option('rootlibdir')
106if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400107 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400108endif
109
110# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200111pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
112pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400113polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
114polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
115polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400116xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900117rpmmacrosdir = get_option('rpmmacrosdir')
118if rpmmacrosdir != 'no'
119 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
120endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200121modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400122
123# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400124pkgdatadir = join_paths(datadir, 'systemd')
125environmentdir = join_paths(prefixdir, 'lib/environment.d')
126pkgsysconfdir = join_paths(sysconfdir, 'systemd')
127userunitdir = join_paths(prefixdir, 'lib/systemd/user')
128userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
129tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
130sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
131sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
132binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
133modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
134networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
135pkgincludedir = join_paths(includedir, 'systemd')
136systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
137usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
138systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
139userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
140systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
141systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
142systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
143systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
144udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
146udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
147catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
148kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
149factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
151testsdir = join_paths(prefixdir, 'lib/systemd/tests')
152systemdstatedir = join_paths(localstatedir, 'lib/systemd')
153catalogstatedir = join_paths(systemdstatedir, 'catalog')
154randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200155profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156
tblume75aaade2018-02-01 22:46:15 +0100157docdir = get_option('docdir')
158if docdir == ''
159 docdir = join_paths(datadir, 'doc/systemd')
160endif
161
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162dbuspolicydir = get_option('dbuspolicydir')
163if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussessionservicedir = get_option('dbussessionservicedir')
168if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172dbussystemservicedir = get_option('dbussystemservicedir')
173if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamlibdir = get_option('pamlibdir')
178if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182pamconfdir = get_option('pamconfdir')
183if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100187memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200188status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100189
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400191conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400192conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
193conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
194conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400195conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100196
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100197conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100198
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
201conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
203conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
204conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
205conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100206conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100207conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
209conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
210conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
211conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
212conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100213conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400214conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
216conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400217conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
218conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
219conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
220conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
221conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
222conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
224conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700225conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700226conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229conf.set_quoted('LIBDIR', libdir)
230conf.set_quoted('ROOTLIBDIR', rootlibdir)
231conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
232conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
234conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200235conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400236conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
237conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
238conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
239conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200240conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100241conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200242conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100245substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100246substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400247substs.set('exec_prefix', prefixdir)
248substs.set('libdir', libdir)
249substs.set('rootlibdir', rootlibdir)
250substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100251substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('bindir', bindir)
253substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('rootlibexecdir', rootlibexecdir)
255substs.set('systemunitdir', systemunitdir)
256substs.set('userunitdir', userunitdir)
257substs.set('systempresetdir', systempresetdir)
258substs.set('userpresetdir', userpresetdir)
259substs.set('udevhwdbdir', udevhwdbdir)
260substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400261substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200262substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400263substs.set('catalogdir', catalogdir)
264substs.set('tmpfilesdir', tmpfilesdir)
265substs.set('sysusersdir', sysusersdir)
266substs.set('sysctldir', sysctldir)
267substs.set('binfmtdir', binfmtdir)
268substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200269substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400270substs.set('systemgeneratordir', systemgeneratordir)
271substs.set('usergeneratordir', usergeneratordir)
272substs.set('systemenvgeneratordir', systemenvgeneratordir)
273substs.set('userenvgeneratordir', userenvgeneratordir)
274substs.set('systemshutdowndir', systemshutdowndir)
275substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400276substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400277substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
278substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400279substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
280substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
281substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100282substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200283substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200284substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200285substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400286
287#####################################################################
288
289cc = meson.get_compiler('c')
290pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400291check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100292meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400293
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200294want_tests = get_option('tests')
295slow_tests = want_tests != 'false' and get_option('slow-tests')
296install_tests = get_option('install-tests')
297
James Hilliard46e63a22018-12-27 09:16:20 +0800298if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200299 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200300 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200301else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200302 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400303endif
304
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500305if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200306 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
307 if fuzzing_engine.found()
308 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
309 elif cc.has_argument('-fsanitize=fuzzer-no-link')
310 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
311 else
312 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
313 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200314elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500315 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000316elif want_fuzzbuzz
317 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 -0500318endif
319
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900320possible_cc_flags = [
321 '-Wextra',
322 '-Werror=undef',
323 '-Wlogical-op',
324 '-Wmissing-include-dirs',
325 '-Wold-style-definition',
326 '-Wpointer-arith',
327 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900328 '-Wfloat-equal',
329 '-Wsuggest-attribute=noreturn',
330 '-Werror=missing-prototypes',
331 '-Werror=implicit-function-declaration',
332 '-Werror=missing-declarations',
333 '-Werror=return-type',
334 '-Werror=incompatible-pointer-types',
335 '-Werror=format=2',
336 '-Wstrict-prototypes',
337 '-Wredundant-decls',
338 '-Wmissing-noreturn',
339 '-Wimplicit-fallthrough=5',
340 '-Wshadow',
341 '-Wendif-labels',
342 '-Wstrict-aliasing=2',
343 '-Wwrite-strings',
344 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200345 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200346 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347 '-Wdate-time',
348 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700349
350 # negative arguments are correctly detected starting with meson 0.46.
351 '-Wno-unused-parameter',
352 '-Wno-missing-field-initializers',
353 '-Wno-unused-result',
354 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100355 '-Wno-error=#warnings', # clang
356 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700357
358 # work-around for gcc 7.1 turning this on on its own.
359 '-Wno-error=nonnull',
360
361 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
362 # optimizations enabled, producing essentially false positives.
363 '-Wno-maybe-uninitialized',
364
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365 '-ffast-math',
366 '-fno-common',
367 '-fdiagnostics-show-option',
368 '-fno-strict-aliasing',
369 '-fvisibility=hidden',
370 '-fstack-protector',
371 '-fstack-protector-strong',
372 '--param=ssp-buffer-size=4',
373]
374
375# --as-needed and --no-undefined are provided by meson by default,
376# run mesonconf to see what is enabled
377possible_link_flags = [
378 '-Wl,-z,relro',
379 '-Wl,-z,now',
380]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900382if cc.get_id() == 'clang'
383 possible_cc_flags += [
384 '-Wno-typedef-redefinition',
385 '-Wno-gnu-variable-sized-type-not-at-end',
386 ]
387endif
388
389if get_option('buildtype') != 'debug'
390 possible_cc_flags += [
391 '-ffunction-sections',
392 '-fdata-sections',
393 ]
394
395 possible_link_flags += '-Wl,--gc-sections'
396endif
397
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100398if get_option('b_ndebug') == 'true'
399 # With asserts disabled with get a bunch of warnings about variables which
400 # are used only in the asserts. This is not useful at all, so let's just silence
401 # those warnings.
402 possible_cc_flags += [
403 '-Wno-unused-variable',
404 '-Wno-unused-but-set-variable',
405 ]
406endif
407
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900408add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900409add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900410
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800411if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400412 #include <time.h>
413 #include <inttypes.h>
414 typedef uint64_t usec_t;
415 usec_t now(clockid_t clock);
416 int main(void) {
417 struct timespec now;
418 return 0;
419 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100420''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400421 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422endif
423
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200424cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400425
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200426has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
427
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428#####################################################################
429# compilation result tests
430
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400431conf.set('_GNU_SOURCE', true)
432conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200433conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434
435conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
436conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
437conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
438conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
439conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
440conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
441conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
442
443decl_headers = '''
444#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100445#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447
448foreach decl : ['char16_t',
449 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100450 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400452
453 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200454 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
455
456 if decl == 'struct statx'
457 if have
458 want_linux_stat_h = false
459 else
460 have = cc.sizeof(decl,
461 prefix : decl_headers + '#include <linux/stat.h>',
462 args : '-D_GNU_SOURCE') > 0
463 want_linux_stat_h = have
464 endif
465 endif
466
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200467 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468endforeach
469
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200470conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700471
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200473 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474endforeach
475
476foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100477 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100478 ['gettid', '''#include <sys/types.h>
479 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100480 ['pivot_root', '''#include <stdlib.h>
481 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100482 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400483 #include <sys/stat.h>
484 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100485 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100486 ['renameat2', '''#include <stdio.h>
487 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400488 ['kcmp', '''#include <linux/kcmp.h>'''],
489 ['keyctl', '''#include <sys/types.h>
490 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400492 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200493 ['bpf', '''#include <sys/syscall.h>
494 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100495 ['statx', '''#include <sys/types.h>
496 #include <sys/stat.h>
497 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100498 ['explicit_bzero' , '''#include <string.h>'''],
499 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100500 ['set_mempolicy', '''#include <stdlib.h>
501 #include <unistd.h>'''],
502 ['get_mempolicy', '''#include <stdlib.h>
503 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200507 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400508endforeach
509
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200511 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200512 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400513else
514 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200515 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400517endif
518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519#####################################################################
520
Davide Cavalca1485aac2019-02-27 11:19:07 -0500521vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
522 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100523 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100524 meson.project_version()]
525
Louis Taylord1084aa2019-01-21 21:45:36 +0000526version_h = vcs_tag(
527 input : 'src/version/version.h.in',
528 output : 'version.h',
529 command: vcs_tagger)
530
531versiondep = declare_dependency(sources: version_h)
532
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400535m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400537git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100538env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100539perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540
Davide Cavalca1485aac2019-02-27 11:19:07 -0500541meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400542mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400543test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
544splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400545
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
547# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500548progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550 ['kmod', '/usr/bin/kmod' ],
551 ['kexec', '/usr/sbin/kexec' ],
552 ['sulogin', '/usr/sbin/sulogin' ],
553 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
554 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
555 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
556 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
557 ]
558foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400559 path = get_option(prog[0] + '-path')
560 if path != ''
561 message('Using @1@ for @0@'.format(prog[0], path))
562 else
563 exe = find_program(prog[0],
564 '/usr/sbin/' + prog[0],
565 '/sbin/' + prog[0],
566 required: false)
567 path = exe.found() ? exe.path() : prog[1]
568 endif
569 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
570 conf.set_quoted(name, path)
571 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572endforeach
573
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500574conf.set_quoted('TELINIT', get_option('telinit-path'))
575
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400576if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100577 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400578endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579
580############################################################
581
582gperf = find_program('gperf')
583
584gperf_test_format = '''
585#include <string.h>
586const char * in_word_set(const char *, @0@);
587@1@
588'''
589gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
590gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
591gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
592if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
596 if cc.compiles(gperf_test)
597 gperf_len_type = 'unsigned'
598 else
599 error('unable to determine gperf len type')
600 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601endif
602message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400603conf.set('GPERF_LEN_TYPE', gperf_len_type,
604 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605
606############################################################
607
608if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100611foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'linux/memfd.h',
613 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200614 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615 'valgrind/memcheck.h',
616 'valgrind/valgrind.h',
617 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200619 conf.set10('HAVE_' + header.underscorify().to_upper(),
620 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621endforeach
622
623############################################################
624
625conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400626conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
627gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628
629default_hierarchy = get_option('default-hierarchy')
630conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
631 description : 'default cgroup hierarchy as string')
632if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
639
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100640default_net_naming_scheme = get_option('default-net-naming-scheme')
641conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
642
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900644if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400645 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900646 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648conf.set('TIME_EPOCH', time_epoch)
649
650system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900651if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 system_uid_max = run_command(
653 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800654 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
655 '/etc/login.defs').stdout().strip()
656 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900657 system_uid_max = 999
658 else
659 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800660 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662conf.set('SYSTEM_UID_MAX', system_uid_max)
663substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900666if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 system_gid_max = run_command(
668 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800669 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
670 '/etc/login.defs').stdout().strip()
671 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900672 system_gid_max = 999
673 else
674 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800675 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400677conf.set('SYSTEM_GID_MAX', system_gid_max)
678substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679
Yu Watanabeac093402018-05-10 16:04:16 +0900680dynamic_uid_min = get_option('dynamic-uid-min')
681dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100682conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
683conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
684substs.set('dynamicuidmin', dynamic_uid_min)
685substs.set('dynamicuidmax', dynamic_uid_max)
686
Yu Watanabeac093402018-05-10 16:04:16 +0900687container_uid_base_min = get_option('container-uid-base-min')
688container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100689conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
690conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
691substs.set('containeruidbasemin', container_uid_base_min)
692substs.set('containeruidbasemax', container_uid_base_max)
693
Lennart Poetteringafde4572017-12-05 11:00:24 +0100694nobody_user = get_option('nobody-user')
695nobody_group = get_option('nobody-group')
696
Chen Qi2484bff2018-07-23 14:53:09 +0800697if not meson.is_cross_build()
698 getent_result = run_command('getent', 'passwd', '65534')
699 if getent_result.returncode() == 0
700 name = getent_result.stdout().split(':')[0]
701 if name != nobody_user
702 warning('\n' +
703 '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) +
704 'Your build will result in an user table setup that is incompatible with the local system.')
705 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800707 id_result = run_command('id', '-u', nobody_user)
708 if id_result.returncode() == 0
709 id = id_result.stdout().to_int()
710 if id != 65534
711 warning('\n' +
712 '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) +
713 'Your build will result in an user table setup that is incompatible with the local system.')
714 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100715 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100716
Chen Qi2484bff2018-07-23 14:53:09 +0800717 getent_result = run_command('getent', 'group', '65534')
718 if getent_result.returncode() == 0
719 name = getent_result.stdout().split(':')[0]
720 if name != nobody_group
721 warning('\n' +
722 '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) +
723 'Your build will result in an group table setup that is incompatible with the local system.')
724 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100725 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800726 id_result = run_command('id', '-g', nobody_group)
727 if id_result.returncode() == 0
728 id = id_result.stdout().to_int()
729 if id != 65534
730 warning('\n' +
731 '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) +
732 'Your build will result in an group table setup that is incompatible with the local system.')
733 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100734 endif
735endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900736if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900737 warning('\n' +
738 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
739 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900740endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100741
742conf.set_quoted('NOBODY_USER_NAME', nobody_user)
743conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900744substs.set('NOBODY_USER_NAME', nobody_user)
745substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100746
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747tty_gid = get_option('tty-gid')
748conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400749substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750
Ikey Doherty84786b82017-12-03 12:28:23 +0000751# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900752users_gid = get_option('users-gid')
753substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000754
Yu Watanabe348b4432018-05-07 18:17:35 +0900755conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
756conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
Michael Bieblace5e312018-07-13 23:36:13 +0200758dev_kvm_mode = get_option('dev-kvm-mode')
759substs.set('DEV_KVM_MODE', dev_kvm_mode)
760conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100761group_render_mode = get_option('group-render-mode')
762substs.set('GROUP_RENDER_MODE', group_render_mode)
763conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400765kill_user_processes = get_option('default-kill-user-processes')
766conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100767conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400768substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400770dns_servers = get_option('dns-servers')
771conf.set_quoted('DNS_SERVERS', dns_servers)
772substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400774ntp_servers = get_option('ntp-servers')
775conf.set_quoted('NTP_SERVERS', ntp_servers)
776substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
Dave Reisner8ca9e922018-12-28 07:38:36 -0500778default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900779if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800780 if not meson.is_cross_build()
781 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
782 default_locale = run_command(choose_default_locale_sh).stdout().strip()
783 else
784 default_locale = 'C.UTF-8'
785 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900786endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500787conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
788
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
790
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400791substs.set('SUSHELL', get_option('debug-shell'))
792substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200793conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200795enable_debug_hashmap = false
796enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900797enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200798foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900799 if name == 'hashmap'
800 enable_debug_hashmap = true
801 elif name == 'mmap-cache'
802 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900803 elif name == 'siphash'
804 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900805 else
806 message('unknown debug option "@0@", ignoring'.format(name))
807 endif
808endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
810conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900811conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400812
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200813conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200814conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200815
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816#####################################################################
817
818threads = dependency('threads')
819librt = cc.find_library('rt')
820libm = cc.find_library('m')
821libdl = cc.find_library('dl')
822libcrypt = cc.find_library('crypt')
823
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400824libcap = dependency('libcap', required : false)
825if not libcap.found()
826 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
827 libcap = cc.find_library('cap')
828endif
829
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100831 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000834if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400836 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844
845want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000846if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libselinux = dependency('libselinux',
848 version : '>= 2.1.9',
849 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400854endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856
857want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000858if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 libapparmor = dependency('libapparmor',
860 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200863 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868smack_run_label = get_option('smack-run-label')
869if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
872
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400873want_polkit = get_option('polkit')
874install_polkit = false
875install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000876if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libpolkit = dependency('polkit-gobject-1',
880 required : false)
881 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
882 message('Old polkit detected, will install pkla files')
883 install_polkit_pkla = true
884 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400885endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400887
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400888want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000889if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400892else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894 libacl = []
895endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400897
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000899if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libaudit.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 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000909if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000919if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libkmod = dependency('libkmod',
921 version : '>= 15',
922 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000931if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libpam = cc.find_library('pam', required : want_pam == 'true')
933 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libpam = []
938 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000943if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libmicrohttpd = dependency('libmicrohttpd',
945 version : '>= 0.9.33',
946 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953
954want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000955if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libcryptsetup = dependency('libcryptsetup',
957 version : '>= 1.6.0',
958 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100960 have_sector = cc.has_member(
961 'struct crypt_params_plain',
962 'sector_size',
963 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100966 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100970conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000973if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libcurl = dependency('libcurl',
975 version : '>= 7.32.0',
976 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983
984want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400985want_libidn2 = get_option('libidn2')
986if want_libidn == 'true' and want_libidn2 == 'true'
987 error('libidn and libidn2 cannot be requested simultaneously')
988endif
989
Yu Watanabe1b931392019-06-29 03:13:30 +0900990if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400991 libidn = dependency('libidn2',
992 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libidn.found()
994else
995 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +0900996 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +0900999if not have and want_libidn != 'false' and not skip_deps
1000 # libidn is used for both libidn and libidn2 objects
1001 libidn = dependency('libidn',
1002 required : want_libidn == 'true')
1003 have = libidn.found()
1004else
1005 have = false
1006endif
1007conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001010if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libiptc = dependency('libiptc',
1012 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019
1020want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001021if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libqrencode = dependency('libqrencode',
1023 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001031want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001032if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001033 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1034 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001036else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = false
1038endif
1039if not have
1040 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001041 libgcrypt = []
1042 libgpg_error = []
1043endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001045
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001047if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libgnutls = dependency('gnutls',
1049 version : '>= 3.1.4',
1050 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001058want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001059if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001060 libopenssl = dependency('openssl',
1061 version : '>= 1.1.0',
1062 required : want_openssl == 'true')
1063 have = libopenssl.found()
1064else
1065 have = false
1066 libopenssl = []
1067endif
1068conf.set10('HAVE_OPENSSL', have)
1069
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001071if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libdw = dependency('libdw',
1073 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001082if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libz = dependency('zlib',
1084 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
1092want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001093if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libbzip2 = cc.find_library('bz2',
1095 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102
1103want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001104if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libxz = dependency('liblzma',
1106 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113
1114want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001115if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001117 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001126want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001127if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001128 libxkbcommon = dependency('xkbcommon',
1129 version : '>= 0.3.0',
1130 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001132else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001134 libxkbcommon = []
1135endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001137
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001138want_pcre2 = get_option('pcre2')
1139if want_pcre2 != 'false'
1140 libpcre2 = dependency('libpcre2-8',
1141 required : want_pcre2 == 'true')
1142 have = libpcre2.found()
1143else
1144 have = false
1145 libpcre2 = []
1146endif
1147conf.set10('HAVE_PCRE2', have)
1148
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001150if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libglib = dependency('glib-2.0',
1152 version : '>= 2.22.0',
1153 required : want_glib == 'true')
1154 libgobject = dependency('gobject-2.0',
1155 version : '>= 2.22.0',
1156 required : want_glib == 'true')
1157 libgio = dependency('gio-2.0',
1158 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001159 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001162 libglib = []
1163 libgobject = []
1164 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001165endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167
1168want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001169if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libdbus = dependency('dbus-1',
1171 version : '>= 1.3.2',
1172 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001174else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001177endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001179
Yu Watanabe42303dc2017-06-18 05:22:32 +09001180default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001181if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001182 default_dnssec = 'no'
1183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001185 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1186 default_dnssec = 'no'
1187endif
1188conf.set('DEFAULT_DNSSEC_MODE',
1189 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1190substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1191
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001192dns_over_tls = get_option('dns-over-tls')
1193if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001194 if dns_over_tls == 'openssl'
1195 have_gnutls = false
1196 else
1197 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1198 if dns_over_tls == 'gnutls' and not have_gnutls
1199 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1200 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001201 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001202 if dns_over_tls == 'gnutls' or have_gnutls
1203 have_openssl = false
1204 else
1205 have_openssl = conf.get('HAVE_OPENSSL') == 1
1206 if dns_over_tls != 'auto' and not have_openssl
1207 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001208 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001209 endif
1210 endif
1211 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001212else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001213 have = false
1214 have_gnutls = false
1215 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001216endif
1217conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001218conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1219conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001220
Iwan Timmerc9299be2018-06-13 20:26:24 +02001221default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001222if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001223 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001224endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001225if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001226 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 +02001227 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001228endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001229conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1230 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1231substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001232
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001233want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001234if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235 have = (conf.get('HAVE_LIBCURL') == 1 and
1236 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001237 conf.get('HAVE_XZ') == 1 and
1238 conf.get('HAVE_GCRYPT') == 1)
1239 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001240 error('importd support was requested, but dependencies are not available')
1241 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242else
1243 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001244endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001246
1247want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001248if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001249 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1250 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001251 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1252 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001253 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001254 # config should be installed when any of the programs are built.
1255 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1256 error('remote support was requested, but dependencies are not available')
1257 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001258 have = have_deps[0] or have_deps[1]
1259else
1260 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001261endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001262conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001263
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001264foreach term : ['utmp',
1265 'hibernate',
1266 'environment-d',
1267 'binfmt',
1268 'coredump',
1269 'resolve',
1270 'logind',
1271 'hostnamed',
1272 'localed',
1273 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001274 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001275 'networkd',
1276 'timedated',
1277 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001278 'firstboot',
1279 'randomseed',
1280 'backlight',
1281 'vconsole',
1282 'quotacheck',
1283 'sysusers',
1284 'tmpfiles',
1285 'hwdb',
1286 'rfkill',
1287 'ldconfig',
1288 'efi',
1289 'tpm',
1290 'ima',
1291 'smack',
1292 'gshadow',
1293 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001294 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001295 'nss-systemd']
1296 have = get_option(term)
1297 name = 'ENABLE_' + term.underscorify().to_upper()
1298 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001299endforeach
1300
Yu Watanabe08540a92018-07-18 09:25:57 +09001301foreach tuple : [['nss-mymachines', 'machined'],
1302 ['nss-resolve', 'resolve']]
1303 want = get_option(tuple[0])
1304 if want != 'false'
1305 have = get_option(tuple[1])
1306 if want == 'true' and not have
1307 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1308 endif
1309 else
1310 have = false
1311 endif
1312 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1313 conf.set10(name, have)
1314endforeach
1315
1316enable_nss = false
1317foreach term : ['ENABLE_NSS_MYHOSTNAME',
1318 'ENABLE_NSS_MYMACHINES',
1319 'ENABLE_NSS_RESOLVE',
1320 'ENABLE_NSS_SYSTEMD']
1321 if conf.get(term) == 1
1322 enable_nss = true
1323 endif
1324endforeach
1325conf.set10('ENABLE_NSS', enable_nss)
1326
Yu Watanabe348b4432018-05-07 18:17:35 +09001327conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001328
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001329tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001330fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001331
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001332conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001333
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334#####################################################################
1335
1336if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001337 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001338
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001339 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001340 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001341 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 elif efi_arch == 'x86_64'
1343 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001344 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 elif efi_arch == 'arm'
1346 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001347 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 elif efi_arch == 'aarch64'
1349 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001350 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 else
1352 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001353 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001354 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001356 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001357 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001358
Yu Watanabeac093402018-05-10 16:04:16 +09001359 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001360else
1361 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001362endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001363conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364
1365#####################################################################
1366
1367config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001368 output : 'config.h',
1369 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370
Yu Watanabe348b4432018-05-07 18:17:35 +09001371meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1372
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373includes = include_directories('src/basic',
1374 'src/shared',
1375 'src/systemd',
1376 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001377 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001378 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379 'src/resolve',
1380 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001381 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382 'src/login',
1383 'src/udev',
1384 'src/libudev',
1385 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001386 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001387 'src/libsystemd/sd-bus',
1388 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001389 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390 'src/libsystemd/sd-hwdb',
1391 'src/libsystemd/sd-id128',
1392 'src/libsystemd/sd-netlink',
1393 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001394 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001396 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397
1398add_project_arguments('-include', 'config.h', language : 'c')
1399
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001400generate_gperfs = find_program('tools/generate-gperfs.py')
1401
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402subdir('po')
1403subdir('catalog')
1404subdir('src/systemd')
1405subdir('src/basic')
1406subdir('src/libsystemd')
1407subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001410
1411libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 'journal-core',
1413 libjournal_core_sources,
1414 journald_gperf_c,
1415 include_directories : includes,
1416 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417
Davide Cavalca1485aac2019-02-27 11:19:07 -05001418libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001419libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001421 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001422 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001423 include_directories : includes,
1424 link_args : ['-shared',
1425 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001426 link_with : [libbasic,
1427 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001428 link_whole : [libsystemd_static,
1429 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001430 dependencies : [threads,
1431 librt,
1432 libxz,
1433 liblz4],
1434 link_depends : libsystemd_sym,
1435 install : true,
1436 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437
Davide Cavalca70848ec2018-04-09 02:43:35 -07001438static_libsystemd = get_option('static-libsystemd')
1439static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1440
1441install_libsystemd_static = static_library(
1442 'systemd',
1443 libsystemd_sources,
1444 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001445 basic_sources,
1446 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001447 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001448 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001449 build_by_default : static_libsystemd != 'false',
1450 install : static_libsystemd != 'false',
1451 install_dir : rootlibdir,
1452 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1453 dependencies : [threads,
1454 librt,
1455 libxz,
1456 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001457 libcap,
1458 libblkid,
1459 libmount,
1460 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001461 libgcrypt],
1462 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1463
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464############################################################
1465
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001466# binaries that have --help and are intended for use by humans,
1467# usually, but not always, installed in /bin.
1468public_programs = []
1469
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470subdir('src/libudev')
1471subdir('src/shared')
1472subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001473subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474subdir('src/udev')
1475subdir('src/network')
1476
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001477subdir('src/analyze')
1478subdir('src/journal-remote')
1479subdir('src/coredump')
1480subdir('src/hostname')
1481subdir('src/import')
1482subdir('src/kernel-install')
1483subdir('src/locale')
1484subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001485subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001486subdir('src/nspawn')
1487subdir('src/resolve')
1488subdir('src/timedate')
1489subdir('src/timesync')
1490subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001491subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001492
1493subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001494subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001495subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001496subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001497
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498############################################################
1499
1500# only static linking apart from libdl, to make sure that the
1501# module is linked to all libraries that it uses.
1502test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001503 'test-dlopen',
1504 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001505 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 include_directories : includes,
1507 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001508 dependencies : [libdl],
1509 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001510
Yu Watanabe08540a92018-07-18 09:25:57 +09001511foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001512 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001513 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1514 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001515
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001516 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 if condition
1518 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001519
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001521 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001522
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 nss = shared_library(
1524 'nss_' + module,
1525 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001526 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 version : '2',
1528 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001529 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1530 link_args : ['-Wl,-z,nodelete',
1531 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001532 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001533 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 libbasic],
1535 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001536 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 link_depends : sym,
1538 install : true,
1539 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001540
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 # We cannot use shared_module because it does not support version suffix.
1542 # Unfortunately shared_library insists on creating the symlink…
1543 meson.add_install_script('sh', '-c',
1544 'rm $DESTDIR@0@/libnss_@1@.so'
1545 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001546
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001547 if want_tests != 'false'
1548 test('dlopen-nss_' + module,
1549 test_dlopen,
1550 # path to dlopen must include a slash
1551 args : nss.full_path())
1552 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001554endforeach
1555
1556############################################################
1557
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001558executable('systemd',
1559 systemd_sources,
1560 include_directories : includes,
1561 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001562 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001563 dependencies : [versiondep,
1564 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001565 librt,
1566 libseccomp,
1567 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001568 libmount,
1569 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001570 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571 install : true,
1572 install_dir : rootlibexecdir)
1573
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001574meson.add_install_script(meson_make_symlink,
1575 join_paths(rootlibexecdir, 'systemd'),
1576 join_paths(rootsbindir, 'init'))
1577
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001578exe = executable('systemd-analyze',
1579 systemd_analyze_sources,
1580 include_directories : includes,
1581 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001583 dependencies : [versiondep,
1584 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001585 librt,
1586 libseccomp,
1587 libselinux,
1588 libmount,
1589 libblkid],
1590 install_rpath : rootlibexecdir,
1591 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001592public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593
1594executable('systemd-journald',
1595 systemd_journald_sources,
1596 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001597 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001598 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001599 dependencies : [threads,
1600 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001601 liblz4,
1602 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001603 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604 install : true,
1605 install_dir : rootlibexecdir)
1606
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001607exe = executable('systemd-cat',
1608 systemd_cat_sources,
1609 include_directories : includes,
1610 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001611 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001612 dependencies : [threads],
1613 install_rpath : rootlibexecdir,
1614 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001615public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617exe = executable('journalctl',
1618 journalctl_sources,
1619 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001620 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621 dependencies : [threads,
1622 libqrencode,
1623 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001624 liblz4,
1625 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 install_rpath : rootlibexecdir,
1627 install : true,
1628 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001629public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630
1631executable('systemd-getty-generator',
1632 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001634 link_with : [libshared],
1635 install_rpath : rootlibexecdir,
1636 install : true,
1637 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638
1639executable('systemd-debug-generator',
1640 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001642 link_with : [libshared],
1643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001647executable('systemd-run-generator',
1648 'src/run-generator/run-generator.c',
1649 include_directories : includes,
1650 link_with : [libshared],
1651 install_rpath : rootlibexecdir,
1652 install : true,
1653 install_dir : systemgeneratordir)
1654
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655executable('systemd-fstab-generator',
1656 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001657 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001658 link_with : [libcore_shared,
1659 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001660 install_rpath : rootlibexecdir,
1661 install : true,
1662 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001664if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001665 executable('30-systemd-environment-d-generator',
1666 'src/environment-d-generator/environment-d-generator.c',
1667 include_directories : includes,
1668 link_with : [libshared],
1669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001672
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 meson.add_install_script(meson_make_symlink,
1674 join_paths(sysconfdir, 'environment'),
1675 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676endif
1677
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001678if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 executable('systemd-hibernate-resume-generator',
1680 'src/hibernate-resume/hibernate-resume-generator.c',
1681 include_directories : includes,
1682 link_with : [libshared],
1683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 executable('systemd-hibernate-resume',
1688 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001689 include_directories : includes,
1690 link_with : [libshared],
1691 install_rpath : rootlibexecdir,
1692 install : true,
1693 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001694endif
1695
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001696if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001697 executable('systemd-gpt-auto-generator',
1698 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001699 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001701 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 dependencies : libblkid,
1703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : systemgeneratordir)
1706
1707 exe = executable('systemd-dissect',
1708 'src/dissect/dissect.c',
1709 include_directories : includes,
1710 link_with : [libshared],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001714 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715endif
1716
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001717if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 executable('systemd-resolved',
1719 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001720 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001721 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001722 libbasic_gcrypt,
1723 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001724 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 install : true,
1727 install_dir : rootlibexecdir)
1728
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001729 exe = executable('resolvectl',
1730 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001732 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001733 libbasic_gcrypt,
1734 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001736 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 libm,
1738 libidn],
1739 install_rpath : rootlibexecdir,
1740 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001741 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001742
1743 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001744 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001745 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001746
1747 meson.add_install_script(meson_make_symlink,
1748 join_paths(bindir, 'resolvectl'),
1749 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750endif
1751
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001752if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 executable('systemd-logind',
1754 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001755 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001757 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001758 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001760 install_rpath : rootlibexecdir,
1761 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 exe = executable('loginctl',
1765 loginctl_sources,
1766 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001767 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 dependencies : [threads,
1769 liblz4,
1770 libxz],
1771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001774 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 exe = executable('systemd-inhibit',
1777 'src/login/inhibit.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001783 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001784
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001785 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001786 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 pam_systemd = shared_library(
1788 'pam_systemd',
1789 pam_systemd_c,
1790 name_prefix : '',
1791 include_directories : includes,
1792 link_args : ['-shared',
1793 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001794 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 libshared_static],
1796 dependencies : [threads,
1797 libpam,
1798 libpam_misc],
1799 link_depends : pam_systemd_sym,
1800 install : true,
1801 install_dir : pamlibdir)
1802
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001803 if want_tests != 'false'
1804 test('dlopen-pam_systemd',
1805 test_dlopen,
1806 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001807 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001808 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001810
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001811 executable('systemd-user-runtime-dir',
1812 user_runtime_dir_sources,
1813 include_directories : includes,
1814 link_with : [libshared],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootlibexecdir)
1818endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001819
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001820if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 executable('systemd-user-sessions',
1822 'src/user-sessions/user-sessions.c',
1823 include_directories : includes,
1824 link_with : [libshared],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001828endif
1829
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001830if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 exe = executable('bootctl',
1832 'src/boot/bootctl.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 dependencies : [libblkid],
1836 install_rpath : rootlibexecdir,
1837 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001838 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001839
1840 executable('systemd-bless-boot',
1841 'src/boot/bless-boot.c',
1842 include_directories : includes,
1843 link_with : [libshared],
1844 dependencies : [libblkid],
1845 install_rpath : rootlibexecdir,
1846 install : true,
1847 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001848
1849 executable('systemd-bless-boot-generator',
1850 'src/boot/bless-boot-generator.c',
1851 include_directories : includes,
1852 link_with : [libshared],
1853 install_rpath : rootlibexecdir,
1854 install : true,
1855 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001856endif
1857
Lennart Poetteringf876f532018-06-25 16:07:33 +02001858executable('systemd-boot-check-no-failures',
1859 'src/boot/boot-check-no-failures.c',
1860 include_directories : includes,
1861 link_with : [libshared],
1862 dependencies : [libblkid],
1863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : rootlibexecdir)
1866
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001867exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1868 include_directories : includes,
1869 link_with : [libshared],
1870 dependencies : [threads],
1871 install_rpath : rootlibexecdir,
1872 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001873public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001874
Felipe Satelerf3794362018-05-22 15:08:57 -04001875
1876if get_option('link-systemctl-shared')
1877 systemctl_link_with = [libshared]
1878else
1879 systemctl_link_with = [libsystemd_static,
1880 libshared_static,
1881 libjournal_client,
1882 libbasic_gcrypt]
1883endif
1884
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001885exe = executable('systemctl',
1886 'src/systemctl/systemctl.c',
1887 'src/systemctl/sysv-compat.h',
1888 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001889 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001890 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001891 dependencies : [threads,
1892 libcap,
1893 libselinux,
1894 libxz,
1895 liblz4],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001899public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900
Lennart Poettering61d05782018-04-16 21:41:40 +02001901if conf.get('ENABLE_PORTABLED') == 1
1902 executable('systemd-portabled',
1903 systemd_portabled_sources,
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [threads],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : rootlibexecdir)
1910
1911 exe = executable('portablectl', 'src/portable/portablectl.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 dependencies : [threads],
1915 install_rpath : rootlibexecdir,
1916 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001917 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001918 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001919endif
1920
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001921foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1922 meson.add_install_script(meson_make_symlink,
1923 join_paths(rootbindir, 'systemctl'),
1924 join_paths(rootsbindir, alias))
1925endforeach
1926
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001927if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001928 executable('systemd-backlight',
1929 'src/backlight/backlight.c',
1930 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001931 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935endif
1936
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001937if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 executable('systemd-rfkill',
1939 'src/rfkill/rfkill.c',
1940 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001941 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 install_rpath : rootlibexecdir,
1943 install : true,
1944 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945endif
1946
1947executable('systemd-system-update-generator',
1948 'src/system-update-generator/system-update-generator.c',
1949 include_directories : includes,
1950 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001951 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952 install : true,
1953 install_dir : systemgeneratordir)
1954
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001955if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 executable('systemd-cryptsetup',
1957 'src/cryptsetup/cryptsetup.c',
1958 include_directories : includes,
1959 link_with : [libshared],
1960 dependencies : [libcryptsetup],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001964
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 executable('systemd-cryptsetup-generator',
1966 'src/cryptsetup/cryptsetup-generator.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [libcryptsetup],
1970 install_rpath : rootlibexecdir,
1971 install : true,
1972 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001973
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 executable('systemd-veritysetup',
1975 'src/veritysetup/veritysetup.c',
1976 include_directories : includes,
1977 link_with : [libshared],
1978 dependencies : [libcryptsetup],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-veritysetup-generator',
1984 'src/veritysetup/veritysetup-generator.c',
1985 include_directories : includes,
1986 link_with : [libshared],
1987 dependencies : [libcryptsetup],
1988 install_rpath : rootlibexecdir,
1989 install : true,
1990 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991endif
1992
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001993if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001994 executable('systemd-sysv-generator',
1995 'src/sysv-generator/sysv-generator.c',
1996 include_directories : includes,
1997 link_with : [libshared],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 executable('systemd-rc-local-generator',
2003 'src/rc-local-generator/rc-local-generator.c',
2004 include_directories : includes,
2005 link_with : [libshared],
2006 install_rpath : rootlibexecdir,
2007 install : true,
2008 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009endif
2010
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002011if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 executable('systemd-hostnamed',
2013 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002014 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002015 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002016 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 install : true,
2018 install_dir : rootlibexecdir)
2019
2020 exe = executable('hostnamectl',
2021 'src/hostname/hostnamectl.c',
2022 include_directories : includes,
2023 link_with : [libshared],
2024 install_rpath : rootlibexecdir,
2025 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002026 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027endif
2028
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002029if conf.get('ENABLE_LOCALED') == 1
2030 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031 # logind will load libxkbcommon.so dynamically on its own
2032 deps = [libdl]
2033 else
2034 deps = []
2035 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002036
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002037 executable('systemd-localed',
2038 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002039 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002040 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002042 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 install : true,
2044 install_dir : rootlibexecdir)
2045
2046 exe = executable('localectl',
2047 localectl_sources,
2048 include_directories : includes,
2049 link_with : [libshared],
2050 install_rpath : rootlibexecdir,
2051 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002052 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053endif
2054
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002055if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 executable('systemd-timedated',
2057 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002058 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002059 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 install_rpath : rootlibexecdir,
2061 install : true,
2062 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002063endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064
Yu Watanabe6129ec82018-05-03 18:07:43 +09002065if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 exe = executable('timedatectl',
2067 'src/timedate/timedatectl.c',
2068 include_directories : includes,
2069 install_rpath : rootlibexecdir,
2070 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002071 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002073 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074endif
2075
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002076if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 executable('systemd-timesyncd',
2078 systemd_timesyncd_sources,
2079 include_directories : includes,
2080 link_with : [libshared],
2081 dependencies : [threads,
2082 libm],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002086
2087 executable('systemd-time-wait-sync',
2088 'src/time-wait-sync/time-wait-sync.c',
2089 include_directories : includes,
2090 link_with : [libshared],
2091 install_rpath : rootlibexecdir,
2092 install : true,
2093 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002094endif
2095
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002096if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 executable('systemd-machined',
2098 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002099 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 link_with : [libmachine_core,
2101 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002102 install_rpath : rootlibexecdir,
2103 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 install_dir : rootlibexecdir)
2105
2106 exe = executable('machinectl',
2107 'src/machine/machinectl.c',
2108 include_directories : includes,
2109 link_with : [libshared],
2110 dependencies : [threads,
2111 libxz,
2112 liblz4],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002116 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117endif
2118
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002119if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120 executable('systemd-importd',
2121 systemd_importd_sources,
2122 include_directories : includes,
2123 link_with : [libshared],
2124 dependencies : [threads],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 systemd_pull = executable('systemd-pull',
2130 systemd_pull_sources,
2131 include_directories : includes,
2132 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002133 dependencies : [versiondep,
2134 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 libz,
2136 libbzip2,
2137 libxz,
2138 libgcrypt],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002142
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 systemd_import = executable('systemd-import',
2144 systemd_import_sources,
2145 include_directories : includes,
2146 link_with : [libshared],
2147 dependencies : [libcurl,
2148 libz,
2149 libbzip2,
2150 libxz],
2151 install_rpath : rootlibexecdir,
2152 install : true,
2153 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002155 systemd_import_fs = executable('systemd-import-fs',
2156 systemd_import_fs_sources,
2157 include_directories : includes,
2158 link_with : [libshared],
2159 install_rpath : rootlibexecdir,
2160 install : true,
2161 install_dir : rootlibexecdir)
2162
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163 systemd_export = executable('systemd-export',
2164 systemd_export_sources,
2165 include_directories : includes,
2166 link_with : [libshared],
2167 dependencies : [libcurl,
2168 libz,
2169 libbzip2,
2170 libxz],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002174
2175 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176endif
2177
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002178if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 exe = executable('systemd-journal-upload',
2180 systemd_journal_upload_sources,
2181 include_directories : includes,
2182 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002183 dependencies : [versiondep,
2184 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 libcurl,
2186 libgnutls,
2187 libxz,
2188 liblz4],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002192 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193endif
2194
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002195if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002196 s_j_remote = executable('systemd-journal-remote',
2197 systemd_journal_remote_sources,
2198 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002199 link_with : [libshared,
2200 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 dependencies : [threads,
2202 libmicrohttpd,
2203 libgnutls,
2204 libxz,
2205 liblz4],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 s_j_gatewayd = executable('systemd-journal-gatewayd',
2211 systemd_journal_gatewayd_sources,
2212 include_directories : includes,
2213 link_with : [libshared],
2214 dependencies : [threads,
2215 libmicrohttpd,
2216 libgnutls,
2217 libxz,
2218 liblz4],
2219 install_rpath : rootlibexecdir,
2220 install : true,
2221 install_dir : rootlibexecdir)
2222 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223endif
2224
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002225if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 executable('systemd-coredump',
2227 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002229 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 libacl,
2232 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 libxz,
2234 liblz4],
2235 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 install : true,
2237 install_dir : rootlibexecdir)
2238
2239 exe = executable('coredumpctl',
2240 coredumpctl_sources,
2241 include_directories : includes,
2242 link_with : [libshared],
2243 dependencies : [threads,
2244 libxz,
2245 liblz4],
2246 install_rpath : rootlibexecdir,
2247 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002248 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249endif
2250
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002251if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002252 exe = executable('systemd-binfmt',
2253 'src/binfmt/binfmt.c',
2254 include_directories : includes,
2255 link_with : [libshared],
2256 install_rpath : rootlibexecdir,
2257 install : true,
2258 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002259 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002260
2261 meson.add_install_script('sh', '-c',
2262 mkdir_p.format(binfmtdir))
2263 meson.add_install_script('sh', '-c',
2264 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2265endif
2266
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002267if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 executable('systemd-vconsole-setup',
2269 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 include_directories : includes,
2271 link_with : [libshared],
2272 install_rpath : rootlibexecdir,
2273 install : true,
2274 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275endif
2276
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002277if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002278 executable('systemd-random-seed',
2279 'src/random-seed/random-seed.c',
2280 include_directories : includes,
2281 link_with : [libshared],
2282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285endif
2286
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002287if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 executable('systemd-firstboot',
2289 'src/firstboot/firstboot.c',
2290 include_directories : includes,
2291 link_with : [libshared],
2292 dependencies : [libcrypt],
2293 install_rpath : rootlibexecdir,
2294 install : true,
2295 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296endif
2297
2298executable('systemd-remount-fs',
2299 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002301 link_with : [libcore_shared,
2302 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002303 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304 install : true,
2305 install_dir : rootlibexecdir)
2306
2307executable('systemd-machine-id-setup',
2308 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002310 link_with : [libcore_shared,
2311 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002312 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313 install : true,
2314 install_dir : rootbindir)
2315
2316executable('systemd-fsck',
2317 'src/fsck/fsck.c',
2318 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002319 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002320 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321 install : true,
2322 install_dir : rootlibexecdir)
2323
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002324executable('systemd-growfs',
2325 'src/partition/growfs.c',
2326 include_directories : includes,
2327 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002328 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002329 install_rpath : rootlibexecdir,
2330 install : true,
2331 install_dir : rootlibexecdir)
2332
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002333executable('systemd-makefs',
2334 'src/partition/makefs.c',
2335 include_directories : includes,
2336 link_with : [libshared],
2337 install_rpath : rootlibexecdir,
2338 install : true,
2339 install_dir : rootlibexecdir)
2340
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341executable('systemd-sleep',
2342 'src/sleep/sleep.c',
2343 include_directories : includes,
2344 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002345 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346 install : true,
2347 install_dir : rootlibexecdir)
2348
Yu Watanabed25e1272019-01-03 02:32:57 +09002349install_data('src/sleep/sleep.conf',
2350 install_dir : pkgsysconfdir)
2351
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352exe = executable('systemd-sysctl',
2353 'src/sysctl/sysctl.c',
2354 include_directories : includes,
2355 link_with : [libshared],
2356 install_rpath : rootlibexecdir,
2357 install : true,
2358 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002359public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360
2361executable('systemd-ac-power',
2362 'src/ac-power/ac-power.c',
2363 include_directories : includes,
2364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002365 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366 install : true,
2367 install_dir : rootlibexecdir)
2368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369exe = executable('systemd-detect-virt',
2370 'src/detect-virt/detect-virt.c',
2371 include_directories : includes,
2372 link_with : [libshared],
2373 install_rpath : rootlibexecdir,
2374 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002375public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377exe = executable('systemd-delta',
2378 'src/delta/delta.c',
2379 include_directories : includes,
2380 link_with : [libshared],
2381 install_rpath : rootlibexecdir,
2382 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002383public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385exe = executable('systemd-escape',
2386 'src/escape/escape.c',
2387 include_directories : includes,
2388 link_with : [libshared],
2389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002392public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394exe = executable('systemd-notify',
2395 'src/notify/notify.c',
2396 include_directories : includes,
2397 link_with : [libshared],
2398 install_rpath : rootlibexecdir,
2399 install : true,
2400 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002401public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402
2403executable('systemd-volatile-root',
2404 'src/volatile-root/volatile-root.c',
2405 include_directories : includes,
2406 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002407 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408 install : true,
2409 install_dir : rootlibexecdir)
2410
2411executable('systemd-cgroups-agent',
2412 'src/cgroups-agent/cgroups-agent.c',
2413 include_directories : includes,
2414 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002415 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416 install : true,
2417 install_dir : rootlibexecdir)
2418
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002419exe = executable('systemd-id128',
2420 'src/id128/id128.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 install_rpath : rootlibexecdir,
2424 install : true)
2425public_programs += exe
2426
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002427exe = executable('systemd-path',
2428 'src/path/path.c',
2429 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002430 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431 install_rpath : rootlibexecdir,
2432 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002433public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435exe = executable('systemd-ask-password',
2436 'src/ask-password/ask-password.c',
2437 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439 install_rpath : rootlibexecdir,
2440 install : true,
2441 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002442public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443
2444executable('systemd-reply-password',
2445 'src/reply-password/reply-password.c',
2446 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002447 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002448 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449 install : true,
2450 install_dir : rootlibexecdir)
2451
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452exe = executable('systemd-tty-ask-password-agent',
2453 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2454 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 install_rpath : rootlibexecdir,
2457 install : true,
2458 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002459public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461exe = executable('systemd-cgls',
2462 'src/cgls/cgls.c',
2463 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002464 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465 install_rpath : rootlibexecdir,
2466 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002467public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('systemd-cgtop',
2470 'src/cgtop/cgtop.c',
2471 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002473 install_rpath : rootlibexecdir,
2474 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
2477executable('systemd-initctl',
2478 'src/initctl/initctl.c',
2479 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002480 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002481 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482 install : true,
2483 install_dir : rootlibexecdir)
2484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485exe = executable('systemd-mount',
2486 'src/mount/mount-tool.c',
2487 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002488 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002489 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install_rpath : rootlibexecdir,
2491 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002494meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002495 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002496
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497exe = executable('systemd-run',
2498 'src/run/run.c',
2499 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002500 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501 install_rpath : rootlibexecdir,
2502 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002503public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505exe = executable('systemd-stdio-bridge',
2506 'src/stdio-bridge/stdio-bridge.c',
2507 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002508 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002509 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 install_rpath : rootlibexecdir,
2511 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002512public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514exe = executable('busctl',
2515 'src/busctl/busctl.c',
2516 'src/busctl/busctl-introspect.c',
2517 'src/busctl/busctl-introspect.h',
2518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520 install_rpath : rootlibexecdir,
2521 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002522public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002524if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 exe = executable('systemd-sysusers',
2526 'src/sysusers/sysusers.c',
2527 include_directories : includes,
2528 link_with : [libshared],
2529 install_rpath : rootlibexecdir,
2530 install : true,
2531 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002532 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533endif
2534
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002535if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002536 exe = executable('systemd-tmpfiles',
2537 'src/tmpfiles/tmpfiles.c',
2538 include_directories : includes,
2539 link_with : [libshared],
2540 dependencies : [libacl],
2541 install_rpath : rootlibexecdir,
2542 install : true,
2543 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002544 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002545
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002546 if want_tests != 'false'
2547 test('test-systemd-tmpfiles',
2548 test_systemd_tmpfiles_py,
2549 # https://github.com/mesonbuild/meson/issues/2681
2550 args : exe.full_path())
2551 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552endif
2553
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002554if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 exe = executable('systemd-hwdb',
2556 'src/hwdb/hwdb.c',
2557 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2558 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002559 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002560 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561 install : true,
2562 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002563 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002564endif
2565
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002566if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002567 executable('systemd-quotacheck',
2568 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002571 install_rpath : rootlibexecdir,
2572 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002573 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574endif
2575
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002576exe = executable('systemd-socket-proxyd',
2577 'src/socket-proxy/socket-proxyd.c',
2578 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002580 dependencies : [threads],
2581 install_rpath : rootlibexecdir,
2582 install : true,
2583 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002584public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002586exe = executable('systemd-udevd',
2587 systemd_udevd_sources,
2588 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002589 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002591 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002592 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002593 dependencies : [versiondep,
2594 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002595 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002596 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002597 libacl,
2598 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002599 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002600 install : true,
2601 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002602public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002603
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002604exe = executable('udevadm',
2605 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002606 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002607 include_directories : includes,
2608 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002609 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002610 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002611 dependencies : [versiondep,
2612 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002613 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002615 libacl,
2616 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002617 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618 install : true,
2619 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002620public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621
2622executable('systemd-shutdown',
2623 systemd_shutdown_sources,
2624 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002625 link_with : [libcore_shared,
2626 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002627 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002628 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002629 install : true,
2630 install_dir : rootlibexecdir)
2631
2632executable('systemd-update-done',
2633 'src/update-done/update-done.c',
2634 include_directories : includes,
2635 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002636 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637 install : true,
2638 install_dir : rootlibexecdir)
2639
2640executable('systemd-update-utmp',
2641 'src/update-utmp/update-utmp.c',
2642 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002643 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002644 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002645 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646 install : true,
2647 install_dir : rootlibexecdir)
2648
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002649if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002650 executable('systemd-modules-load',
2651 'src/modules-load/modules-load.c',
2652 include_directories : includes,
2653 link_with : [libshared],
2654 dependencies : [libkmod],
2655 install_rpath : rootlibexecdir,
2656 install : true,
2657 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002658
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002659 meson.add_install_script('sh', '-c',
2660 mkdir_p.format(modulesloaddir))
2661 meson.add_install_script('sh', '-c',
2662 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002663endif
2664
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665exe = executable('systemd-nspawn',
2666 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002667 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002668 link_with : [libcore_shared,
2669 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002670 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002671 dependencies : [libblkid,
2672 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002673 install_rpath : rootlibexecdir,
2674 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002675public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002677if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002678 executable('systemd-networkd',
2679 systemd_networkd_sources,
2680 include_directories : includes,
2681 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002682 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002683 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002684 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002685 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002686 install_rpath : rootlibexecdir,
2687 install : true,
2688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002690 executable('systemd-networkd-wait-online',
2691 systemd_networkd_wait_online_sources,
2692 include_directories : includes,
2693 link_with : [libnetworkd_core,
2694 libshared],
2695 install_rpath : rootlibexecdir,
2696 install : true,
2697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002698
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002699 exe = executable('networkctl',
2700 networkctl_sources,
2701 include_directories : includes,
2702 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002703 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002704 install_rpath : rootlibexecdir,
2705 install : true,
2706 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002707 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002708endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002709
2710executable('systemd-sulogin-shell',
2711 ['src/sulogin-shell/sulogin-shell.c'],
2712 include_directories : includes,
2713 link_with : [libshared],
2714 install_rpath : rootlibexecdir,
2715 install : true,
2716 install_dir : rootlibexecdir)
2717
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002718############################################################
2719
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002720custom_target(
2721 'systemd-runtest.env',
2722 output : 'systemd-runtest.env',
2723 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002724 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002725 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002726 '} >@OUTPUT@'],
2727 build_by_default : true)
2728
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002729foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002730 sources = tuple[0]
2731 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2732 dependencies = tuple[2]
2733 condition = tuple.length() >= 4 ? tuple[3] : ''
2734 type = tuple.length() >= 5 ? tuple[4] : ''
2735 defs = tuple.length() >= 6 ? tuple[5] : []
2736 incs = tuple.length() >= 7 ? tuple[6] : includes
2737 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002738
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 name = sources[0].split('/')[-1].split('.')[0]
2740 if type.startswith('timeout=')
2741 timeout = type.split('=')[1].to_int()
2742 type = ''
2743 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002744
2745 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 exe = executable(
2747 name,
2748 sources,
2749 include_directories : incs,
2750 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002751 dependencies : [versiondep,
2752 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002753 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002754 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002755 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002756 install : install_tests,
2757 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002758
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002759 if type == 'manual'
2760 message('@0@ is a manual test'.format(name))
2761 elif type == 'unsafe' and want_tests != 'unsafe'
2762 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002763 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002764 test(name, exe,
2765 env : test_env,
2766 timeout : timeout)
2767 endif
2768 else
2769 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2770 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002771endforeach
2772
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002773exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 'test-libsystemd-sym',
2775 test_libsystemd_sym_c,
2776 include_directories : includes,
2777 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002778 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002779 install : install_tests,
2780 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002781if want_tests != 'false'
2782 test('test-libsystemd-sym', exe)
2783endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002784
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002785exe = executable(
2786 'test-libsystemd-static-sym',
2787 test_libsystemd_sym_c,
2788 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002789 link_with : [install_libsystemd_static],
2790 dependencies : [threads], # threads is already included in dependencies on the library,
2791 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002792 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002793 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002794 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002795if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002796 test('test-libsystemd-static-sym', exe)
2797endif
2798
2799exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002800 'test-libudev-sym',
2801 test_libudev_sym_c,
2802 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002803 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002804 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002805 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 install : install_tests,
2807 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002808if want_tests != 'false'
2809 test('test-libudev-sym', exe)
2810endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002811
2812exe = executable(
2813 'test-libudev-static-sym',
2814 test_libudev_sym_c,
2815 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002816 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002817 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002818 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002819 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002820 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002821if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002822 test('test-libudev-static-sym', exe)
2823endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002824
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002825############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002826
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002827fuzzer_exes = []
2828
Michael Olbrich59967402018-11-11 11:27:35 +01002829if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002830foreach tuple : fuzzers
2831 sources = tuple[0]
2832 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2833 dependencies = tuple[2]
2834 defs = tuple.length() >= 4 ? tuple[3] : []
2835 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002836 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002837
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002838 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002839 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002840 elif want_libfuzzer
2841 if fuzzing_engine.found()
2842 dependencies += fuzzing_engine
2843 else
2844 link_args += ['-fsanitize=fuzzer']
2845 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002846 else
2847 sources += 'src/fuzz/fuzz-main.c'
2848 endif
2849
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002850 if want_fuzzbuzz
2851 sources += 'src/fuzz/fuzzer-entry-point.c'
2852 endif
2853
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002854 name = sources[0].split('/')[-1].split('.')[0]
2855
2856 fuzzer_exes += executable(
2857 name,
2858 sources,
2859 include_directories : [incs, include_directories('src/fuzz')],
2860 link_with : link_with,
2861 dependencies : dependencies,
2862 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002863 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002864 install : false)
2865endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002866endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002867
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002868run_target('fuzzers',
2869 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002870 command : ['true'])
2871
2872############################################################
2873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002874make_directive_index_py = find_program('tools/make-directive-index.py')
2875make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002876xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002877hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002878
2879subdir('units')
2880subdir('sysctl.d')
2881subdir('sysusers.d')
2882subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002883subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002884subdir('hwdb')
2885subdir('network')
2886subdir('man')
2887subdir('shell-completion/bash')
2888subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002889subdir('docs/sysvinit')
2890subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892install_subdir('factory/etc',
2893 install_dir : factorydir)
2894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002895install_data('xorg/50-systemd-user.sh',
2896 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002897install_data('modprobe.d/systemd.conf',
2898 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002899install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002900 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002901 'NEWS',
2902 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302903 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002904 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002905 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302906 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002907 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002908 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002909 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2911 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002912
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002913meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2914meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2915
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002916############################################################
2917
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002918meson_check_help = find_program('tools/meson-check-help.sh')
2919
2920foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002921 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002922 if want_tests != 'false'
2923 test('check-help-' + name,
2924 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002925 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002926 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002927endforeach
2928
2929############################################################
2930
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002931check_directives_sh = find_program('tools/check-directives.sh')
2932
2933if want_tests != 'false'
2934 test('check-directives',
2935 check_directives_sh,
2936 args : project_source_root)
2937endif
2938
2939############################################################
2940
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002941# Enable tests for all supported sanitizers
2942foreach tuple : sanitizers
2943 sanitizer = tuple[0]
2944 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002945
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002946 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002947 prev = ''
2948 foreach p : fuzz_regression_tests
2949 b = p.split('/')[-2]
2950 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002951
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002952 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002953
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002954 if name != prev
2955 if want_tests == 'false'
2956 message('Not compiling @0@ because tests is set to false'.format(name))
2957 elif slow_tests
2958 exe = custom_target(
2959 name,
2960 output : name,
2961 depends : build,
2962 command : [env, 'ln', '-fs',
2963 join_paths(build.full_path(), b),
2964 '@OUTPUT@'],
2965 build_by_default : true)
2966 else
2967 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2968 endif
2969 endif
2970 prev = name
2971
2972 if want_tests != 'false' and slow_tests
2973 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2974 env,
2975 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05002976 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002977 endif
2978 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002979 endif
2980endforeach
2981
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002982
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002983############################################################
2984
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002985if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002986 all_files = run_command(
2987 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05002988 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002989 'ls-files',
2990 ':/*.[ch]'])
2991 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002992
userwithuide85a6902017-08-09 13:41:44 +00002993 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002994 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002995 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002996 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002997 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002998 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05002999 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003000endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003001
3002if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003003 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003004 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003005 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003006 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003007endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003008
3009if git.found()
3010 git_head = run_command(
3011 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003012 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003013 'rev-parse', 'HEAD']).stdout().strip()
3014 git_head_short = run_command(
3015 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003016 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003017 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3018
3019 run_target(
3020 'git-snapshot',
3021 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003022 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003023 git_head_short),
3024 '--prefix', 'systemd-@0@/'.format(git_head),
3025 'HEAD'])
3026endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003027
3028############################################################
3029
Lennart Poettering51b13862017-12-20 12:51:14 +01003030meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3031run_target(
3032 'check-api-docs',
3033 depends : [man, libsystemd, libudev],
3034 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3035
3036############################################################
3037
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003038status = [
3039 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3040
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003041 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003042 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003043 'prefix directory: @0@'.format(prefixdir),
3044 'rootprefix directory: @0@'.format(rootprefixdir),
3045 'sysconf directory: @0@'.format(sysconfdir),
3046 'include directory: @0@'.format(includedir),
3047 'lib directory: @0@'.format(libdir),
3048 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049 'SysV init scripts: @0@'.format(sysvinit_path),
3050 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003051 'PAM modules directory: @0@'.format(pamlibdir),
3052 'PAM configuration directory: @0@'.format(pamconfdir),
3053 'RPM macros directory: @0@'.format(rpmmacrosdir),
3054 'modprobe.d directory: @0@'.format(modprobedir),
3055 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3056 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3057 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3058 'bash completions directory: @0@'.format(bashcompletiondir),
3059 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003060 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003061 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3062 get_option('debug-tty')),
3063 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003064 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003065 'maximum system UID: @0@'.format(system_uid_max),
3066 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003067 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3068 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3069 'minimum container UID base: @0@'.format(container_uid_base_min),
3070 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003071 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003072 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003073 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003075 'nobody user name: @0@'.format(nobody_user),
3076 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003077 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003078 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079
3080 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003081 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003083 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003084 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3085 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003086
3087alt_dns_servers = '\n '.join(dns_servers.split(' '))
3088alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3089status += [
3090 'default DNS servers: @0@'.format(alt_dns_servers),
3091 'default NTP servers: @0@'.format(alt_ntp_servers)]
3092
3093alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3094 '@@0@'.format(time_epoch)).stdout().strip()
3095status += [
3096 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3097
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003098status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003099 'static libsystemd: @0@'.format(static_libsystemd),
3100 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003101
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102# TODO:
3103# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3104# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3105# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3106
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003107if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003108 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109
3110 if have_gnu_efi
3111 status += [
3112 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003113 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003114 'EFI lib directory: @0@'.format(efi_libdir),
3115 'EFI lds directory: @0@'.format(efi_ldsdir),
3116 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 endif
3118endif
3119
3120found = []
3121missing = []
3122
3123foreach tuple : [
3124 ['libcryptsetup'],
3125 ['PAM'],
3126 ['AUDIT'],
3127 ['IMA'],
3128 ['AppArmor'],
3129 ['SELinux'],
3130 ['SECCOMP'],
3131 ['SMACK'],
3132 ['zlib'],
3133 ['xz'],
3134 ['lz4'],
3135 ['bzip2'],
3136 ['ACL'],
3137 ['gcrypt'],
3138 ['qrencode'],
3139 ['microhttpd'],
3140 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003141 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003143 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003144 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003145 ['libidn'],
3146 ['libiptc'],
3147 ['elfutils'],
3148 ['binfmt'],
3149 ['vconsole'],
3150 ['quotacheck'],
3151 ['tmpfiles'],
3152 ['environment.d'],
3153 ['sysusers'],
3154 ['firstboot'],
3155 ['randomseed'],
3156 ['backlight'],
3157 ['rfkill'],
3158 ['logind'],
3159 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003160 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003161 ['importd'],
3162 ['hostnamed'],
3163 ['timedated'],
3164 ['timesyncd'],
3165 ['localed'],
3166 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003167 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003168 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3169 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003170 ['coredump'],
3171 ['polkit'],
3172 ['legacy pkla', install_polkit_pkla],
3173 ['efi'],
3174 ['gnu-efi', have_gnu_efi],
3175 ['kmod'],
3176 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003177 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003178 ['blkid'],
3179 ['dbus'],
3180 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003181 ['nss-myhostname'],
3182 ['nss-mymachines'],
3183 ['nss-resolve'],
3184 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003185 ['hwdb'],
3186 ['tpm'],
3187 ['man pages', want_man],
3188 ['html pages', want_html],
3189 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003190 ['SysV compat'],
3191 ['utmp'],
3192 ['ldconfig'],
3193 ['hibernate'],
3194 ['adm group', get_option('adm-group')],
3195 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003196 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003197 ['debug hashmap'],
3198 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003199 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003200 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003201 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003202 ['link-udev-shared', get_option('link-udev-shared')],
3203 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204]
3205
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003206 if tuple.length() >= 2
3207 cond = tuple[1]
3208 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003209 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3210 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003211 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 endif
3213 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003214 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003215 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003216 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003217 endif
3218endforeach
3219
3220status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003221 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003222 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003223 '',
3224 'disabled features: @0@'.format(', '.join(missing)),
3225 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003227
3228if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003229 warning('\n' +
3230 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3231 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3232 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003233endif