blob: 4ef08a95391113b4727662a7c8d82b97b6d05311 [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',
Lennart Poettering18999852019-07-23 15:36:01 +02004 version : '243',
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 Poettering18999852019-07-23 15:36:01 +020015libsystemd_version = '0.27.0'
16libudev_version = '1.6.15'
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()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020032relative_source_path = run_command('realpath',
33 '--relative-to=@0@'.format(meson.current_build_dir()),
34 project_source_root).stdout().strip()
35conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050036
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020037want_ossfuzz = get_option('oss-fuzz')
38want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000039want_fuzzbuzz = get_option('fuzzbuzz')
40if want_ossfuzz + want_libfuzzer + want_fuzzbuzz > 1
41 error('only one of oss-fuzz, llvm-fuzz or fuzzbuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020042endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000043
44skip_deps = want_ossfuzz or want_libfuzzer
45fuzzer_build = want_ossfuzz or want_libfuzzer or want_fuzzbuzz
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020046
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040047#####################################################################
48
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040049# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050050git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040051if git_hook.returncode() == 0
52 message(git_hook.stdout().strip())
53endif
54
55#####################################################################
56
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010057if get_option('split-usr') == 'auto'
58 split_usr = run_command('test', '-L', '/bin').returncode() != 0
59else
60 split_usr = get_option('split-usr') == 'true'
61endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010062conf.set10('HAVE_SPLIT_USR', split_usr,
63 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010064
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065if get_option('split-bin') == 'auto'
66 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
67else
68 split_bin = get_option('split-bin') == 'true'
69endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010070conf.set10('HAVE_SPLIT_BIN', split_bin,
71 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010072
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010073rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010074# Unusual rootprefixdir values are used by some distros
75# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010076rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010077if rootprefixdir == ''
78 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010080rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081
82sysvinit_path = get_option('sysvinit-path')
83sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090084conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020085 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020087conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
88conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010089conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020090
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010091# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092# encountered, so this should canonicalize various paths when they are
93# absolute or relative.
94prefixdir = get_option('prefix')
95if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040096 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040097endif
98bindir = join_paths(prefixdir, get_option('bindir'))
99libdir = join_paths(prefixdir, get_option('libdir'))
100sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
101includedir = join_paths(prefixdir, get_option('includedir'))
102datadir = join_paths(prefixdir, get_option('datadir'))
103localstatedir = join_paths('/', get_option('localstatedir'))
104
105rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100106rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
108
109rootlibdir = get_option('rootlibdir')
110if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400111 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400112endif
113
114# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200115pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
116pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
118polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
119polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400120xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900121rpmmacrosdir = get_option('rpmmacrosdir')
122if rpmmacrosdir != 'no'
123 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
124endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200125modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400126
127# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400128pkgdatadir = join_paths(datadir, 'systemd')
129environmentdir = join_paths(prefixdir, 'lib/environment.d')
130pkgsysconfdir = join_paths(sysconfdir, 'systemd')
131userunitdir = join_paths(prefixdir, 'lib/systemd/user')
132userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
133tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
134sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
135sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
136binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
137modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
138networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
139pkgincludedir = join_paths(includedir, 'systemd')
140systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
141usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
142systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
143userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
144systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
145systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
146systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
147systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
148udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400149udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
150udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
151catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
152kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
153factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400154bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
155testsdir = join_paths(prefixdir, 'lib/systemd/tests')
156systemdstatedir = join_paths(localstatedir, 'lib/systemd')
157catalogstatedir = join_paths(systemdstatedir, 'catalog')
158randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200159profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200160ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400161
tblume75aaade2018-02-01 22:46:15 +0100162docdir = get_option('docdir')
163if docdir == ''
164 docdir = join_paths(datadir, 'doc/systemd')
165endif
166
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400167dbuspolicydir = get_option('dbuspolicydir')
168if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172dbussessionservicedir = get_option('dbussessionservicedir')
173if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177dbussystemservicedir = get_option('dbussystemservicedir')
178if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182pamlibdir = get_option('pamlibdir')
183if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
187pamconfdir = get_option('pamconfdir')
188if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400189 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190endif
191
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100192memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200193status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100194
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400196conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400197conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
198conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
199conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400200conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100201
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100202conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100203
Michael Bieble17e5ba2017-04-13 10:30:56 -0400204conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400205conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
206conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400207conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
208conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
209conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
210conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100211conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100212conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400213conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
214conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
215conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
216conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
217conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100218conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400219conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400220conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
221conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
223conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
224conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
225conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
226conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
227conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
229conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700230conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700231conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234conf.set_quoted('LIBDIR', libdir)
235conf.set_quoted('ROOTLIBDIR', rootlibdir)
236conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
237conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400238conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
239conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200240conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400241conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
242conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
243conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
244conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200245conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100246conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200247conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400248
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400249substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100250substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100251substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('exec_prefix', prefixdir)
253substs.set('libdir', libdir)
254substs.set('rootlibdir', rootlibdir)
255substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100256substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400257substs.set('bindir', bindir)
258substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400259substs.set('rootlibexecdir', rootlibexecdir)
260substs.set('systemunitdir', systemunitdir)
261substs.set('userunitdir', userunitdir)
262substs.set('systempresetdir', systempresetdir)
263substs.set('userpresetdir', userpresetdir)
264substs.set('udevhwdbdir', udevhwdbdir)
265substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400266substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200267substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400268substs.set('catalogdir', catalogdir)
269substs.set('tmpfilesdir', tmpfilesdir)
270substs.set('sysusersdir', sysusersdir)
271substs.set('sysctldir', sysctldir)
272substs.set('binfmtdir', binfmtdir)
273substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200274substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275substs.set('systemgeneratordir', systemgeneratordir)
276substs.set('usergeneratordir', usergeneratordir)
277substs.set('systemenvgeneratordir', systemenvgeneratordir)
278substs.set('userenvgeneratordir', userenvgeneratordir)
279substs.set('systemshutdowndir', systemshutdowndir)
280substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400281substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400282substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
283substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400284substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
285substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
286substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100287substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200288substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200289substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200290substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400291
292#####################################################################
293
294cc = meson.get_compiler('c')
295pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400296check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100297meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400298
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200299want_tests = get_option('tests')
300slow_tests = want_tests != 'false' and get_option('slow-tests')
301install_tests = get_option('install-tests')
302
James Hilliard46e63a22018-12-27 09:16:20 +0800303if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200304 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200305 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200306else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200307 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400308endif
309
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500310if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200311 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
312 if fuzzing_engine.found()
313 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
314 elif cc.has_argument('-fsanitize=fuzzer-no-link')
315 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
316 else
317 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
318 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200319elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500320 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000321elif want_fuzzbuzz
322 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 -0500323endif
324
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900325possible_cc_flags = [
326 '-Wextra',
327 '-Werror=undef',
328 '-Wlogical-op',
329 '-Wmissing-include-dirs',
330 '-Wold-style-definition',
331 '-Wpointer-arith',
332 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900333 '-Wfloat-equal',
334 '-Wsuggest-attribute=noreturn',
335 '-Werror=missing-prototypes',
336 '-Werror=implicit-function-declaration',
337 '-Werror=missing-declarations',
338 '-Werror=return-type',
339 '-Werror=incompatible-pointer-types',
340 '-Werror=format=2',
341 '-Wstrict-prototypes',
342 '-Wredundant-decls',
343 '-Wmissing-noreturn',
344 '-Wimplicit-fallthrough=5',
345 '-Wshadow',
346 '-Wendif-labels',
347 '-Wstrict-aliasing=2',
348 '-Wwrite-strings',
349 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200350 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200351 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900352 '-Wdate-time',
353 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700354
355 # negative arguments are correctly detected starting with meson 0.46.
356 '-Wno-unused-parameter',
357 '-Wno-missing-field-initializers',
358 '-Wno-unused-result',
359 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100360 '-Wno-error=#warnings', # clang
361 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700362
363 # work-around for gcc 7.1 turning this on on its own.
364 '-Wno-error=nonnull',
365
366 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
367 # optimizations enabled, producing essentially false positives.
368 '-Wno-maybe-uninitialized',
369
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370 '-ffast-math',
371 '-fno-common',
372 '-fdiagnostics-show-option',
373 '-fno-strict-aliasing',
374 '-fvisibility=hidden',
375 '-fstack-protector',
376 '-fstack-protector-strong',
377 '--param=ssp-buffer-size=4',
378]
379
380# --as-needed and --no-undefined are provided by meson by default,
381# run mesonconf to see what is enabled
382possible_link_flags = [
383 '-Wl,-z,relro',
384 '-Wl,-z,now',
385]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387if cc.get_id() == 'clang'
388 possible_cc_flags += [
389 '-Wno-typedef-redefinition',
390 '-Wno-gnu-variable-sized-type-not-at-end',
391 ]
392endif
393
394if get_option('buildtype') != 'debug'
395 possible_cc_flags += [
396 '-ffunction-sections',
397 '-fdata-sections',
398 ]
399
400 possible_link_flags += '-Wl,--gc-sections'
401endif
402
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100403if get_option('b_ndebug') == 'true'
404 # With asserts disabled with get a bunch of warnings about variables which
405 # are used only in the asserts. This is not useful at all, so let's just silence
406 # those warnings.
407 possible_cc_flags += [
408 '-Wno-unused-variable',
409 '-Wno-unused-but-set-variable',
410 ]
411endif
412
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900413add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900414add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900415
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800416if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400417 #include <time.h>
418 #include <inttypes.h>
419 typedef uint64_t usec_t;
420 usec_t now(clockid_t clock);
421 int main(void) {
422 struct timespec now;
423 return 0;
424 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100425''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400426 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400427endif
428
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200429cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400430
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200431has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433#####################################################################
434# compilation result tests
435
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400436conf.set('_GNU_SOURCE', true)
437conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200438conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439
440conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
441conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
442conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
443conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
444conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
445conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
446conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
447
448decl_headers = '''
449#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100450#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452
453foreach decl : ['char16_t',
454 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100455 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400456 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400457
458 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200459 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
460
461 if decl == 'struct statx'
462 if have
463 want_linux_stat_h = false
464 else
465 have = cc.sizeof(decl,
466 prefix : decl_headers + '#include <linux/stat.h>',
467 args : '-D_GNU_SOURCE') > 0
468 want_linux_stat_h = have
469 endif
470 endif
471
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200472 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473endforeach
474
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200475conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700476
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200478 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
481foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100482 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100483 ['gettid', '''#include <sys/types.h>
484 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100485 ['pivot_root', '''#include <stdlib.h>
486 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100487 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400488 #include <sys/stat.h>
489 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100491 ['renameat2', '''#include <stdio.h>
492 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 ['kcmp', '''#include <linux/kcmp.h>'''],
494 ['keyctl', '''#include <sys/types.h>
495 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400497 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200498 ['bpf', '''#include <sys/syscall.h>
499 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100500 ['statx', '''#include <sys/types.h>
501 #include <sys/stat.h>
502 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100503 ['explicit_bzero' , '''#include <string.h>'''],
504 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100505 ['set_mempolicy', '''#include <stdlib.h>
506 #include <unistd.h>'''],
507 ['get_mempolicy', '''#include <stdlib.h>
508 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200512 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513endforeach
514
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200516 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200517 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400518else
519 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200520 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400522endif
523
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524#####################################################################
525
Davide Cavalca1485aac2019-02-27 11:19:07 -0500526vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
527 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100528 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100529 meson.project_version()]
530
Louis Taylord1084aa2019-01-21 21:45:36 +0000531version_h = vcs_tag(
532 input : 'src/version/version.h.in',
533 output : 'version.h',
534 command: vcs_tagger)
535
536versiondep = declare_dependency(sources: version_h)
537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400540m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400542git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100543env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100544perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545
Davide Cavalca1485aac2019-02-27 11:19:07 -0500546meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400547mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400548test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
549splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400550
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
552# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500553progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555 ['kmod', '/usr/bin/kmod' ],
556 ['kexec', '/usr/sbin/kexec' ],
557 ['sulogin', '/usr/sbin/sulogin' ],
558 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
559 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
560 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
561 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200562 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563 ]
564foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400565 path = get_option(prog[0] + '-path')
566 if path != ''
567 message('Using @1@ for @0@'.format(prog[0], path))
568 else
569 exe = find_program(prog[0],
570 '/usr/sbin/' + prog[0],
571 '/sbin/' + prog[0],
572 required: false)
573 path = exe.found() ? exe.path() : prog[1]
574 endif
575 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
576 conf.set_quoted(name, path)
577 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578endforeach
579
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500580conf.set_quoted('TELINIT', get_option('telinit-path'))
581
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400582if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100583 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400584endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585
586############################################################
587
588gperf = find_program('gperf')
589
590gperf_test_format = '''
591#include <string.h>
592const char * in_word_set(const char *, @0@);
593@1@
594'''
595gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
596gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
597gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
598if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
602 if cc.compiles(gperf_test)
603 gperf_len_type = 'unsigned'
604 else
605 error('unable to determine gperf len type')
606 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
608message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400609conf.set('GPERF_LEN_TYPE', gperf_len_type,
610 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611
612############################################################
613
614if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400616endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100617foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618 'linux/memfd.h',
619 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200620 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621 'valgrind/memcheck.h',
622 'valgrind/valgrind.h',
623 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200625 conf.set10('HAVE_' + header.underscorify().to_upper(),
626 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endforeach
628
629############################################################
630
631conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400632conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
633gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635default_hierarchy = get_option('default-hierarchy')
636conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
637 description : 'default cgroup hierarchy as string')
638if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
645
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100646default_net_naming_scheme = get_option('default-net-naming-scheme')
647conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
648
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900650if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900652 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400654conf.set('TIME_EPOCH', time_epoch)
655
656system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900657if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400658 system_uid_max = run_command(
659 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800660 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
661 '/etc/login.defs').stdout().strip()
662 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900663 system_uid_max = 999
664 else
665 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800666 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668conf.set('SYSTEM_UID_MAX', system_uid_max)
669substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900672if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 system_gid_max = run_command(
674 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800675 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
676 '/etc/login.defs').stdout().strip()
677 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900678 system_gid_max = 999
679 else
680 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800681 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683conf.set('SYSTEM_GID_MAX', system_gid_max)
684substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685
Yu Watanabeac093402018-05-10 16:04:16 +0900686dynamic_uid_min = get_option('dynamic-uid-min')
687dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100688conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
689conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
690substs.set('dynamicuidmin', dynamic_uid_min)
691substs.set('dynamicuidmax', dynamic_uid_max)
692
Yu Watanabeac093402018-05-10 16:04:16 +0900693container_uid_base_min = get_option('container-uid-base-min')
694container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100695conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
696conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
697substs.set('containeruidbasemin', container_uid_base_min)
698substs.set('containeruidbasemax', container_uid_base_max)
699
Lennart Poetteringafde4572017-12-05 11:00:24 +0100700nobody_user = get_option('nobody-user')
701nobody_group = get_option('nobody-group')
702
Chen Qi2484bff2018-07-23 14:53:09 +0800703if not meson.is_cross_build()
704 getent_result = run_command('getent', 'passwd', '65534')
705 if getent_result.returncode() == 0
706 name = getent_result.stdout().split(':')[0]
707 if name != nobody_user
708 warning('\n' +
709 '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) +
710 'Your build will result in an user table setup that is incompatible with the local system.')
711 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800713 id_result = run_command('id', '-u', nobody_user)
714 if id_result.returncode() == 0
715 id = id_result.stdout().to_int()
716 if id != 65534
717 warning('\n' +
718 '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) +
719 'Your build will result in an user table setup that is incompatible with the local system.')
720 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722
Chen Qi2484bff2018-07-23 14:53:09 +0800723 getent_result = run_command('getent', 'group', '65534')
724 if getent_result.returncode() == 0
725 name = getent_result.stdout().split(':')[0]
726 if name != nobody_group
727 warning('\n' +
728 '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) +
729 'Your build will result in an group table setup that is incompatible with the local system.')
730 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800732 id_result = run_command('id', '-g', nobody_group)
733 if id_result.returncode() == 0
734 id = id_result.stdout().to_int()
735 if id != 65534
736 warning('\n' +
737 '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) +
738 'Your build will result in an group table setup that is incompatible with the local system.')
739 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100740 endif
741endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900742if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900743 warning('\n' +
744 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
745 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900746endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100747
748conf.set_quoted('NOBODY_USER_NAME', nobody_user)
749conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900750substs.set('NOBODY_USER_NAME', nobody_user)
751substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100752
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753tty_gid = get_option('tty-gid')
754conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400755substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Ikey Doherty84786b82017-12-03 12:28:23 +0000757# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900758users_gid = get_option('users-gid')
759substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000760
Yu Watanabe348b4432018-05-07 18:17:35 +0900761conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
762conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Michael Bieblace5e312018-07-13 23:36:13 +0200764dev_kvm_mode = get_option('dev-kvm-mode')
765substs.set('DEV_KVM_MODE', dev_kvm_mode)
766conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100767group_render_mode = get_option('group-render-mode')
768substs.set('GROUP_RENDER_MODE', group_render_mode)
769conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400771kill_user_processes = get_option('default-kill-user-processes')
772conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100773conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400774substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400776dns_servers = get_option('dns-servers')
777conf.set_quoted('DNS_SERVERS', dns_servers)
778substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400780ntp_servers = get_option('ntp-servers')
781conf.set_quoted('NTP_SERVERS', ntp_servers)
782substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400783
Dave Reisner8ca9e922018-12-28 07:38:36 -0500784default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900785if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800786 if not meson.is_cross_build()
787 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
788 default_locale = run_command(choose_default_locale_sh).stdout().strip()
789 else
790 default_locale = 'C.UTF-8'
791 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900792endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500793conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
794
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
796
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400797substs.set('SUSHELL', get_option('debug-shell'))
798substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200799conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400800
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801enable_debug_hashmap = false
802enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900803enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200804foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900805 if name == 'hashmap'
806 enable_debug_hashmap = true
807 elif name == 'mmap-cache'
808 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900809 elif name == 'siphash'
810 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900811 else
812 message('unknown debug option "@0@", ignoring'.format(name))
813 endif
814endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
816conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900817conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400818
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200819conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200820conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200821
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822#####################################################################
823
824threads = dependency('threads')
825librt = cc.find_library('rt')
826libm = cc.find_library('m')
827libdl = cc.find_library('dl')
828libcrypt = cc.find_library('crypt')
829
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400830libcap = dependency('libcap', required : false)
831if not libcap.found()
832 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
833 libcap = cc.find_library('cap')
834endif
835
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100837 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
839want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000840if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400842 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850
851want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000852if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libselinux = dependency('libselinux',
854 version : '>= 2.1.9',
855 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400857else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400859 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862
863want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000864if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libapparmor = dependency('libapparmor',
866 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874smack_run_label = get_option('smack-run-label')
875if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877endif
878
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400879want_polkit = get_option('polkit')
880install_polkit = false
881install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000882if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400884
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libpolkit = dependency('polkit-gobject-1',
886 required : false)
887 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
888 message('Old polkit detected, will install pkla files')
889 install_polkit_pkla = true
890 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400893
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400894want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000895if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400896 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400900 libacl = []
901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400903
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000905if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913
914want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000915if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000925if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libkmod = dependency('libkmod',
927 version : '>= 15',
928 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000937if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libpam = cc.find_library('pam', required : want_pam == 'true')
939 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libpam = []
944 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000949if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libmicrohttpd = dependency('libmicrohttpd',
951 version : '>= 0.9.33',
952 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000961if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +0200963 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBCRYPTSETUP', have)
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',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001269 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001270 'resolve',
1271 'logind',
1272 'hostnamed',
1273 'localed',
1274 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001275 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001276 'networkd',
1277 'timedated',
1278 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001279 'firstboot',
1280 'randomseed',
1281 'backlight',
1282 'vconsole',
1283 'quotacheck',
1284 'sysusers',
1285 'tmpfiles',
1286 'hwdb',
1287 'rfkill',
1288 'ldconfig',
1289 'efi',
1290 'tpm',
1291 'ima',
1292 'smack',
1293 'gshadow',
1294 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001295 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001296 'nss-systemd']
1297 have = get_option(term)
1298 name = 'ENABLE_' + term.underscorify().to_upper()
1299 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300endforeach
1301
Yu Watanabe08540a92018-07-18 09:25:57 +09001302foreach tuple : [['nss-mymachines', 'machined'],
1303 ['nss-resolve', 'resolve']]
1304 want = get_option(tuple[0])
1305 if want != 'false'
1306 have = get_option(tuple[1])
1307 if want == 'true' and not have
1308 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1309 endif
1310 else
1311 have = false
1312 endif
1313 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1314 conf.set10(name, have)
1315endforeach
1316
1317enable_nss = false
1318foreach term : ['ENABLE_NSS_MYHOSTNAME',
1319 'ENABLE_NSS_MYMACHINES',
1320 'ENABLE_NSS_RESOLVE',
1321 'ENABLE_NSS_SYSTEMD']
1322 if conf.get(term) == 1
1323 enable_nss = true
1324 endif
1325endforeach
1326conf.set10('ENABLE_NSS', enable_nss)
1327
Yu Watanabe348b4432018-05-07 18:17:35 +09001328conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001329
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001330tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001331fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001332
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001333conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001334
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001335#####################################################################
1336
1337if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001339
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001340 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001342 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001343 elif efi_arch == 'x86_64'
1344 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001345 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 elif efi_arch == 'arm'
1347 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001348 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001349 elif efi_arch == 'aarch64'
1350 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001351 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001352 else
1353 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001354 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001355 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001357 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001358 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001359
Yu Watanabeac093402018-05-10 16:04:16 +09001360 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001361else
1362 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001364conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001365
1366#####################################################################
1367
1368config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001369 output : 'config.h',
1370 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371
Yu Watanabe348b4432018-05-07 18:17:35 +09001372meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1373
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001375 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376 'src/shared',
1377 'src/systemd',
1378 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001379 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001380 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381 'src/resolve',
1382 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001383 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384 'src/login',
1385 'src/udev',
1386 'src/libudev',
1387 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001388 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389 'src/libsystemd/sd-bus',
1390 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001391 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392 'src/libsystemd/sd-hwdb',
1393 'src/libsystemd/sd-id128',
1394 'src/libsystemd/sd-netlink',
1395 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001396 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001398 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
1400add_project_arguments('-include', 'config.h', language : 'c')
1401
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001402generate_gperfs = find_program('tools/generate-gperfs.py')
1403
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001404subdir('po')
1405subdir('catalog')
1406subdir('src/systemd')
1407subdir('src/basic')
1408subdir('src/libsystemd')
1409subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001410subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412
1413libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 'journal-core',
1415 libjournal_core_sources,
1416 journald_gperf_c,
1417 include_directories : includes,
1418 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001419
Davide Cavalca1485aac2019-02-27 11:19:07 -05001420libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001423 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001424 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001425 include_directories : includes,
1426 link_args : ['-shared',
1427 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001428 link_with : [libbasic,
1429 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001430 link_whole : [libsystemd_static,
1431 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001432 dependencies : [threads,
1433 librt,
1434 libxz,
1435 liblz4],
1436 link_depends : libsystemd_sym,
1437 install : true,
1438 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439
Davide Cavalca70848ec2018-04-09 02:43:35 -07001440static_libsystemd = get_option('static-libsystemd')
1441static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1442
1443install_libsystemd_static = static_library(
1444 'systemd',
1445 libsystemd_sources,
1446 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001447 basic_sources,
1448 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001449 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001450 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001451 build_by_default : static_libsystemd != 'false',
1452 install : static_libsystemd != 'false',
1453 install_dir : rootlibdir,
1454 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1455 dependencies : [threads,
1456 librt,
1457 libxz,
1458 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001459 libcap,
1460 libblkid,
1461 libmount,
1462 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001463 libgcrypt],
1464 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1465
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466############################################################
1467
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001468# binaries that have --help and are intended for use by humans,
1469# usually, but not always, installed in /bin.
1470public_programs = []
1471
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472subdir('src/libudev')
1473subdir('src/shared')
1474subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001475subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476subdir('src/udev')
1477subdir('src/network')
1478
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001479subdir('src/analyze')
1480subdir('src/journal-remote')
1481subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001482subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001483subdir('src/hostname')
1484subdir('src/import')
1485subdir('src/kernel-install')
1486subdir('src/locale')
1487subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001488subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001489subdir('src/nspawn')
1490subdir('src/resolve')
1491subdir('src/timedate')
1492subdir('src/timesync')
1493subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001494subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001495
1496subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001497subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001498subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001499subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001500
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001501############################################################
1502
1503# only static linking apart from libdl, to make sure that the
1504# module is linked to all libraries that it uses.
1505test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 'test-dlopen',
1507 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001508 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 include_directories : includes,
1510 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001511 dependencies : [libdl],
1512 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001513
Yu Watanabe08540a92018-07-18 09:25:57 +09001514foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001515 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001516 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1517 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001518
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001519 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 if condition
1521 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001522
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001524 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001525
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 nss = shared_library(
1527 'nss_' + module,
1528 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001529 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 version : '2',
1531 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001532 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1533 link_args : ['-Wl,-z,nodelete',
1534 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001535 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001536 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001537 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001538 libbasic],
1539 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001540 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 link_depends : sym,
1542 install : true,
1543 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001544
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 # We cannot use shared_module because it does not support version suffix.
1546 # Unfortunately shared_library insists on creating the symlink…
1547 meson.add_install_script('sh', '-c',
1548 'rm $DESTDIR@0@/libnss_@1@.so'
1549 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001550
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001551 if want_tests != 'false'
1552 test('dlopen-nss_' + module,
1553 test_dlopen,
1554 # path to dlopen must include a slash
1555 args : nss.full_path())
1556 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001558endforeach
1559
1560############################################################
1561
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562executable('systemd',
1563 systemd_sources,
1564 include_directories : includes,
1565 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001566 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001567 dependencies : [versiondep,
1568 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001569 librt,
1570 libseccomp,
1571 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001572 libmount,
1573 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001574 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575 install : true,
1576 install_dir : rootlibexecdir)
1577
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001578meson.add_install_script(meson_make_symlink,
1579 join_paths(rootlibexecdir, 'systemd'),
1580 join_paths(rootsbindir, 'init'))
1581
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582exe = executable('systemd-analyze',
1583 systemd_analyze_sources,
1584 include_directories : includes,
1585 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001586 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001587 dependencies : [versiondep,
1588 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589 librt,
1590 libseccomp,
1591 libselinux,
1592 libmount,
1593 libblkid],
1594 install_rpath : rootlibexecdir,
1595 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001596public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001597
1598executable('systemd-journald',
1599 systemd_journald_sources,
1600 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001601 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001602 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603 dependencies : [threads,
1604 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001605 liblz4,
1606 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001607 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608 install : true,
1609 install_dir : rootlibexecdir)
1610
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611exe = executable('systemd-cat',
1612 systemd_cat_sources,
1613 include_directories : includes,
1614 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001615 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616 dependencies : [threads],
1617 install_rpath : rootlibexecdir,
1618 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001619public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621exe = executable('journalctl',
1622 journalctl_sources,
1623 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001624 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 dependencies : [threads,
1626 libqrencode,
1627 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001628 liblz4,
1629 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001633public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634
1635executable('systemd-getty-generator',
1636 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001638 link_with : [libshared],
1639 install_rpath : rootlibexecdir,
1640 install : true,
1641 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642
1643executable('systemd-debug-generator',
1644 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001646 link_with : [libshared],
1647 install_rpath : rootlibexecdir,
1648 install : true,
1649 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001651executable('systemd-run-generator',
1652 'src/run-generator/run-generator.c',
1653 include_directories : includes,
1654 link_with : [libshared],
1655 install_rpath : rootlibexecdir,
1656 install : true,
1657 install_dir : systemgeneratordir)
1658
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001659executable('systemd-fstab-generator',
1660 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001662 link_with : [libcore_shared,
1663 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001664 install_rpath : rootlibexecdir,
1665 install : true,
1666 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001668if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001669 executable('30-systemd-environment-d-generator',
1670 'src/environment-d-generator/environment-d-generator.c',
1671 include_directories : includes,
1672 link_with : [libshared],
1673 install_rpath : rootlibexecdir,
1674 install : true,
1675 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001676
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 meson.add_install_script(meson_make_symlink,
1678 join_paths(sysconfdir, 'environment'),
1679 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680endif
1681
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001682if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 executable('systemd-hibernate-resume-generator',
1684 'src/hibernate-resume/hibernate-resume-generator.c',
1685 include_directories : includes,
1686 link_with : [libshared],
1687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 executable('systemd-hibernate-resume',
1692 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001693 include_directories : includes,
1694 link_with : [libshared],
1695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001698endif
1699
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001700if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 executable('systemd-gpt-auto-generator',
1702 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001703 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001704 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001705 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001706 dependencies : libblkid,
1707 install_rpath : rootlibexecdir,
1708 install : true,
1709 install_dir : systemgeneratordir)
1710
1711 exe = executable('systemd-dissect',
1712 'src/dissect/dissect.c',
1713 include_directories : includes,
1714 link_with : [libshared],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001718 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719endif
1720
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001721if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('systemd-resolved',
1723 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001725 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001726 libbasic_gcrypt,
1727 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001728 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 install : true,
1731 install_dir : rootlibexecdir)
1732
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001733 exe = executable('resolvectl',
1734 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001736 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001737 libbasic_gcrypt,
1738 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001740 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 libm,
1742 libidn],
1743 install_rpath : rootlibexecdir,
1744 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001745 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001746
1747 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001748 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001749 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001750
1751 meson.add_install_script(meson_make_symlink,
1752 join_paths(bindir, 'resolvectl'),
1753 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754endif
1755
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001756if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 executable('systemd-logind',
1758 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001759 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001761 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001762 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001764 install_rpath : rootlibexecdir,
1765 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 exe = executable('loginctl',
1769 loginctl_sources,
1770 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001771 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 dependencies : [threads,
1773 liblz4,
1774 libxz],
1775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001778 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 exe = executable('systemd-inhibit',
1781 'src/login/inhibit.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001787 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001788
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001789 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001790 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 pam_systemd = shared_library(
1792 'pam_systemd',
1793 pam_systemd_c,
1794 name_prefix : '',
1795 include_directories : includes,
1796 link_args : ['-shared',
1797 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001798 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 libshared_static],
1800 dependencies : [threads,
1801 libpam,
1802 libpam_misc],
1803 link_depends : pam_systemd_sym,
1804 install : true,
1805 install_dir : pamlibdir)
1806
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001807 if want_tests != 'false'
1808 test('dlopen-pam_systemd',
1809 test_dlopen,
1810 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001811 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001812 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001815 executable('systemd-user-runtime-dir',
1816 user_runtime_dir_sources,
1817 include_directories : includes,
1818 link_with : [libshared],
1819 install_rpath : rootlibexecdir,
1820 install : true,
1821 install_dir : rootlibexecdir)
1822endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001823
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001824if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 executable('systemd-user-sessions',
1826 'src/user-sessions/user-sessions.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832endif
1833
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001834if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 exe = executable('bootctl',
1836 'src/boot/bootctl.c',
1837 include_directories : includes,
1838 link_with : [libshared],
1839 dependencies : [libblkid],
1840 install_rpath : rootlibexecdir,
1841 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001842 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001843
1844 executable('systemd-bless-boot',
1845 'src/boot/bless-boot.c',
1846 include_directories : includes,
1847 link_with : [libshared],
1848 dependencies : [libblkid],
1849 install_rpath : rootlibexecdir,
1850 install : true,
1851 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001852
1853 executable('systemd-bless-boot-generator',
1854 'src/boot/bless-boot-generator.c',
1855 include_directories : includes,
1856 link_with : [libshared],
1857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001860endif
1861
Lennart Poetteringf876f532018-06-25 16:07:33 +02001862executable('systemd-boot-check-no-failures',
1863 'src/boot/boot-check-no-failures.c',
1864 include_directories : includes,
1865 link_with : [libshared],
1866 dependencies : [libblkid],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
1870
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001871exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1872 include_directories : includes,
1873 link_with : [libshared],
1874 dependencies : [threads],
1875 install_rpath : rootlibexecdir,
1876 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001877public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878
Felipe Satelerf3794362018-05-22 15:08:57 -04001879
1880if get_option('link-systemctl-shared')
1881 systemctl_link_with = [libshared]
1882else
1883 systemctl_link_with = [libsystemd_static,
1884 libshared_static,
1885 libjournal_client,
1886 libbasic_gcrypt]
1887endif
1888
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001889exe = executable('systemctl',
1890 'src/systemctl/systemctl.c',
1891 'src/systemctl/sysv-compat.h',
1892 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001893 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001894 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001895 dependencies : [threads,
1896 libcap,
1897 libselinux,
1898 libxz,
1899 liblz4],
1900 install_rpath : rootlibexecdir,
1901 install : true,
1902 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001903public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001904
Lennart Poettering61d05782018-04-16 21:41:40 +02001905if conf.get('ENABLE_PORTABLED') == 1
1906 executable('systemd-portabled',
1907 systemd_portabled_sources,
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [threads],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootlibexecdir)
1914
1915 exe = executable('portablectl', 'src/portable/portablectl.c',
1916 include_directories : includes,
1917 link_with : [libshared],
1918 dependencies : [threads],
1919 install_rpath : rootlibexecdir,
1920 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001921 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001922 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001923endif
1924
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001925foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1926 meson.add_install_script(meson_make_symlink,
1927 join_paths(rootbindir, 'systemctl'),
1928 join_paths(rootsbindir, alias))
1929endforeach
1930
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001931if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 executable('systemd-backlight',
1933 'src/backlight/backlight.c',
1934 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001935 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939endif
1940
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001941if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 executable('systemd-rfkill',
1943 'src/rfkill/rfkill.c',
1944 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001945 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949endif
1950
1951executable('systemd-system-update-generator',
1952 'src/system-update-generator/system-update-generator.c',
1953 include_directories : includes,
1954 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001955 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001956 install : true,
1957 install_dir : systemgeneratordir)
1958
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001959if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001960 executable('systemd-cryptsetup',
1961 'src/cryptsetup/cryptsetup.c',
1962 include_directories : includes,
1963 link_with : [libshared],
1964 dependencies : [libcryptsetup],
1965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 executable('systemd-cryptsetup-generator',
1970 'src/cryptsetup/cryptsetup-generator.c',
1971 include_directories : includes,
1972 link_with : [libshared],
1973 dependencies : [libcryptsetup],
1974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001977
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-veritysetup',
1979 'src/veritysetup/veritysetup.c',
1980 include_directories : includes,
1981 link_with : [libshared],
1982 dependencies : [libcryptsetup],
1983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001986
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 executable('systemd-veritysetup-generator',
1988 'src/veritysetup/veritysetup-generator.c',
1989 include_directories : includes,
1990 link_with : [libshared],
1991 dependencies : [libcryptsetup],
1992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995endif
1996
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001997if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 executable('systemd-sysv-generator',
1999 'src/sysv-generator/sysv-generator.c',
2000 include_directories : includes,
2001 link_with : [libshared],
2002 install_rpath : rootlibexecdir,
2003 install : true,
2004 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 executable('systemd-rc-local-generator',
2007 'src/rc-local-generator/rc-local-generator.c',
2008 include_directories : includes,
2009 link_with : [libshared],
2010 install_rpath : rootlibexecdir,
2011 install : true,
2012 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013endif
2014
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002015if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 executable('systemd-hostnamed',
2017 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002018 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002019 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 install : true,
2022 install_dir : rootlibexecdir)
2023
2024 exe = executable('hostnamectl',
2025 'src/hostname/hostnamectl.c',
2026 include_directories : includes,
2027 link_with : [libshared],
2028 install_rpath : rootlibexecdir,
2029 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002030 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031endif
2032
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002033if conf.get('ENABLE_LOCALED') == 1
2034 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035 # logind will load libxkbcommon.so dynamically on its own
2036 deps = [libdl]
2037 else
2038 deps = []
2039 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002040
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 executable('systemd-localed',
2042 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002043 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002044 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002046 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 install : true,
2048 install_dir : rootlibexecdir)
2049
2050 exe = executable('localectl',
2051 localectl_sources,
2052 include_directories : includes,
2053 link_with : [libshared],
2054 install_rpath : rootlibexecdir,
2055 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002056 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057endif
2058
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002059if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 executable('systemd-timedated',
2061 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002062 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002063 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002067endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068
Yu Watanabe6129ec82018-05-03 18:07:43 +09002069if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 exe = executable('timedatectl',
2071 'src/timedate/timedatectl.c',
2072 include_directories : includes,
2073 install_rpath : rootlibexecdir,
2074 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002075 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002077 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-timesyncd',
2082 systemd_timesyncd_sources,
2083 include_directories : includes,
2084 link_with : [libshared],
2085 dependencies : [threads,
2086 libm],
2087 install_rpath : rootlibexecdir,
2088 install : true,
2089 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002090
2091 executable('systemd-time-wait-sync',
2092 'src/time-wait-sync/time-wait-sync.c',
2093 include_directories : includes,
2094 link_with : [libshared],
2095 install_rpath : rootlibexecdir,
2096 install : true,
2097 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002098endif
2099
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002100if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 executable('systemd-machined',
2102 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002103 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 link_with : [libmachine_core,
2105 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002106 install_rpath : rootlibexecdir,
2107 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108 install_dir : rootlibexecdir)
2109
2110 exe = executable('machinectl',
2111 'src/machine/machinectl.c',
2112 include_directories : includes,
2113 link_with : [libshared],
2114 dependencies : [threads,
2115 libxz,
2116 liblz4],
2117 install_rpath : rootlibexecdir,
2118 install : true,
2119 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002120 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002121endif
2122
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002123if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002124 executable('systemd-importd',
2125 systemd_importd_sources,
2126 include_directories : includes,
2127 link_with : [libshared],
2128 dependencies : [threads],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002132
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 systemd_pull = executable('systemd-pull',
2134 systemd_pull_sources,
2135 include_directories : includes,
2136 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002137 dependencies : [versiondep,
2138 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 libz,
2140 libbzip2,
2141 libxz,
2142 libgcrypt],
2143 install_rpath : rootlibexecdir,
2144 install : true,
2145 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002146
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002147 systemd_import = executable('systemd-import',
2148 systemd_import_sources,
2149 include_directories : includes,
2150 link_with : [libshared],
2151 dependencies : [libcurl,
2152 libz,
2153 libbzip2,
2154 libxz],
2155 install_rpath : rootlibexecdir,
2156 install : true,
2157 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002159 systemd_import_fs = executable('systemd-import-fs',
2160 systemd_import_fs_sources,
2161 include_directories : includes,
2162 link_with : [libshared],
2163 install_rpath : rootlibexecdir,
2164 install : true,
2165 install_dir : rootlibexecdir)
2166
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167 systemd_export = executable('systemd-export',
2168 systemd_export_sources,
2169 include_directories : includes,
2170 link_with : [libshared],
2171 dependencies : [libcurl,
2172 libz,
2173 libbzip2,
2174 libxz],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002178
2179 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180endif
2181
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002182if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 exe = executable('systemd-journal-upload',
2184 systemd_journal_upload_sources,
2185 include_directories : includes,
2186 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002187 dependencies : [versiondep,
2188 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002189 libcurl,
2190 libgnutls,
2191 libxz,
2192 liblz4],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002196 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197endif
2198
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002199if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 s_j_remote = executable('systemd-journal-remote',
2201 systemd_journal_remote_sources,
2202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002203 link_with : [libshared,
2204 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002205 dependencies : [threads,
2206 libmicrohttpd,
2207 libgnutls,
2208 libxz,
2209 liblz4],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002214 s_j_gatewayd = executable('systemd-journal-gatewayd',
2215 systemd_journal_gatewayd_sources,
2216 include_directories : includes,
2217 link_with : [libshared],
2218 dependencies : [threads,
2219 libmicrohttpd,
2220 libgnutls,
2221 libxz,
2222 liblz4],
2223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootlibexecdir)
2226 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227endif
2228
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002229if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 executable('systemd-coredump',
2231 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002233 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 libacl,
2236 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237 libxz,
2238 liblz4],
2239 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 install : true,
2241 install_dir : rootlibexecdir)
2242
2243 exe = executable('coredumpctl',
2244 coredumpctl_sources,
2245 include_directories : includes,
2246 link_with : [libshared],
2247 dependencies : [threads,
2248 libxz,
2249 liblz4],
2250 install_rpath : rootlibexecdir,
2251 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002252 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253endif
2254
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002255if conf.get('ENABLE_PSTORE') == 1
2256 executable('systemd-pstore',
2257 systemd_pstore_sources,
2258 include_directories : includes,
2259 link_with : [libshared],
2260 dependencies : [threads,
2261 libacl,
2262 libdw,
2263 libxz,
2264 liblz4],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002268endif
2269
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002270if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002271 exe = executable('systemd-binfmt',
2272 'src/binfmt/binfmt.c',
2273 include_directories : includes,
2274 link_with : [libshared],
2275 install_rpath : rootlibexecdir,
2276 install : true,
2277 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002278 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279
2280 meson.add_install_script('sh', '-c',
2281 mkdir_p.format(binfmtdir))
2282 meson.add_install_script('sh', '-c',
2283 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2284endif
2285
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002286if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 executable('systemd-vconsole-setup',
2288 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 include_directories : includes,
2290 link_with : [libshared],
2291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294endif
2295
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002296if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002297 executable('systemd-random-seed',
2298 'src/random-seed/random-seed.c',
2299 include_directories : includes,
2300 link_with : [libshared],
2301 install_rpath : rootlibexecdir,
2302 install : true,
2303 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304endif
2305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 executable('systemd-firstboot',
2308 'src/firstboot/firstboot.c',
2309 include_directories : includes,
2310 link_with : [libshared],
2311 dependencies : [libcrypt],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315endif
2316
2317executable('systemd-remount-fs',
2318 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002320 link_with : [libcore_shared,
2321 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002322 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323 install : true,
2324 install_dir : rootlibexecdir)
2325
2326executable('systemd-machine-id-setup',
2327 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002329 link_with : [libcore_shared,
2330 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002331 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332 install : true,
2333 install_dir : rootbindir)
2334
2335executable('systemd-fsck',
2336 'src/fsck/fsck.c',
2337 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002338 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002339 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340 install : true,
2341 install_dir : rootlibexecdir)
2342
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002343executable('systemd-growfs',
2344 'src/partition/growfs.c',
2345 include_directories : includes,
2346 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002347 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002348 install_rpath : rootlibexecdir,
2349 install : true,
2350 install_dir : rootlibexecdir)
2351
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002352executable('systemd-makefs',
2353 'src/partition/makefs.c',
2354 include_directories : includes,
2355 link_with : [libshared],
2356 install_rpath : rootlibexecdir,
2357 install : true,
2358 install_dir : rootlibexecdir)
2359
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360executable('systemd-sleep',
2361 'src/sleep/sleep.c',
2362 include_directories : includes,
2363 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002364 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365 install : true,
2366 install_dir : rootlibexecdir)
2367
Yu Watanabed25e1272019-01-03 02:32:57 +09002368install_data('src/sleep/sleep.conf',
2369 install_dir : pkgsysconfdir)
2370
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371exe = executable('systemd-sysctl',
2372 'src/sysctl/sysctl.c',
2373 include_directories : includes,
2374 link_with : [libshared],
2375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002378public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002379
2380executable('systemd-ac-power',
2381 'src/ac-power/ac-power.c',
2382 include_directories : includes,
2383 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002384 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385 install : true,
2386 install_dir : rootlibexecdir)
2387
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388exe = executable('systemd-detect-virt',
2389 'src/detect-virt/detect-virt.c',
2390 include_directories : includes,
2391 link_with : [libshared],
2392 install_rpath : rootlibexecdir,
2393 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002394public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002396exe = executable('systemd-delta',
2397 'src/delta/delta.c',
2398 include_directories : includes,
2399 link_with : [libshared],
2400 install_rpath : rootlibexecdir,
2401 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002402public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002404exe = executable('systemd-escape',
2405 'src/escape/escape.c',
2406 include_directories : includes,
2407 link_with : [libshared],
2408 install_rpath : rootlibexecdir,
2409 install : true,
2410 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002411public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413exe = executable('systemd-notify',
2414 'src/notify/notify.c',
2415 include_directories : includes,
2416 link_with : [libshared],
2417 install_rpath : rootlibexecdir,
2418 install : true,
2419 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002420public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
2422executable('systemd-volatile-root',
2423 'src/volatile-root/volatile-root.c',
2424 include_directories : includes,
2425 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002426 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427 install : true,
2428 install_dir : rootlibexecdir)
2429
2430executable('systemd-cgroups-agent',
2431 'src/cgroups-agent/cgroups-agent.c',
2432 include_directories : includes,
2433 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002434 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435 install : true,
2436 install_dir : rootlibexecdir)
2437
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002438exe = executable('systemd-id128',
2439 'src/id128/id128.c',
2440 include_directories : includes,
2441 link_with : [libshared],
2442 install_rpath : rootlibexecdir,
2443 install : true)
2444public_programs += exe
2445
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446exe = executable('systemd-path',
2447 'src/path/path.c',
2448 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002449 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450 install_rpath : rootlibexecdir,
2451 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002452public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454exe = executable('systemd-ask-password',
2455 'src/ask-password/ask-password.c',
2456 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002457 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458 install_rpath : rootlibexecdir,
2459 install : true,
2460 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002461public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
2463executable('systemd-reply-password',
2464 'src/reply-password/reply-password.c',
2465 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002466 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002467 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468 install : true,
2469 install_dir : rootlibexecdir)
2470
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471exe = executable('systemd-tty-ask-password-agent',
2472 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2473 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002474 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002475 install_rpath : rootlibexecdir,
2476 install : true,
2477 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002478public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480exe = executable('systemd-cgls',
2481 'src/cgls/cgls.c',
2482 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484 install_rpath : rootlibexecdir,
2485 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002486public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002487
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488exe = executable('systemd-cgtop',
2489 'src/cgtop/cgtop.c',
2490 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492 install_rpath : rootlibexecdir,
2493 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002494public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002495
2496executable('systemd-initctl',
2497 'src/initctl/initctl.c',
2498 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002499 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002500 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501 install : true,
2502 install_dir : rootlibexecdir)
2503
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504exe = executable('systemd-mount',
2505 'src/mount/mount-tool.c',
2506 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002507 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002508 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509 install_rpath : rootlibexecdir,
2510 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002511public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002513meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002514 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002515
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516exe = executable('systemd-run',
2517 'src/run/run.c',
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-Szmek005a29f2017-04-13 11:52:05 -04002524exe = executable('systemd-stdio-bridge',
2525 'src/stdio-bridge/stdio-bridge.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002528 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002529 install_rpath : rootlibexecdir,
2530 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002531public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533exe = executable('busctl',
2534 'src/busctl/busctl.c',
2535 'src/busctl/busctl-introspect.c',
2536 'src/busctl/busctl-introspect.h',
2537 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002538 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539 install_rpath : rootlibexecdir,
2540 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002541public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002543if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544 exe = executable('systemd-sysusers',
2545 'src/sysusers/sysusers.c',
2546 include_directories : includes,
2547 link_with : [libshared],
2548 install_rpath : rootlibexecdir,
2549 install : true,
2550 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002551 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552endif
2553
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002554if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 exe = executable('systemd-tmpfiles',
2556 'src/tmpfiles/tmpfiles.c',
2557 include_directories : includes,
2558 link_with : [libshared],
2559 dependencies : [libacl],
2560 install_rpath : rootlibexecdir,
2561 install : true,
2562 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002563 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002564
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002565 if want_tests != 'false'
2566 test('test-systemd-tmpfiles',
2567 test_systemd_tmpfiles_py,
2568 # https://github.com/mesonbuild/meson/issues/2681
2569 args : exe.full_path())
2570 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571endif
2572
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002573if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002574 exe = executable('systemd-hwdb',
2575 'src/hwdb/hwdb.c',
2576 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2577 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002578 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002579 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002580 install : true,
2581 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002582 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002583endif
2584
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002585if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002586 executable('systemd-quotacheck',
2587 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002588 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002589 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590 install_rpath : rootlibexecdir,
2591 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002592 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002593endif
2594
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002595exe = executable('systemd-socket-proxyd',
2596 'src/socket-proxy/socket-proxyd.c',
2597 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002598 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002599 dependencies : [threads],
2600 install_rpath : rootlibexecdir,
2601 install : true,
2602 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002603public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002604
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605exe = executable('systemd-udevd',
2606 systemd_udevd_sources,
2607 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002608 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002609 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002611 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002612 dependencies : [versiondep,
2613 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002614 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002616 libacl,
2617 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002618 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002619 install : true,
2620 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623exe = executable('udevadm',
2624 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002625 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626 include_directories : includes,
2627 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002629 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002630 dependencies : [versiondep,
2631 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002632 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002634 libacl,
2635 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002636 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002637 install : true,
2638 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002639public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002640
2641executable('systemd-shutdown',
2642 systemd_shutdown_sources,
2643 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002644 link_with : [libcore_shared,
2645 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002646 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002647 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002648 install : true,
2649 install_dir : rootlibexecdir)
2650
2651executable('systemd-update-done',
2652 'src/update-done/update-done.c',
2653 include_directories : includes,
2654 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002655 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656 install : true,
2657 install_dir : rootlibexecdir)
2658
2659executable('systemd-update-utmp',
2660 'src/update-utmp/update-utmp.c',
2661 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002662 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002663 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002664 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665 install : true,
2666 install_dir : rootlibexecdir)
2667
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002668if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002669 executable('systemd-modules-load',
2670 'src/modules-load/modules-load.c',
2671 include_directories : includes,
2672 link_with : [libshared],
2673 dependencies : [libkmod],
2674 install_rpath : rootlibexecdir,
2675 install : true,
2676 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002677
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002678 meson.add_install_script('sh', '-c',
2679 mkdir_p.format(modulesloaddir))
2680 meson.add_install_script('sh', '-c',
2681 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002682endif
2683
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002684exe = executable('systemd-nspawn',
2685 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002686 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002687 link_with : [libcore_shared,
2688 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002689 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002690 dependencies : [libblkid,
2691 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002692 install_rpath : rootlibexecdir,
2693 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002694public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002696if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002697 executable('systemd-networkd',
2698 systemd_networkd_sources,
2699 include_directories : includes,
2700 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002701 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002702 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002703 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002704 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002705 install_rpath : rootlibexecdir,
2706 install : true,
2707 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 executable('systemd-networkd-wait-online',
2710 systemd_networkd_wait_online_sources,
2711 include_directories : includes,
2712 link_with : [libnetworkd_core,
2713 libshared],
2714 install_rpath : rootlibexecdir,
2715 install : true,
2716 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002717
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002718 exe = executable('networkctl',
2719 networkctl_sources,
2720 include_directories : includes,
2721 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002722 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002723 install_rpath : rootlibexecdir,
2724 install : true,
2725 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002726 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002727
2728 executable('systemd-network-generator',
2729 network_generator_sources,
2730 include_directories : includes,
2731 link_with : [libshared],
2732 install_rpath : rootlibexecdir,
2733 install : true,
2734 install_dir : rootlibexecdir)
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002735endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002736
2737executable('systemd-sulogin-shell',
2738 ['src/sulogin-shell/sulogin-shell.c'],
2739 include_directories : includes,
2740 link_with : [libshared],
2741 install_rpath : rootlibexecdir,
2742 install : true,
2743 install_dir : rootlibexecdir)
2744
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002745############################################################
2746
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002747custom_target(
2748 'systemd-runtest.env',
2749 output : 'systemd-runtest.env',
2750 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002751 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002752 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002753 '} >@OUTPUT@'],
2754 build_by_default : true)
2755
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002756foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002757 sources = tuple[0]
2758 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2759 dependencies = tuple[2]
2760 condition = tuple.length() >= 4 ? tuple[3] : ''
2761 type = tuple.length() >= 5 ? tuple[4] : ''
2762 defs = tuple.length() >= 6 ? tuple[5] : []
2763 incs = tuple.length() >= 7 ? tuple[6] : includes
2764 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002765
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002766 name = sources[0].split('/')[-1].split('.')[0]
2767 if type.startswith('timeout=')
2768 timeout = type.split('=')[1].to_int()
2769 type = ''
2770 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002771
2772 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002773 exe = executable(
2774 name,
2775 sources,
2776 include_directories : incs,
2777 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002778 dependencies : [versiondep,
2779 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002780 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002781 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002782 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002783 install : install_tests,
2784 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002785
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002786 if type == 'manual'
2787 message('@0@ is a manual test'.format(name))
2788 elif type == 'unsafe' and want_tests != 'unsafe'
2789 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002790 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 test(name, exe,
2792 env : test_env,
2793 timeout : timeout)
2794 endif
2795 else
2796 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2797 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002798endforeach
2799
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002800exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002801 'test-libsystemd-sym',
2802 test_libsystemd_sym_c,
2803 include_directories : includes,
2804 link_with : [libsystemd],
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-libsystemd-sym', exe)
2810endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002811
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002812exe = executable(
2813 'test-libsystemd-static-sym',
2814 test_libsystemd_sym_c,
2815 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002816 link_with : [install_libsystemd_static],
2817 dependencies : [threads], # threads is already included in dependencies on the library,
2818 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002819 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002820 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002821 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002822if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002823 test('test-libsystemd-static-sym', exe)
2824endif
2825
2826exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002827 'test-libudev-sym',
2828 test_libudev_sym_c,
2829 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002830 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002831 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002832 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002833 install : install_tests,
2834 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002835if want_tests != 'false'
2836 test('test-libudev-sym', exe)
2837endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002838
2839exe = executable(
2840 'test-libudev-static-sym',
2841 test_libudev_sym_c,
2842 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002843 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002844 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002845 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002846 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002847 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002848if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849 test('test-libudev-static-sym', exe)
2850endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002851
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002852############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002853
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002854fuzzer_exes = []
2855
Michael Olbrich59967402018-11-11 11:27:35 +01002856if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002857foreach tuple : fuzzers
2858 sources = tuple[0]
2859 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2860 dependencies = tuple[2]
2861 defs = tuple.length() >= 4 ? tuple[3] : []
2862 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002863 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002864
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002865 if want_ossfuzz or want_fuzzbuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002866 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002867 elif want_libfuzzer
2868 if fuzzing_engine.found()
2869 dependencies += fuzzing_engine
2870 else
2871 link_args += ['-fsanitize=fuzzer']
2872 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002873 else
2874 sources += 'src/fuzz/fuzz-main.c'
2875 endif
2876
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00002877 if want_fuzzbuzz
2878 sources += 'src/fuzz/fuzzer-entry-point.c'
2879 endif
2880
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002881 name = sources[0].split('/')[-1].split('.')[0]
2882
2883 fuzzer_exes += executable(
2884 name,
2885 sources,
2886 include_directories : [incs, include_directories('src/fuzz')],
2887 link_with : link_with,
2888 dependencies : dependencies,
2889 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02002890 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002891 install : false)
2892endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002893endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002894
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002895run_target('fuzzers',
2896 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002897 command : ['true'])
2898
2899############################################################
2900
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002901make_directive_index_py = find_program('tools/make-directive-index.py')
2902make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002903xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002904hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002905
2906subdir('units')
2907subdir('sysctl.d')
2908subdir('sysusers.d')
2909subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002910subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002911subdir('hwdb')
2912subdir('network')
2913subdir('man')
2914subdir('shell-completion/bash')
2915subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002916subdir('docs/sysvinit')
2917subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002918
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002919install_subdir('factory/etc',
2920 install_dir : factorydir)
2921
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002922install_data('xorg/50-systemd-user.sh',
2923 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002924install_data('modprobe.d/systemd.conf',
2925 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002926install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002927 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002928 'NEWS',
2929 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302930 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002931 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002932 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302933 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002934 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002935 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002936 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002937 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2938 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002939
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002940meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2941meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2942
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002943############################################################
2944
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002945meson_check_help = find_program('tools/meson-check-help.sh')
2946
2947foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002948 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002949 if want_tests != 'false'
2950 test('check-help-' + name,
2951 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002952 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002953 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002954endforeach
2955
2956############################################################
2957
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02002958check_directives_sh = find_program('tools/check-directives.sh')
2959
2960if want_tests != 'false'
2961 test('check-directives',
2962 check_directives_sh,
2963 args : project_source_root)
2964endif
2965
2966############################################################
2967
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002968# Enable tests for all supported sanitizers
2969foreach tuple : sanitizers
2970 sanitizer = tuple[0]
2971 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002972
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002973 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002974 prev = ''
2975 foreach p : fuzz_regression_tests
2976 b = p.split('/')[-2]
2977 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002978
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002979 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002980
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002981 if name != prev
2982 if want_tests == 'false'
2983 message('Not compiling @0@ because tests is set to false'.format(name))
2984 elif slow_tests
2985 exe = custom_target(
2986 name,
2987 output : name,
2988 depends : build,
2989 command : [env, 'ln', '-fs',
2990 join_paths(build.full_path(), b),
2991 '@OUTPUT@'],
2992 build_by_default : true)
2993 else
2994 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2995 endif
2996 endif
2997 prev = name
2998
2999 if want_tests != 'false' and slow_tests
3000 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3001 env,
3002 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003003 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003004 endif
3005 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003006 endif
3007endforeach
3008
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003009
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003010############################################################
3011
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003012if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003013 all_files = run_command(
3014 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003015 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 'ls-files',
3017 ':/*.[ch]'])
3018 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003019
userwithuide85a6902017-08-09 13:41:44 +00003020 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003021 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003022 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003023 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003024 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003025 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003026 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003027endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003028
3029if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003030 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003031 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003032 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003033 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003034endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003035
3036if git.found()
3037 git_head = run_command(
3038 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003039 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003040 'rev-parse', 'HEAD']).stdout().strip()
3041 git_head_short = run_command(
3042 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003043 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003044 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3045
3046 run_target(
3047 'git-snapshot',
3048 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003049 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003050 git_head_short),
3051 '--prefix', 'systemd-@0@/'.format(git_head),
3052 'HEAD'])
3053endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003054
3055############################################################
3056
Lennart Poettering51b13862017-12-20 12:51:14 +01003057meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3058run_target(
3059 'check-api-docs',
3060 depends : [man, libsystemd, libudev],
3061 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3062
3063############################################################
3064
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003065status = [
3066 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3067
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003068 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003069 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003070 'prefix directory: @0@'.format(prefixdir),
3071 'rootprefix directory: @0@'.format(rootprefixdir),
3072 'sysconf directory: @0@'.format(sysconfdir),
3073 'include directory: @0@'.format(includedir),
3074 'lib directory: @0@'.format(libdir),
3075 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003076 'SysV init scripts: @0@'.format(sysvinit_path),
3077 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003078 'PAM modules directory: @0@'.format(pamlibdir),
3079 'PAM configuration directory: @0@'.format(pamconfdir),
3080 'RPM macros directory: @0@'.format(rpmmacrosdir),
3081 'modprobe.d directory: @0@'.format(modprobedir),
3082 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3083 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3084 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3085 'bash completions directory: @0@'.format(bashcompletiondir),
3086 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003087 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3089 get_option('debug-tty')),
3090 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003091 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 'maximum system UID: @0@'.format(system_uid_max),
3093 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003094 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3095 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3096 'minimum container UID base: @0@'.format(container_uid_base_min),
3097 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003098 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003099 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003100 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003102 'nobody user name: @0@'.format(nobody_user),
3103 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003105 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106
3107 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003108 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003110 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003111 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3112 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113
3114alt_dns_servers = '\n '.join(dns_servers.split(' '))
3115alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3116status += [
3117 'default DNS servers: @0@'.format(alt_dns_servers),
3118 'default NTP servers: @0@'.format(alt_ntp_servers)]
3119
3120alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3121 '@@0@'.format(time_epoch)).stdout().strip()
3122status += [
3123 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3124
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003125status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003126 'static libsystemd: @0@'.format(static_libsystemd),
3127 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003128
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129# TODO:
3130# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3131# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3132# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003134if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003135 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003136
3137 if have_gnu_efi
3138 status += [
3139 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003140 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003141 'EFI lib directory: @0@'.format(efi_libdir),
3142 'EFI lds directory: @0@'.format(efi_ldsdir),
3143 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144 endif
3145endif
3146
3147found = []
3148missing = []
3149
3150foreach tuple : [
3151 ['libcryptsetup'],
3152 ['PAM'],
3153 ['AUDIT'],
3154 ['IMA'],
3155 ['AppArmor'],
3156 ['SELinux'],
3157 ['SECCOMP'],
3158 ['SMACK'],
3159 ['zlib'],
3160 ['xz'],
3161 ['lz4'],
3162 ['bzip2'],
3163 ['ACL'],
3164 ['gcrypt'],
3165 ['qrencode'],
3166 ['microhttpd'],
3167 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003168 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003169 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003170 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003171 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 ['libidn'],
3173 ['libiptc'],
3174 ['elfutils'],
3175 ['binfmt'],
3176 ['vconsole'],
3177 ['quotacheck'],
3178 ['tmpfiles'],
3179 ['environment.d'],
3180 ['sysusers'],
3181 ['firstboot'],
3182 ['randomseed'],
3183 ['backlight'],
3184 ['rfkill'],
3185 ['logind'],
3186 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003187 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 ['importd'],
3189 ['hostnamed'],
3190 ['timedated'],
3191 ['timesyncd'],
3192 ['localed'],
3193 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003194 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003195 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3196 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003197 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003198 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003199 ['polkit'],
3200 ['legacy pkla', install_polkit_pkla],
3201 ['efi'],
3202 ['gnu-efi', have_gnu_efi],
3203 ['kmod'],
3204 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003205 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003206 ['blkid'],
3207 ['dbus'],
3208 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003209 ['nss-myhostname'],
3210 ['nss-mymachines'],
3211 ['nss-resolve'],
3212 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003213 ['hwdb'],
3214 ['tpm'],
3215 ['man pages', want_man],
3216 ['html pages', want_html],
3217 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003218 ['SysV compat'],
3219 ['utmp'],
3220 ['ldconfig'],
3221 ['hibernate'],
3222 ['adm group', get_option('adm-group')],
3223 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003224 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003225 ['debug hashmap'],
3226 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003227 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003228 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003229 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003230 ['link-udev-shared', get_option('link-udev-shared')],
3231 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003232]
3233
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003234 if tuple.length() >= 2
3235 cond = tuple[1]
3236 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3238 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003239 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 endif
3241 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003242 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003244 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245 endif
3246endforeach
3247
3248status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003249 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003251 '',
3252 'disabled features: @0@'.format(', '.join(missing)),
3253 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003254message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003255
3256if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003257 warning('\n' +
3258 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3259 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3260 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003261endif