blob: 84805067a7a79783b66f459a1458f3db0f2469b0 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Zbigniew Jędrzejewski-Szmek064605e2019-01-10 22:29:01 +01004 version : '241',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringbfe6bb22019-03-27 14:23:57 +010015libsystemd_version = '0.26.0'
16libudev_version = '1.6.14'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Davide Cavalca1485aac2019-02-27 11:19:07 -050029# This is to be used instead of meson.source_root(), as the latter will return
30# the wrong result when systemd is being built as a meson subproject
31project_source_root = meson.current_source_dir()
32
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020033want_ossfuzz = get_option('oss-fuzz')
34want_libfuzzer = get_option('llvm-fuzz')
35if want_ossfuzz and want_libfuzzer
36 error('only one of oss-fuzz and llvm-fuzz can be specified')
37endif
38fuzzer_build = want_ossfuzz or want_libfuzzer
39
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040040#####################################################################
41
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040042# Try to install the git pre-commit hook
Davide Cavalca1485aac2019-02-27 11:19:07 -050043git_hook = run_command(join_paths(project_source_root, 'tools/add-git-hook.sh'))
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040044if git_hook.returncode() == 0
45 message(git_hook.stdout().strip())
46endif
47
48#####################################################################
49
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010050if get_option('split-usr') == 'auto'
51 split_usr = run_command('test', '-L', '/bin').returncode() != 0
52else
53 split_usr = get_option('split-usr') == 'true'
54endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010055conf.set10('HAVE_SPLIT_USR', split_usr,
56 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010057
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010058if get_option('split-bin') == 'auto'
59 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
60else
61 split_bin = get_option('split-bin') == 'true'
62endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010063conf.set10('HAVE_SPLIT_BIN', split_bin,
64 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010065
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010066rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010067# Unusual rootprefixdir values are used by some distros
68# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010069rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010070if rootprefixdir == ''
71 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010072endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010073rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
75sysvinit_path = get_option('sysvinit-path')
76sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090077conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020078 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040079
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020080conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
81conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010082conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020083
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010084# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085# encountered, so this should canonicalize various paths when they are
86# absolute or relative.
87prefixdir = get_option('prefix')
88if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040089 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040090endif
91bindir = join_paths(prefixdir, get_option('bindir'))
92libdir = join_paths(prefixdir, get_option('libdir'))
93sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
94includedir = join_paths(prefixdir, get_option('includedir'))
95datadir = join_paths(prefixdir, get_option('datadir'))
96localstatedir = join_paths('/', get_option('localstatedir'))
97
98rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010099rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
101
102rootlibdir = get_option('rootlibdir')
103if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400104 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400105endif
106
107# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200108pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
109pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400110polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
111polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
112polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
113varlogdir = join_paths(localstatedir, 'log')
114xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900115rpmmacrosdir = get_option('rpmmacrosdir')
116if rpmmacrosdir != 'no'
117 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
118endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200119modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400120
121# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400122pkgdatadir = join_paths(datadir, 'systemd')
123environmentdir = join_paths(prefixdir, 'lib/environment.d')
124pkgsysconfdir = join_paths(sysconfdir, 'systemd')
125userunitdir = join_paths(prefixdir, 'lib/systemd/user')
126userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
127tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
128sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
129sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
130binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
131modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
132networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
133pkgincludedir = join_paths(includedir, 'systemd')
134systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
135usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
Topi Miettinen509276f2019-04-01 23:31:47 +0300136pkgsysconfsystemgeneratordir = join_paths(pkgsysconfdir, 'system-generators')
137pkgsysconfusergeneratordir = join_paths(pkgsysconfdir, 'user-generators')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400138systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
139userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
140systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
141systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
142systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
143systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
144udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
146udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
147catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
148kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
149factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400150bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
151testsdir = join_paths(prefixdir, 'lib/systemd/tests')
152systemdstatedir = join_paths(localstatedir, 'lib/systemd')
153catalogstatedir = join_paths(systemdstatedir, 'catalog')
154randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200155profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156
tblume75aaade2018-02-01 22:46:15 +0100157docdir = get_option('docdir')
158if docdir == ''
159 docdir = join_paths(datadir, 'doc/systemd')
160endif
161
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400162dbuspolicydir = get_option('dbuspolicydir')
163if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussessionservicedir = get_option('dbussessionservicedir')
168if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172dbussystemservicedir = get_option('dbussystemservicedir')
173if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamlibdir = get_option('pamlibdir')
178if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182pamconfdir = get_option('pamconfdir')
183if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100187memory_accounting_default = get_option('memory-accounting-default')
188
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400189conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400190conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
192conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
193conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400194conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
195conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100196
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100197conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100198
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
201conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
203conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
204conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
205conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100206conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100207conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
209conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
210conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
211conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
212conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100213conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400214conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400215conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
216conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400217conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
218conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
219conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
220conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
221conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
222conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
224conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700225conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700226conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400227conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400229conf.set_quoted('LIBDIR', libdir)
230conf.set_quoted('ROOTLIBDIR', rootlibdir)
231conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
232conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400233conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
234conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200235conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400236conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
237conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
238conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
239conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200240conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100241conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100244substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100245substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400246substs.set('exec_prefix', prefixdir)
247substs.set('libdir', libdir)
248substs.set('rootlibdir', rootlibdir)
249substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100250substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('bindir', bindir)
252substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('rootlibexecdir', rootlibexecdir)
254substs.set('systemunitdir', systemunitdir)
255substs.set('userunitdir', userunitdir)
256substs.set('systempresetdir', systempresetdir)
257substs.set('userpresetdir', userpresetdir)
258substs.set('udevhwdbdir', udevhwdbdir)
259substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400260substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('catalogdir', catalogdir)
263substs.set('tmpfilesdir', tmpfilesdir)
264substs.set('sysusersdir', sysusersdir)
265substs.set('sysctldir', sysctldir)
266substs.set('binfmtdir', binfmtdir)
267substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200268substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400269substs.set('systemgeneratordir', systemgeneratordir)
270substs.set('usergeneratordir', usergeneratordir)
271substs.set('systemenvgeneratordir', systemenvgeneratordir)
272substs.set('userenvgeneratordir', userenvgeneratordir)
273substs.set('systemshutdowndir', systemshutdowndir)
274substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400275substs.set('VARLOGDIR', varlogdir)
276substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400277substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
278substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400279substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
280substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
281substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
282substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100283substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200284substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
286#####################################################################
287
288cc = meson.get_compiler('c')
289pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400290check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100291meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400292
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200293want_tests = get_option('tests')
294slow_tests = want_tests != 'false' and get_option('slow-tests')
295install_tests = get_option('install-tests')
296
James Hilliard46e63a22018-12-27 09:16:20 +0800297if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200298 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200299 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200300else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200301 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400302endif
303
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500304if want_libfuzzer
305 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200306elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500307 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
308endif
309
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900310possible_cc_flags = [
311 '-Wextra',
312 '-Werror=undef',
313 '-Wlogical-op',
314 '-Wmissing-include-dirs',
315 '-Wold-style-definition',
316 '-Wpointer-arith',
317 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900318 '-Wfloat-equal',
319 '-Wsuggest-attribute=noreturn',
320 '-Werror=missing-prototypes',
321 '-Werror=implicit-function-declaration',
322 '-Werror=missing-declarations',
323 '-Werror=return-type',
324 '-Werror=incompatible-pointer-types',
325 '-Werror=format=2',
326 '-Wstrict-prototypes',
327 '-Wredundant-decls',
328 '-Wmissing-noreturn',
329 '-Wimplicit-fallthrough=5',
330 '-Wshadow',
331 '-Wendif-labels',
332 '-Wstrict-aliasing=2',
333 '-Wwrite-strings',
334 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200335 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200336 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900337 '-Wdate-time',
338 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700339
340 # negative arguments are correctly detected starting with meson 0.46.
341 '-Wno-unused-parameter',
342 '-Wno-missing-field-initializers',
343 '-Wno-unused-result',
344 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100345 '-Wno-error=#warnings', # clang
346 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700347
348 # work-around for gcc 7.1 turning this on on its own.
349 '-Wno-error=nonnull',
350
351 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
352 # optimizations enabled, producing essentially false positives.
353 '-Wno-maybe-uninitialized',
354
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900355 '-ffast-math',
356 '-fno-common',
357 '-fdiagnostics-show-option',
358 '-fno-strict-aliasing',
359 '-fvisibility=hidden',
360 '-fstack-protector',
361 '-fstack-protector-strong',
362 '--param=ssp-buffer-size=4',
363]
364
365# --as-needed and --no-undefined are provided by meson by default,
366# run mesonconf to see what is enabled
367possible_link_flags = [
368 '-Wl,-z,relro',
369 '-Wl,-z,now',
370]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400371
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900372if cc.get_id() == 'clang'
373 possible_cc_flags += [
374 '-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
377endif
378
379if get_option('buildtype') != 'debug'
380 possible_cc_flags += [
381 '-ffunction-sections',
382 '-fdata-sections',
383 ]
384
385 possible_link_flags += '-Wl,--gc-sections'
386endif
387
Zbigniew Jędrzejewski-Szmeka73f6212019-03-28 09:44:02 +0100388if get_option('b_ndebug') == 'true'
389 # With asserts disabled with get a bunch of warnings about variables which
390 # are used only in the asserts. This is not useful at all, so let's just silence
391 # those warnings.
392 possible_cc_flags += [
393 '-Wno-unused-variable',
394 '-Wno-unused-but-set-variable',
395 ]
396endif
397
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900398add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900399add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900400
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800401if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402 #include <time.h>
403 #include <inttypes.h>
404 typedef uint64_t usec_t;
405 usec_t now(clockid_t clock);
406 int main(void) {
407 struct timespec now;
408 return 0;
409 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100410''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400411 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400412endif
413
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200414cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400415
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416#####################################################################
417# compilation result tests
418
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400419conf.set('_GNU_SOURCE', true)
420conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421
422conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
423conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
424conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
425conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
426conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
427conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
428conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
429
430decl_headers = '''
431#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100432#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434
435foreach decl : ['char16_t',
436 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100437 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400439
440 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200441 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
442
443 if decl == 'struct statx'
444 if have
445 want_linux_stat_h = false
446 else
447 have = cc.sizeof(decl,
448 prefix : decl_headers + '#include <linux/stat.h>',
449 args : '-D_GNU_SOURCE') > 0
450 want_linux_stat_h = have
451 endif
452 endif
453
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200454 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400455endforeach
456
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200457conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700458
Yu Watanabe9714c022018-12-02 16:27:02 +0100459foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900460 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
461 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
462 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
463 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
464 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100465 ['FRA_TUN_ID', 'linux/fib_rules.h'],
466 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100467 ['FRA_PAD', 'linux/fib_rules.h'],
468 ['FRA_L3MDEV', 'linux/fib_rules.h'],
469 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
470 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
471 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
472 ['FOU_CMD_GET', 'linux/fou.h'],
473 ['IFA_FLAGS', 'linux/if_addr.h'],
474 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
475 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
476 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
477 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
478 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
479 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
480 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
481 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
482 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
483 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
484 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
485 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
486 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
487 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
488 ['IFLA_PAD', 'linux/if_link.h'],
489 ['IFLA_XDP', 'linux/if_link.h'],
490 ['IFLA_EVENT', 'linux/if_link.h'],
491 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
492 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
493 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
494 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100495 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100496 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
497 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
498 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
499 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
500 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
501 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
502 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
503 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
504 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
505 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
506 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
507 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
508 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
509 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
510 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
511 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
512 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
513 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
514 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
515 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
516 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
517 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
518 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
519 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
520 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
521 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
522 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
523 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
524 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
525 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
526 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
527 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
528 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
529 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
530 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
531 # if_tunnel.h is buggy and cannot be included on its own
532 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
533 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
534 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
535 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
536 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
537 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
538 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
539 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
540 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
541 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
542 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 prefix = decl.length() > 2 ? decl[2] : ''
545 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200546 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547endforeach
548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200550 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551endforeach
552
553foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100554 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100555 ['gettid', '''#include <sys/types.h>
556 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100557 ['pivot_root', '''#include <stdlib.h>
558 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100559 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560 #include <sys/stat.h>
561 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100562 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100563 ['renameat2', '''#include <stdio.h>
564 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400565 ['kcmp', '''#include <linux/kcmp.h>'''],
566 ['keyctl', '''#include <sys/types.h>
567 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100568 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400569 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200570 ['bpf', '''#include <sys/syscall.h>
571 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100572 ['statx', '''#include <sys/types.h>
573 #include <sys/stat.h>
574 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100575 ['explicit_bzero' , '''#include <string.h>'''],
576 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400577]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400578
Lennart Poettering85db59b2017-12-25 12:01:14 +0100579 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200580 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400581endforeach
582
Lennart Poettering85db59b2017-12-25 12:01:14 +0100583if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200584 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200585 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400586else
587 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200588 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200589 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400590endif
591
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592#####################################################################
593
Davide Cavalca1485aac2019-02-27 11:19:07 -0500594vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
595 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100596 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100597 meson.project_version()]
598
Louis Taylord1084aa2019-01-21 21:45:36 +0000599version_h = vcs_tag(
600 input : 'src/version/version.h.in',
601 output : 'version.h',
602 command: vcs_tagger)
603
604versiondep = declare_dependency(sources: version_h)
605
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400608m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400610git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100611env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100612perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613
Davide Cavalca1485aac2019-02-27 11:19:07 -0500614meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400615mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400616test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
617splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400618
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
620# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500621progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623 ['kmod', '/usr/bin/kmod' ],
624 ['kexec', '/usr/sbin/kexec' ],
625 ['sulogin', '/usr/sbin/sulogin' ],
626 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
627 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
628 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
629 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
630 ]
631foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 path = get_option(prog[0] + '-path')
633 if path != ''
634 message('Using @1@ for @0@'.format(prog[0], path))
635 else
636 exe = find_program(prog[0],
637 '/usr/sbin/' + prog[0],
638 '/sbin/' + prog[0],
639 required: false)
640 path = exe.found() ? exe.path() : prog[1]
641 endif
642 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
643 conf.set_quoted(name, path)
644 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645endforeach
646
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500647conf.set_quoted('TELINIT', get_option('telinit-path'))
648
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400649if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100650 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400651endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652
653############################################################
654
655gperf = find_program('gperf')
656
657gperf_test_format = '''
658#include <string.h>
659const char * in_word_set(const char *, @0@);
660@1@
661'''
662gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
663gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
664gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
665if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400668 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
669 if cc.compiles(gperf_test)
670 gperf_len_type = 'unsigned'
671 else
672 error('unable to determine gperf len type')
673 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674endif
675message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400676conf.set('GPERF_LEN_TYPE', gperf_len_type,
677 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678
679############################################################
680
681if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400682 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100684foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100685 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900686 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687 'linux/memfd.h',
688 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100689 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200690 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691 'valgrind/memcheck.h',
692 'valgrind/valgrind.h',
693 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400694
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200695 conf.set10('HAVE_' + header.underscorify().to_upper(),
696 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697endforeach
698
699############################################################
700
701conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400702conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
703gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704
705default_hierarchy = get_option('default-hierarchy')
706conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
707 description : 'default cgroup hierarchy as string')
708if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400710elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400711 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400712else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400713 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400714endif
715
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100716default_net_naming_scheme = get_option('default-net-naming-scheme')
717conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
718
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400719time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900720if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400721 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900722 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400723endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724conf.set('TIME_EPOCH', time_epoch)
725
726system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900727if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400728 system_uid_max = run_command(
729 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800730 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
731 '/etc/login.defs').stdout().strip()
732 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900733 system_uid_max = 999
734 else
735 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800736 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738conf.set('SYSTEM_UID_MAX', system_uid_max)
739substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900742if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400743 system_gid_max = run_command(
744 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800745 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
746 '/etc/login.defs').stdout().strip()
747 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900748 system_gid_max = 999
749 else
750 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800751 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753conf.set('SYSTEM_GID_MAX', system_gid_max)
754substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
Yu Watanabeac093402018-05-10 16:04:16 +0900756dynamic_uid_min = get_option('dynamic-uid-min')
757dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100758conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
759conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
760substs.set('dynamicuidmin', dynamic_uid_min)
761substs.set('dynamicuidmax', dynamic_uid_max)
762
Yu Watanabeac093402018-05-10 16:04:16 +0900763container_uid_base_min = get_option('container-uid-base-min')
764container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100765conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
766conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
767substs.set('containeruidbasemin', container_uid_base_min)
768substs.set('containeruidbasemax', container_uid_base_max)
769
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770nobody_user = get_option('nobody-user')
771nobody_group = get_option('nobody-group')
772
Chen Qi2484bff2018-07-23 14:53:09 +0800773if not meson.is_cross_build()
774 getent_result = run_command('getent', 'passwd', '65534')
775 if getent_result.returncode() == 0
776 name = getent_result.stdout().split(':')[0]
777 if name != nobody_user
778 warning('\n' +
779 '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) +
780 'Your build will result in an user table setup that is incompatible with the local system.')
781 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100782 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800783 id_result = run_command('id', '-u', nobody_user)
784 if id_result.returncode() == 0
785 id = id_result.stdout().to_int()
786 if id != 65534
787 warning('\n' +
788 '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) +
789 'Your build will result in an user table setup that is incompatible with the local system.')
790 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100791 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100792
Chen Qi2484bff2018-07-23 14:53:09 +0800793 getent_result = run_command('getent', 'group', '65534')
794 if getent_result.returncode() == 0
795 name = getent_result.stdout().split(':')[0]
796 if name != nobody_group
797 warning('\n' +
798 '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) +
799 'Your build will result in an group table setup that is incompatible with the local system.')
800 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100801 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800802 id_result = run_command('id', '-g', nobody_group)
803 if id_result.returncode() == 0
804 id = id_result.stdout().to_int()
805 if id != 65534
806 warning('\n' +
807 '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) +
808 'Your build will result in an group table setup that is incompatible with the local system.')
809 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100810 endif
811endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900812if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900813 warning('\n' +
814 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
815 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900816endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100817
818conf.set_quoted('NOBODY_USER_NAME', nobody_user)
819conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900820substs.set('NOBODY_USER_NAME', nobody_user)
821substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100822
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823tty_gid = get_option('tty-gid')
824conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400825substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
Ikey Doherty84786b82017-12-03 12:28:23 +0000827# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900828users_gid = get_option('users-gid')
829substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000830
Yu Watanabe348b4432018-05-07 18:17:35 +0900831conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
832conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833
Michael Bieblace5e312018-07-13 23:36:13 +0200834dev_kvm_mode = get_option('dev-kvm-mode')
835substs.set('DEV_KVM_MODE', dev_kvm_mode)
836conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100837group_render_mode = get_option('group-render-mode')
838substs.set('GROUP_RENDER_MODE', group_render_mode)
839conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400841kill_user_processes = get_option('default-kill-user-processes')
842conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100843conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400844substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400846dns_servers = get_option('dns-servers')
847conf.set_quoted('DNS_SERVERS', dns_servers)
848substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400850ntp_servers = get_option('ntp-servers')
851conf.set_quoted('NTP_SERVERS', ntp_servers)
852substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853
Dave Reisner8ca9e922018-12-28 07:38:36 -0500854default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900855if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800856 if not meson.is_cross_build()
857 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
858 default_locale = run_command(choose_default_locale_sh).stdout().strip()
859 else
860 default_locale = 'C.UTF-8'
861 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900862endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500863conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
864
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
866
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400867substs.set('SUSHELL', get_option('debug-shell'))
868substs.set('DEBUGTTY', get_option('debug-tty'))
869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870enable_debug_hashmap = false
871enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900872enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900873enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200874foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900875 if name == 'hashmap'
876 enable_debug_hashmap = true
877 elif name == 'mmap-cache'
878 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900879 elif name == 'siphash'
880 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900881 elif name == 'udev'
882 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900883 else
884 message('unknown debug option "@0@", ignoring'.format(name))
885 endif
886endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
888conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900889conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900890conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400891
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200892conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200893conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895#####################################################################
896
897threads = dependency('threads')
898librt = cc.find_library('rt')
899libm = cc.find_library('m')
900libdl = cc.find_library('dl')
901libcrypt = cc.find_library('crypt')
902
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400903libcap = dependency('libcap', required : false)
904if not libcap.found()
905 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
906 libcap = cc.find_library('cap')
907endif
908
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100910 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400915 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libseccomp.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 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libselinux = dependency('libselinux',
927 version : '>= 2.1.9',
928 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = libselinux.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 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libapparmor = dependency('libapparmor',
939 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libapparmor.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 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947smack_run_label = get_option('smack-run-label')
948if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950endif
951
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400952want_polkit = get_option('polkit')
953install_polkit = false
954install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500955if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400957
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libpolkit = dependency('polkit-gobject-1',
959 required : false)
960 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
961 message('Old polkit detected, will install pkla files')
962 install_polkit_pkla = true
963 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400964endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400966
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400967want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500968if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400969 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400973 libacl = []
974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400976
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986
987want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500988if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500998if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libkmod = dependency('libkmod',
1000 version : '>= 15',
1001 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
1009want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001010if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libpam = cc.find_library('pam', required : want_pam == 'true')
1012 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libpam.found() and libpam_misc.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 libpam = []
1017 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020
1021want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001022if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libmicrohttpd = dependency('libmicrohttpd',
1024 version : '>= 0.9.33',
1025 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001034if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libcryptsetup = dependency('libcryptsetup',
1036 version : '>= 1.6.0',
1037 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001039 have_sector = cc.has_member(
1040 'struct crypt_params_plain',
1041 'sector_size',
1042 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001045 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001049conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
1051want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001052if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libcurl = dependency('libcurl',
1054 version : '>= 7.32.0',
1055 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001064want_libidn2 = get_option('libidn2')
1065if want_libidn == 'true' and want_libidn2 == 'true'
1066 error('libidn and libidn2 cannot be requested simultaneously')
1067endif
1068
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001069if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libidn = dependency('libidn',
1071 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001075 libidn = []
1076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001078if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001079 # libidn is used for both libidn and libidn2 objects
1080 libidn = dependency('libidn2',
1081 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libidn.found()
1083else
1084 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087
1088want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001089if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001090 libiptc = dependency('libiptc',
1091 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098
1099want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001100if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 libqrencode = dependency('libqrencode',
1102 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001111if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1113 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116 have = false
1117endif
1118if not have
1119 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001120 libgcrypt = []
1121 libgpg_error = []
1122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001124
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001126if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libgnutls = dependency('gnutls',
1128 version : '>= 3.1.4',
1129 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001137want_openssl = get_option('openssl')
1138if want_openssl != 'false' and not fuzzer_build
1139 libopenssl = dependency('openssl',
1140 version : '>= 1.1.0',
1141 required : want_openssl == 'true')
1142 have = libopenssl.found()
1143else
1144 have = false
1145 libopenssl = []
1146endif
1147conf.set10('HAVE_OPENSSL', have)
1148
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001150if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001151 libdw = dependency('libdw',
1152 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001154else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159
1160want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001161if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001162 libz = dependency('zlib',
1163 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170
1171want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001172if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001173 libbzip2 = cc.find_library('bz2',
1174 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181
1182want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001183if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001184 libxz = dependency('liblzma',
1185 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001186 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001187else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001188 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001189 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001190endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192
1193want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001194if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001196 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001197 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001198 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001199else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001200 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001201 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001205want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001206if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001207 libxkbcommon = dependency('xkbcommon',
1208 version : '>= 0.3.0',
1209 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001211else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001213 libxkbcommon = []
1214endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001216
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001217want_pcre2 = get_option('pcre2')
1218if want_pcre2 != 'false'
1219 libpcre2 = dependency('libpcre2-8',
1220 required : want_pcre2 == 'true')
1221 have = libpcre2.found()
1222else
1223 have = false
1224 libpcre2 = []
1225endif
1226conf.set10('HAVE_PCRE2', have)
1227
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001228want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001229if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 libglib = dependency('glib-2.0',
1231 version : '>= 2.22.0',
1232 required : want_glib == 'true')
1233 libgobject = dependency('gobject-2.0',
1234 version : '>= 2.22.0',
1235 required : want_glib == 'true')
1236 libgio = dependency('gio-2.0',
1237 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001238 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 libglib = []
1242 libgobject = []
1243 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001244endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246
1247want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001248if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 libdbus = dependency('dbus-1',
1250 version : '>= 1.3.2',
1251 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001253else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001254 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001255 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001256endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001257conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001258
Yu Watanabe42303dc2017-06-18 05:22:32 +09001259default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001260if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001261 default_dnssec = 'no'
1262endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001263if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001264 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1265 default_dnssec = 'no'
1266endif
1267conf.set('DEFAULT_DNSSEC_MODE',
1268 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1269substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1270
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001271dns_over_tls = get_option('dns-over-tls')
1272if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001273 if dns_over_tls == 'openssl'
1274 have_gnutls = false
1275 else
1276 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1277 if dns_over_tls == 'gnutls' and not have_gnutls
1278 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1279 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001280 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001281 if dns_over_tls == 'gnutls' or have_gnutls
1282 have_openssl = false
1283 else
1284 have_openssl = conf.get('HAVE_OPENSSL') == 1
1285 if dns_over_tls != 'auto' and not have_openssl
1286 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1287 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1288 endif
1289 endif
1290 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001291else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001292 have = false
1293 have_gnutls = false
1294 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001295endif
1296conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001297conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1298conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001299
Iwan Timmerc9299be2018-06-13 20:26:24 +02001300default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001301if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001302 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001303endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001304if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1305 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001306 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001307endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001308conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1309 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1310substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001311
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001313if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001314 have = (conf.get('HAVE_LIBCURL') == 1 and
1315 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001316 conf.get('HAVE_XZ') == 1 and
1317 conf.get('HAVE_GCRYPT') == 1)
1318 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 error('importd support was requested, but dependencies are not available')
1320 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001321else
1322 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001324conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325
1326want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001327if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001328 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1329 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1331 # it's possible to build one without the other. Complain only if
1332 # support was explictly requested. The auxiliary files like sysusers
1333 # config should be installed when any of the programs are built.
1334 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1335 error('remote support was requested, but dependencies are not available')
1336 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001337 have = have_deps[0] or have_deps[1]
1338else
1339 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001341conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001343foreach term : ['utmp',
1344 'hibernate',
1345 'environment-d',
1346 'binfmt',
1347 'coredump',
1348 'resolve',
1349 'logind',
1350 'hostnamed',
1351 'localed',
1352 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001353 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001354 'networkd',
1355 'timedated',
1356 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001357 'firstboot',
1358 'randomseed',
1359 'backlight',
1360 'vconsole',
1361 'quotacheck',
1362 'sysusers',
1363 'tmpfiles',
1364 'hwdb',
1365 'rfkill',
1366 'ldconfig',
1367 'efi',
1368 'tpm',
1369 'ima',
1370 'smack',
1371 'gshadow',
1372 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001373 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001374 'nss-systemd']
1375 have = get_option(term)
1376 name = 'ENABLE_' + term.underscorify().to_upper()
1377 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378endforeach
1379
Yu Watanabe08540a92018-07-18 09:25:57 +09001380foreach tuple : [['nss-mymachines', 'machined'],
1381 ['nss-resolve', 'resolve']]
1382 want = get_option(tuple[0])
1383 if want != 'false'
1384 have = get_option(tuple[1])
1385 if want == 'true' and not have
1386 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1387 endif
1388 else
1389 have = false
1390 endif
1391 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1392 conf.set10(name, have)
1393endforeach
1394
1395enable_nss = false
1396foreach term : ['ENABLE_NSS_MYHOSTNAME',
1397 'ENABLE_NSS_MYMACHINES',
1398 'ENABLE_NSS_RESOLVE',
1399 'ENABLE_NSS_SYSTEMD']
1400 if conf.get(term) == 1
1401 enable_nss = true
1402 endif
1403endforeach
1404conf.set10('ENABLE_NSS', enable_nss)
1405
Yu Watanabe348b4432018-05-07 18:17:35 +09001406conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001407
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001408tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001409fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001410
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001411conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001412
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413#####################################################################
1414
1415if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001417
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001418 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001420 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001421 elif efi_arch == 'x86_64'
1422 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001423 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 elif efi_arch == 'arm'
1425 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001426 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001427 elif efi_arch == 'aarch64'
1428 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001429 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001430 else
1431 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001432 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001433 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001435 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001436 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001437
Yu Watanabeac093402018-05-10 16:04:16 +09001438 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001439else
1440 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001442conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443
1444#####################################################################
1445
1446config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001447 output : 'config.h',
1448 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449
Yu Watanabe348b4432018-05-07 18:17:35 +09001450meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452includes = include_directories('src/basic',
1453 'src/shared',
1454 'src/systemd',
1455 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001456 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001457 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458 'src/resolve',
1459 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001460 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461 'src/login',
1462 'src/udev',
1463 'src/libudev',
1464 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001465 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466 'src/libsystemd/sd-bus',
1467 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001468 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469 'src/libsystemd/sd-hwdb',
1470 'src/libsystemd/sd-id128',
1471 'src/libsystemd/sd-netlink',
1472 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001473 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001475 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476
1477add_project_arguments('-include', 'config.h', language : 'c')
1478
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001479generate_gperfs = find_program('tools/generate-gperfs.py')
1480
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481subdir('po')
1482subdir('catalog')
1483subdir('src/systemd')
1484subdir('src/basic')
1485subdir('src/libsystemd')
1486subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001488subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001489
1490libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 'journal-core',
1492 libjournal_core_sources,
1493 journald_gperf_c,
1494 include_directories : includes,
1495 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496
Davide Cavalca1485aac2019-02-27 11:19:07 -05001497libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001500 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001501 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 include_directories : includes,
1503 link_args : ['-shared',
1504 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001505 link_with : [libbasic,
1506 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001507 link_whole : [libsystemd_static,
1508 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 dependencies : [threads,
1510 librt,
1511 libxz,
1512 liblz4],
1513 link_depends : libsystemd_sym,
1514 install : true,
1515 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
Davide Cavalca70848ec2018-04-09 02:43:35 -07001517static_libsystemd = get_option('static-libsystemd')
1518static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1519
1520install_libsystemd_static = static_library(
1521 'systemd',
1522 libsystemd_sources,
1523 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001524 basic_sources,
1525 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001526 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001527 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001528 build_by_default : static_libsystemd != 'false',
1529 install : static_libsystemd != 'false',
1530 install_dir : rootlibdir,
1531 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1532 dependencies : [threads,
1533 librt,
1534 libxz,
1535 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001536 libcap,
1537 libblkid,
1538 libmount,
1539 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001540 libgcrypt],
1541 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543############################################################
1544
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545# binaries that have --help and are intended for use by humans,
1546# usually, but not always, installed in /bin.
1547public_programs = []
1548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001549subdir('src/libudev')
1550subdir('src/shared')
1551subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001552subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001553subdir('src/udev')
1554subdir('src/network')
1555
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001556subdir('src/analyze')
1557subdir('src/journal-remote')
1558subdir('src/coredump')
1559subdir('src/hostname')
1560subdir('src/import')
1561subdir('src/kernel-install')
1562subdir('src/locale')
1563subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001564subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001565subdir('src/nspawn')
1566subdir('src/resolve')
1567subdir('src/timedate')
1568subdir('src/timesync')
1569subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001570subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001571
1572subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001573subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001574subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001575subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001576
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001577############################################################
1578
1579# only static linking apart from libdl, to make sure that the
1580# module is linked to all libraries that it uses.
1581test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 'test-dlopen',
1583 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001584 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 include_directories : includes,
1586 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001587 dependencies : [libdl],
1588 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001589
Yu Watanabe08540a92018-07-18 09:25:57 +09001590foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001591 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001592 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1593 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001594
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001595 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 if condition
1597 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001598
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001600 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001601
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 nss = shared_library(
1603 'nss_' + module,
1604 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001605 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001606 version : '2',
1607 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001608 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1609 link_args : ['-Wl,-z,nodelete',
1610 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001611 '-Wl,--version-script=' + version_script_arg,
1612 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001613 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 libbasic],
1615 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001616 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001617 link_depends : sym,
1618 install : true,
1619 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001620
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 # We cannot use shared_module because it does not support version suffix.
1622 # Unfortunately shared_library insists on creating the symlink…
1623 meson.add_install_script('sh', '-c',
1624 'rm $DESTDIR@0@/libnss_@1@.so'
1625 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001626
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001627 if want_tests != 'false'
1628 test('dlopen-nss_' + module,
1629 test_dlopen,
1630 # path to dlopen must include a slash
1631 args : nss.full_path())
1632 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001634endforeach
1635
1636############################################################
1637
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638executable('systemd',
1639 systemd_sources,
1640 include_directories : includes,
1641 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001643 dependencies : [versiondep,
1644 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645 librt,
1646 libseccomp,
1647 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001648 libmount,
1649 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001650 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651 install : true,
1652 install_dir : rootlibexecdir)
1653
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001654meson.add_install_script(meson_make_symlink,
1655 join_paths(rootlibexecdir, 'systemd'),
1656 join_paths(rootsbindir, 'init'))
1657
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001658exe = executable('systemd-analyze',
1659 systemd_analyze_sources,
1660 include_directories : includes,
1661 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001662 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001663 dependencies : [versiondep,
1664 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665 librt,
1666 libseccomp,
1667 libselinux,
1668 libmount,
1669 libblkid],
1670 install_rpath : rootlibexecdir,
1671 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001672public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
1674executable('systemd-journald',
1675 systemd_journald_sources,
1676 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001677 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001678 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679 dependencies : [threads,
1680 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001681 liblz4,
1682 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001683 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684 install : true,
1685 install_dir : rootlibexecdir)
1686
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001687exe = executable('systemd-cat',
1688 systemd_cat_sources,
1689 include_directories : includes,
1690 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001691 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001692 dependencies : [threads],
1693 install_rpath : rootlibexecdir,
1694 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001695public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001697exe = executable('journalctl',
1698 journalctl_sources,
1699 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001700 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001701 dependencies : [threads,
1702 libqrencode,
1703 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001704 liblz4,
1705 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706 install_rpath : rootlibexecdir,
1707 install : true,
1708 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001709public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
1711executable('systemd-getty-generator',
1712 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001713 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001714 link_with : [libshared],
1715 install_rpath : rootlibexecdir,
1716 install : true,
1717 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718
1719executable('systemd-debug-generator',
1720 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001722 link_with : [libshared],
1723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001727executable('systemd-run-generator',
1728 'src/run-generator/run-generator.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : systemgeneratordir)
1734
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735executable('systemd-fstab-generator',
1736 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001738 link_with : [libcore_shared,
1739 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001740 install_rpath : rootlibexecdir,
1741 install : true,
1742 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001744if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 executable('30-systemd-environment-d-generator',
1746 'src/environment-d-generator/environment-d-generator.c',
1747 include_directories : includes,
1748 link_with : [libshared],
1749 install_rpath : rootlibexecdir,
1750 install : true,
1751 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001752
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 meson.add_install_script(meson_make_symlink,
1754 join_paths(sysconfdir, 'environment'),
1755 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756endif
1757
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001758if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 executable('systemd-hibernate-resume-generator',
1760 'src/hibernate-resume/hibernate-resume-generator.c',
1761 include_directories : includes,
1762 link_with : [libshared],
1763 install_rpath : rootlibexecdir,
1764 install : true,
1765 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001766
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 executable('systemd-hibernate-resume',
1768 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001769 include_directories : includes,
1770 link_with : [libshared],
1771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774endif
1775
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001776if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-gpt-auto-generator',
1778 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001779 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001781 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 dependencies : libblkid,
1783 install_rpath : rootlibexecdir,
1784 install : true,
1785 install_dir : systemgeneratordir)
1786
1787 exe = executable('systemd-dissect',
1788 'src/dissect/dissect.c',
1789 include_directories : includes,
1790 link_with : [libshared],
1791 install_rpath : rootlibexecdir,
1792 install : true,
1793 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001794 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795endif
1796
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001797if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-resolved',
1799 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001801 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001802 libbasic_gcrypt,
1803 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001804 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001805 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 install : true,
1807 install_dir : rootlibexecdir)
1808
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001809 exe = executable('resolvectl',
1810 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001812 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001813 libbasic_gcrypt,
1814 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001816 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 libm,
1818 libidn],
1819 install_rpath : rootlibexecdir,
1820 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001821 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001822
1823 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001824 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001825 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001826
1827 meson.add_install_script(meson_make_symlink,
1828 join_paths(bindir, 'resolvectl'),
1829 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001830endif
1831
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001832if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 executable('systemd-logind',
1834 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001835 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001836 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001837 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001838 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001840 install_rpath : rootlibexecdir,
1841 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001843
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 exe = executable('loginctl',
1845 loginctl_sources,
1846 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001847 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 dependencies : [threads,
1849 liblz4,
1850 libxz],
1851 install_rpath : rootlibexecdir,
1852 install : true,
1853 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001854 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001855
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 exe = executable('systemd-inhibit',
1857 'src/login/inhibit.c',
1858 include_directories : includes,
1859 link_with : [libshared],
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001863 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001864
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001865 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001866 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 pam_systemd = shared_library(
1868 'pam_systemd',
1869 pam_systemd_c,
1870 name_prefix : '',
1871 include_directories : includes,
1872 link_args : ['-shared',
1873 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001874 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 libshared_static],
1876 dependencies : [threads,
1877 libpam,
1878 libpam_misc],
1879 link_depends : pam_systemd_sym,
1880 install : true,
1881 install_dir : pamlibdir)
1882
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001883 if want_tests != 'false'
1884 test('dlopen-pam_systemd',
1885 test_dlopen,
1886 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001887 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001888 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001891 executable('systemd-user-runtime-dir',
1892 user_runtime_dir_sources,
1893 include_directories : includes,
1894 link_with : [libshared],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : rootlibexecdir)
1898endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001899
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001900if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 executable('systemd-user-sessions',
1902 'src/user-sessions/user-sessions.c',
1903 include_directories : includes,
1904 link_with : [libshared],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908endif
1909
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001910if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 exe = executable('bootctl',
1912 'src/boot/bootctl.c',
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [libblkid],
1916 install_rpath : rootlibexecdir,
1917 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001918 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001919
1920 executable('systemd-bless-boot',
1921 'src/boot/bless-boot.c',
1922 include_directories : includes,
1923 link_with : [libshared],
1924 dependencies : [libblkid],
1925 install_rpath : rootlibexecdir,
1926 install : true,
1927 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001928
1929 executable('systemd-bless-boot-generator',
1930 'src/boot/bless-boot-generator.c',
1931 include_directories : includes,
1932 link_with : [libshared],
1933 install_rpath : rootlibexecdir,
1934 install : true,
1935 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936endif
1937
Lennart Poetteringf876f532018-06-25 16:07:33 +02001938executable('systemd-boot-check-no-failures',
1939 'src/boot/boot-check-no-failures.c',
1940 include_directories : includes,
1941 link_with : [libshared],
1942 dependencies : [libblkid],
1943 install_rpath : rootlibexecdir,
1944 install : true,
1945 install_dir : rootlibexecdir)
1946
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001947exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1948 include_directories : includes,
1949 link_with : [libshared],
1950 dependencies : [threads],
1951 install_rpath : rootlibexecdir,
1952 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001953public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954
Felipe Satelerf3794362018-05-22 15:08:57 -04001955
1956if get_option('link-systemctl-shared')
1957 systemctl_link_with = [libshared]
1958else
1959 systemctl_link_with = [libsystemd_static,
1960 libshared_static,
1961 libjournal_client,
1962 libbasic_gcrypt]
1963endif
1964
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01001965exe = executable('systemctl',
1966 'src/systemctl/systemctl.c',
1967 'src/systemctl/sysv-compat.h',
1968 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001969 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001970 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001971 dependencies : [threads,
1972 libcap,
1973 libselinux,
1974 libxz,
1975 liblz4],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001979public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980
Lennart Poettering61d05782018-04-16 21:41:40 +02001981if conf.get('ENABLE_PORTABLED') == 1
1982 executable('systemd-portabled',
1983 systemd_portabled_sources,
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [threads],
1987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : rootlibexecdir)
1990
1991 exe = executable('portablectl', 'src/portable/portablectl.c',
1992 include_directories : includes,
1993 link_with : [libshared],
1994 dependencies : [threads],
1995 install_rpath : rootlibexecdir,
1996 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001997 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001998 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001999endif
2000
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002001foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2002 meson.add_install_script(meson_make_symlink,
2003 join_paths(rootbindir, 'systemctl'),
2004 join_paths(rootsbindir, alias))
2005endforeach
2006
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002007if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 executable('systemd-backlight',
2009 'src/backlight/backlight.c',
2010 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002011 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002017if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-rfkill',
2019 'src/rfkill/rfkill.c',
2020 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002021 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 install_rpath : rootlibexecdir,
2023 install : true,
2024 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002025endif
2026
2027executable('systemd-system-update-generator',
2028 'src/system-update-generator/system-update-generator.c',
2029 include_directories : includes,
2030 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002031 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032 install : true,
2033 install_dir : systemgeneratordir)
2034
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002035if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 executable('systemd-cryptsetup',
2037 'src/cryptsetup/cryptsetup.c',
2038 include_directories : includes,
2039 link_with : [libshared],
2040 dependencies : [libcryptsetup],
2041 install_rpath : rootlibexecdir,
2042 install : true,
2043 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002044
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 executable('systemd-cryptsetup-generator',
2046 'src/cryptsetup/cryptsetup-generator.c',
2047 include_directories : includes,
2048 link_with : [libshared],
2049 dependencies : [libcryptsetup],
2050 install_rpath : rootlibexecdir,
2051 install : true,
2052 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-veritysetup',
2055 'src/veritysetup/veritysetup.c',
2056 include_directories : includes,
2057 link_with : [libshared],
2058 dependencies : [libcryptsetup],
2059 install_rpath : rootlibexecdir,
2060 install : true,
2061 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002062
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 executable('systemd-veritysetup-generator',
2064 'src/veritysetup/veritysetup-generator.c',
2065 include_directories : includes,
2066 link_with : [libshared],
2067 dependencies : [libcryptsetup],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 executable('systemd-sysv-generator',
2075 'src/sysv-generator/sysv-generator.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 executable('systemd-rc-local-generator',
2083 'src/rc-local-generator/rc-local-generator.c',
2084 include_directories : includes,
2085 link_with : [libshared],
2086 install_rpath : rootlibexecdir,
2087 install : true,
2088 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089endif
2090
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002091if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002092 executable('systemd-hostnamed',
2093 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002094 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002095 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002096 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 install : true,
2098 install_dir : rootlibexecdir)
2099
2100 exe = executable('hostnamectl',
2101 'src/hostname/hostnamectl.c',
2102 include_directories : includes,
2103 link_with : [libshared],
2104 install_rpath : rootlibexecdir,
2105 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002106 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107endif
2108
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002109if conf.get('ENABLE_LOCALED') == 1
2110 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 # logind will load libxkbcommon.so dynamically on its own
2112 deps = [libdl]
2113 else
2114 deps = []
2115 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002116
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 executable('systemd-localed',
2118 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002119 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002120 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002122 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002123 install : true,
2124 install_dir : rootlibexecdir)
2125
2126 exe = executable('localectl',
2127 localectl_sources,
2128 include_directories : includes,
2129 link_with : [libshared],
2130 install_rpath : rootlibexecdir,
2131 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002132 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133endif
2134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002135if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 executable('systemd-timedated',
2137 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002138 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002139 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002143endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144
Yu Watanabe6129ec82018-05-03 18:07:43 +09002145if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 exe = executable('timedatectl',
2147 'src/timedate/timedatectl.c',
2148 include_directories : includes,
2149 install_rpath : rootlibexecdir,
2150 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002151 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002153 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154endif
2155
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002156if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 executable('systemd-timesyncd',
2158 systemd_timesyncd_sources,
2159 include_directories : includes,
2160 link_with : [libshared],
2161 dependencies : [threads,
2162 libm],
2163 install_rpath : rootlibexecdir,
2164 install : true,
2165 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002166
2167 executable('systemd-time-wait-sync',
2168 'src/time-wait-sync/time-wait-sync.c',
2169 include_directories : includes,
2170 link_with : [libshared],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174endif
2175
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002176if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 executable('systemd-machined',
2178 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002180 link_with : [libmachine_core,
2181 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002182 install_rpath : rootlibexecdir,
2183 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 install_dir : rootlibexecdir)
2185
2186 exe = executable('machinectl',
2187 'src/machine/machinectl.c',
2188 include_directories : includes,
2189 link_with : [libshared],
2190 dependencies : [threads,
2191 libxz,
2192 liblz4],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootbindir)
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_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 executable('systemd-importd',
2201 systemd_importd_sources,
2202 include_directories : includes,
2203 link_with : [libshared],
2204 dependencies : [threads],
2205 install_rpath : rootlibexecdir,
2206 install : true,
2207 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002209 systemd_pull = executable('systemd-pull',
2210 systemd_pull_sources,
2211 include_directories : includes,
2212 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002213 dependencies : [versiondep,
2214 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002215 libz,
2216 libbzip2,
2217 libxz,
2218 libgcrypt],
2219 install_rpath : rootlibexecdir,
2220 install : true,
2221 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002223 systemd_import = executable('systemd-import',
2224 systemd_import_sources,
2225 include_directories : includes,
2226 link_with : [libshared],
2227 dependencies : [libcurl,
2228 libz,
2229 libbzip2,
2230 libxz],
2231 install_rpath : rootlibexecdir,
2232 install : true,
2233 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002235 systemd_import_fs = executable('systemd-import-fs',
2236 systemd_import_fs_sources,
2237 include_directories : includes,
2238 link_with : [libshared],
2239 install_rpath : rootlibexecdir,
2240 install : true,
2241 install_dir : rootlibexecdir)
2242
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002243 systemd_export = executable('systemd-export',
2244 systemd_export_sources,
2245 include_directories : includes,
2246 link_with : [libshared],
2247 dependencies : [libcurl,
2248 libz,
2249 libbzip2,
2250 libxz],
2251 install_rpath : rootlibexecdir,
2252 install : true,
2253 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002254
2255 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256endif
2257
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002258if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 exe = executable('systemd-journal-upload',
2260 systemd_journal_upload_sources,
2261 include_directories : includes,
2262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002263 dependencies : [versiondep,
2264 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002265 libcurl,
2266 libgnutls,
2267 libxz,
2268 liblz4],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002272 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273endif
2274
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002275if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002276 s_j_remote = executable('systemd-journal-remote',
2277 systemd_journal_remote_sources,
2278 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002279 link_with : [libshared,
2280 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002281 dependencies : [threads,
2282 libmicrohttpd,
2283 libgnutls,
2284 libxz,
2285 liblz4],
2286 install_rpath : rootlibexecdir,
2287 install : true,
2288 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 s_j_gatewayd = executable('systemd-journal-gatewayd',
2291 systemd_journal_gatewayd_sources,
2292 include_directories : includes,
2293 link_with : [libshared],
2294 dependencies : [threads,
2295 libmicrohttpd,
2296 libgnutls,
2297 libxz,
2298 liblz4],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootlibexecdir)
2302 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303endif
2304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 executable('systemd-coredump',
2307 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002309 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 libacl,
2312 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002313 libxz,
2314 liblz4],
2315 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 install : true,
2317 install_dir : rootlibexecdir)
2318
2319 exe = executable('coredumpctl',
2320 coredumpctl_sources,
2321 include_directories : includes,
2322 link_with : [libshared],
2323 dependencies : [threads,
2324 libxz,
2325 liblz4],
2326 install_rpath : rootlibexecdir,
2327 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002328 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329endif
2330
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002331if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002332 exe = executable('systemd-binfmt',
2333 'src/binfmt/binfmt.c',
2334 include_directories : includes,
2335 link_with : [libshared],
2336 install_rpath : rootlibexecdir,
2337 install : true,
2338 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002339 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340
2341 meson.add_install_script('sh', '-c',
2342 mkdir_p.format(binfmtdir))
2343 meson.add_install_script('sh', '-c',
2344 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2345endif
2346
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002347if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002348 executable('systemd-vconsole-setup',
2349 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350 include_directories : includes,
2351 link_with : [libshared],
2352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355endif
2356
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002357if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002358 executable('systemd-random-seed',
2359 'src/random-seed/random-seed.c',
2360 include_directories : includes,
2361 link_with : [libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365endif
2366
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002367if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002368 executable('systemd-firstboot',
2369 'src/firstboot/firstboot.c',
2370 include_directories : includes,
2371 link_with : [libshared],
2372 dependencies : [libcrypt],
2373 install_rpath : rootlibexecdir,
2374 install : true,
2375 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002376endif
2377
2378executable('systemd-remount-fs',
2379 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002381 link_with : [libcore_shared,
2382 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002383 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384 install : true,
2385 install_dir : rootlibexecdir)
2386
2387executable('systemd-machine-id-setup',
2388 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002390 link_with : [libcore_shared,
2391 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002392 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393 install : true,
2394 install_dir : rootbindir)
2395
2396executable('systemd-fsck',
2397 'src/fsck/fsck.c',
2398 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002399 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002400 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401 install : true,
2402 install_dir : rootlibexecdir)
2403
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002404executable('systemd-growfs',
2405 'src/partition/growfs.c',
2406 include_directories : includes,
2407 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002408 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootlibexecdir)
2412
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002413executable('systemd-makefs',
2414 'src/partition/makefs.c',
2415 include_directories : includes,
2416 link_with : [libshared],
2417 install_rpath : rootlibexecdir,
2418 install : true,
2419 install_dir : rootlibexecdir)
2420
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421executable('systemd-sleep',
2422 'src/sleep/sleep.c',
2423 include_directories : includes,
2424 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002425 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426 install : true,
2427 install_dir : rootlibexecdir)
2428
Yu Watanabed25e1272019-01-03 02:32:57 +09002429install_data('src/sleep/sleep.conf',
2430 install_dir : pkgsysconfdir)
2431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-sysctl',
2433 'src/sysctl/sysctl.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
2441executable('systemd-ac-power',
2442 'src/ac-power/ac-power.c',
2443 include_directories : includes,
2444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002445 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446 install : true,
2447 install_dir : rootlibexecdir)
2448
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449exe = executable('systemd-detect-virt',
2450 'src/detect-virt/detect-virt.c',
2451 include_directories : includes,
2452 link_with : [libshared],
2453 install_rpath : rootlibexecdir,
2454 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002455public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002456
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457exe = executable('systemd-delta',
2458 'src/delta/delta.c',
2459 include_directories : includes,
2460 link_with : [libshared],
2461 install_rpath : rootlibexecdir,
2462 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002463public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465exe = executable('systemd-escape',
2466 'src/escape/escape.c',
2467 include_directories : includes,
2468 link_with : [libshared],
2469 install_rpath : rootlibexecdir,
2470 install : true,
2471 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002472public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474exe = executable('systemd-notify',
2475 'src/notify/notify.c',
2476 include_directories : includes,
2477 link_with : [libshared],
2478 install_rpath : rootlibexecdir,
2479 install : true,
2480 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002481public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482
2483executable('systemd-volatile-root',
2484 'src/volatile-root/volatile-root.c',
2485 include_directories : includes,
2486 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002487 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488 install : true,
2489 install_dir : rootlibexecdir)
2490
2491executable('systemd-cgroups-agent',
2492 'src/cgroups-agent/cgroups-agent.c',
2493 include_directories : includes,
2494 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002495 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496 install : true,
2497 install_dir : rootlibexecdir)
2498
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002499exe = executable('systemd-id128',
2500 'src/id128/id128.c',
2501 include_directories : includes,
2502 link_with : [libshared],
2503 install_rpath : rootlibexecdir,
2504 install : true)
2505public_programs += exe
2506
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507exe = executable('systemd-path',
2508 'src/path/path.c',
2509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 install_rpath : rootlibexecdir,
2512 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002513public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515exe = executable('systemd-ask-password',
2516 'src/ask-password/ask-password.c',
2517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 install_rpath : rootlibexecdir,
2520 install : true,
2521 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002522public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523
2524executable('systemd-reply-password',
2525 'src/reply-password/reply-password.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002528 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529 install : true,
2530 install_dir : rootlibexecdir)
2531
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532exe = executable('systemd-tty-ask-password-agent',
2533 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002536 install_rpath : rootlibexecdir,
2537 install : true,
2538 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002539public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002541exe = executable('systemd-cgls',
2542 'src/cgls/cgls.c',
2543 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002544 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002545 install_rpath : rootlibexecdir,
2546 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002547public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002549exe = executable('systemd-cgtop',
2550 'src/cgtop/cgtop.c',
2551 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002552 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002553 install_rpath : rootlibexecdir,
2554 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002555public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556
2557executable('systemd-initctl',
2558 'src/initctl/initctl.c',
2559 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002560 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002561 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562 install : true,
2563 install_dir : rootlibexecdir)
2564
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565exe = executable('systemd-mount',
2566 'src/mount/mount-tool.c',
2567 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002568 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 install_rpath : rootlibexecdir,
2570 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002573meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002574 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002575
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002576exe = executable('systemd-run',
2577 'src/run/run.c',
2578 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002580 install_rpath : rootlibexecdir,
2581 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002582public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002583
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002584exe = executable('systemd-stdio-bridge',
2585 'src/stdio-bridge/stdio-bridge.c',
2586 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002587 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002588 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002589 install_rpath : rootlibexecdir,
2590 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002591public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002593exe = executable('busctl',
2594 'src/busctl/busctl.c',
2595 'src/busctl/busctl-introspect.c',
2596 'src/busctl/busctl-introspect.h',
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 install_rpath : rootlibexecdir,
2600 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002601public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002603if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002604 exe = executable('systemd-sysusers',
2605 'src/sysusers/sysusers.c',
2606 include_directories : includes,
2607 link_with : [libshared],
2608 install_rpath : rootlibexecdir,
2609 install : true,
2610 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002611 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002612endif
2613
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002614if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002615 exe = executable('systemd-tmpfiles',
2616 'src/tmpfiles/tmpfiles.c',
2617 include_directories : includes,
2618 link_with : [libshared],
2619 dependencies : [libacl],
2620 install_rpath : rootlibexecdir,
2621 install : true,
2622 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002623 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002624
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002625 if want_tests != 'false'
2626 test('test-systemd-tmpfiles',
2627 test_systemd_tmpfiles_py,
2628 # https://github.com/mesonbuild/meson/issues/2681
2629 args : exe.full_path())
2630 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631endif
2632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002633if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002634 exe = executable('systemd-hwdb',
2635 'src/hwdb/hwdb.c',
2636 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2637 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002638 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002639 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002640 install : true,
2641 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002642 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002643endif
2644
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002645if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002646 executable('systemd-quotacheck',
2647 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002649 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650 install_rpath : rootlibexecdir,
2651 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002652 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002653endif
2654
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002655exe = executable('systemd-socket-proxyd',
2656 'src/socket-proxy/socket-proxyd.c',
2657 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002658 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659 dependencies : [threads],
2660 install_rpath : rootlibexecdir,
2661 install : true,
2662 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002663public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002664
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665exe = executable('systemd-udevd',
2666 systemd_udevd_sources,
2667 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002668 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002669 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002670 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002671 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002672 dependencies : [versiondep,
2673 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002674 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002675 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002676 libacl,
2677 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002678 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002679 install : true,
2680 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002681public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002682
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002683exe = executable('udevadm',
2684 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002685 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002686 include_directories : includes,
2687 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002688 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002689 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002690 dependencies : [versiondep,
2691 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002692 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002693 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002694 libacl,
2695 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002696 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002697 install : true,
2698 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002699public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002700
2701executable('systemd-shutdown',
2702 systemd_shutdown_sources,
2703 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002704 link_with : [libcore_shared,
2705 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002706 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002707 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708 install : true,
2709 install_dir : rootlibexecdir)
2710
2711executable('systemd-update-done',
2712 'src/update-done/update-done.c',
2713 include_directories : includes,
2714 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002715 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002716 install : true,
2717 install_dir : rootlibexecdir)
2718
2719executable('systemd-update-utmp',
2720 'src/update-utmp/update-utmp.c',
2721 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002722 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002724 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725 install : true,
2726 install_dir : rootlibexecdir)
2727
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002728if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 executable('systemd-modules-load',
2730 'src/modules-load/modules-load.c',
2731 include_directories : includes,
2732 link_with : [libshared],
2733 dependencies : [libkmod],
2734 install_rpath : rootlibexecdir,
2735 install : true,
2736 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002737
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002738 meson.add_install_script('sh', '-c',
2739 mkdir_p.format(modulesloaddir))
2740 meson.add_install_script('sh', '-c',
2741 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002742endif
2743
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002744exe = executable('systemd-nspawn',
2745 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002746 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002747 link_with : [libcore_shared,
2748 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002749 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002750 dependencies : [libblkid,
2751 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002752 install_rpath : rootlibexecdir,
2753 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002754public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002755
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002756if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002757 executable('systemd-networkd',
2758 systemd_networkd_sources,
2759 include_directories : includes,
2760 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002761 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002762 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002764 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002765 install_rpath : rootlibexecdir,
2766 install : true,
2767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002768
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002769 executable('systemd-networkd-wait-online',
2770 systemd_networkd_wait_online_sources,
2771 include_directories : includes,
2772 link_with : [libnetworkd_core,
2773 libshared],
2774 install_rpath : rootlibexecdir,
2775 install : true,
2776 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002777
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002778 exe = executable('networkctl',
2779 networkctl_sources,
2780 include_directories : includes,
2781 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002782 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002783 install_rpath : rootlibexecdir,
2784 install : true,
2785 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002786 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002787endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002788
2789executable('systemd-sulogin-shell',
2790 ['src/sulogin-shell/sulogin-shell.c'],
2791 include_directories : includes,
2792 link_with : [libshared],
2793 install_rpath : rootlibexecdir,
2794 install : true,
2795 install_dir : rootlibexecdir)
2796
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002797############################################################
2798
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002799custom_target(
2800 'systemd-runtest.env',
2801 output : 'systemd-runtest.env',
2802 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05002803 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002804 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002805 '} >@OUTPUT@'],
2806 build_by_default : true)
2807
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002808foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002809 sources = tuple[0]
2810 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2811 dependencies = tuple[2]
2812 condition = tuple.length() >= 4 ? tuple[3] : ''
2813 type = tuple.length() >= 5 ? tuple[4] : ''
2814 defs = tuple.length() >= 6 ? tuple[5] : []
2815 incs = tuple.length() >= 7 ? tuple[6] : includes
2816 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002818 name = sources[0].split('/')[-1].split('.')[0]
2819 if type.startswith('timeout=')
2820 timeout = type.split('=')[1].to_int()
2821 type = ''
2822 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002823
2824 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002825 exe = executable(
2826 name,
2827 sources,
2828 include_directories : incs,
2829 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002830 dependencies : [versiondep,
2831 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002833 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002834 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002835 install : install_tests,
2836 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002837
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 if type == 'manual'
2839 message('@0@ is a manual test'.format(name))
2840 elif type == 'unsafe' and want_tests != 'unsafe'
2841 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002842 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002843 test(name, exe,
2844 env : test_env,
2845 timeout : timeout)
2846 endif
2847 else
2848 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2849 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002850endforeach
2851
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002853 'test-libsystemd-sym',
2854 test_libsystemd_sym_c,
2855 include_directories : includes,
2856 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002857 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002858 install : install_tests,
2859 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002860if want_tests != 'false'
2861 test('test-libsystemd-sym', exe)
2862endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002863
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002864exe = executable(
2865 'test-libsystemd-static-sym',
2866 test_libsystemd_sym_c,
2867 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002868 link_with : [install_libsystemd_static],
2869 dependencies : [threads], # threads is already included in dependencies on the library,
2870 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002871 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002872 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002873 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002874if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002875 test('test-libsystemd-static-sym', exe)
2876endif
2877
2878exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002879 'test-libudev-sym',
2880 test_libudev_sym_c,
2881 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002882 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002883 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002884 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002885 install : install_tests,
2886 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002887if want_tests != 'false'
2888 test('test-libudev-sym', exe)
2889endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002890
2891exe = executable(
2892 'test-libudev-static-sym',
2893 test_libudev_sym_c,
2894 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002895 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002896 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002897 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002898 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002899 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002900if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002901 test('test-libudev-static-sym', exe)
2902endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002903
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002904############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002905
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002906fuzzer_exes = []
2907
Michael Olbrich59967402018-11-11 11:27:35 +01002908if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002909foreach tuple : fuzzers
2910 sources = tuple[0]
2911 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2912 dependencies = tuple[2]
2913 defs = tuple.length() >= 4 ? tuple[3] : []
2914 incs = tuple.length() >= 5 ? tuple[4] : includes
2915
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002916 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002917 dependencies += fuzzing_engine
2918 else
2919 sources += 'src/fuzz/fuzz-main.c'
2920 endif
2921
2922 name = sources[0].split('/')[-1].split('.')[0]
2923
2924 fuzzer_exes += executable(
2925 name,
2926 sources,
2927 include_directories : [incs, include_directories('src/fuzz')],
2928 link_with : link_with,
2929 dependencies : dependencies,
2930 c_args : defs,
2931 install : false)
2932endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002933endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002934
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002935run_target('fuzzers',
2936 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002937 command : ['true'])
2938
2939############################################################
2940
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941make_directive_index_py = find_program('tools/make-directive-index.py')
2942make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002943xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002944hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002945
2946subdir('units')
2947subdir('sysctl.d')
2948subdir('sysusers.d')
2949subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002950subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951subdir('hwdb')
2952subdir('network')
2953subdir('man')
2954subdir('shell-completion/bash')
2955subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002956subdir('docs/sysvinit')
2957subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002958
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002959install_subdir('factory/etc',
2960 install_dir : factorydir)
2961
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002962install_data('xorg/50-systemd-user.sh',
2963 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002964install_data('modprobe.d/systemd.conf',
2965 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002966install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002967 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002968 'NEWS',
2969 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302970 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002971 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002972 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302973 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002974 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002975 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002976 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002977 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2978 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002979
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002980meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2981meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2982
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002983############################################################
2984
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002985meson_check_help = find_program('tools/meson-check-help.sh')
2986
2987foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002988 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002989 if want_tests != 'false'
2990 test('check-help-' + name,
2991 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002992 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002993 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002994endforeach
2995
2996############################################################
2997
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002998# Enable tests for all supported sanitizers
2999foreach tuple : sanitizers
3000 sanitizer = tuple[0]
3001 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003002
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003003 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003004 prev = ''
3005 foreach p : fuzz_regression_tests
3006 b = p.split('/')[-2]
3007 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003008
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003009 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003010
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003011 if name != prev
3012 if want_tests == 'false'
3013 message('Not compiling @0@ because tests is set to false'.format(name))
3014 elif slow_tests
3015 exe = custom_target(
3016 name,
3017 output : name,
3018 depends : build,
3019 command : [env, 'ln', '-fs',
3020 join_paths(build.full_path(), b),
3021 '@OUTPUT@'],
3022 build_by_default : true)
3023 else
3024 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3025 endif
3026 endif
3027 prev = name
3028
3029 if want_tests != 'false' and slow_tests
3030 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3031 env,
3032 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003033 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003034 endif
3035 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003036 endif
3037endforeach
3038
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003039
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003040############################################################
3041
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003042if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003043 all_files = run_command(
3044 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003045 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003046 'ls-files',
3047 ':/*.[ch]'])
3048 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003049
userwithuide85a6902017-08-09 13:41:44 +00003050 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003051 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003052 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003053 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003054 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003055 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003056 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003057endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003058
3059if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003060 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003061 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003062 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003063 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003064endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003065
3066if git.found()
3067 git_head = run_command(
3068 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003069 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003070 'rev-parse', 'HEAD']).stdout().strip()
3071 git_head_short = run_command(
3072 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003073 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003074 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3075
3076 run_target(
3077 'git-snapshot',
3078 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003079 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003080 git_head_short),
3081 '--prefix', 'systemd-@0@/'.format(git_head),
3082 'HEAD'])
3083endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003084
3085############################################################
3086
Lennart Poettering51b13862017-12-20 12:51:14 +01003087meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3088run_target(
3089 'check-api-docs',
3090 depends : [man, libsystemd, libudev],
3091 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3092
3093############################################################
3094
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095status = [
3096 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3097
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003098 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003099 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003100 'prefix directory: @0@'.format(prefixdir),
3101 'rootprefix directory: @0@'.format(rootprefixdir),
3102 'sysconf directory: @0@'.format(sysconfdir),
3103 'include directory: @0@'.format(includedir),
3104 'lib directory: @0@'.format(libdir),
3105 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'SysV init scripts: @0@'.format(sysvinit_path),
3107 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003108 'PAM modules directory: @0@'.format(pamlibdir),
3109 'PAM configuration directory: @0@'.format(pamconfdir),
3110 'RPM macros directory: @0@'.format(rpmmacrosdir),
3111 'modprobe.d directory: @0@'.format(modprobedir),
3112 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3113 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3114 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3115 'bash completions directory: @0@'.format(bashcompletiondir),
3116 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 'extra start script: @0@'.format(get_option('rc-local')),
3118 'extra stop script: @0@'.format(get_option('halt-local')),
3119 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3120 get_option('debug-tty')),
3121 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003122 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003123 'maximum system UID: @0@'.format(system_uid_max),
3124 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003125 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3126 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3127 'minimum container UID base: @0@'.format(container_uid_base_min),
3128 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003130 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003131 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003132 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003133 'nobody user name: @0@'.format(nobody_user),
3134 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003135 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003136 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003137
3138 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003139 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003141 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003142 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3143 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003144
3145alt_dns_servers = '\n '.join(dns_servers.split(' '))
3146alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3147status += [
3148 'default DNS servers: @0@'.format(alt_dns_servers),
3149 'default NTP servers: @0@'.format(alt_ntp_servers)]
3150
3151alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3152 '@@0@'.format(time_epoch)).stdout().strip()
3153status += [
3154 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3155
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003156status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003157 'static libsystemd: @0@'.format(static_libsystemd),
3158 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003159
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003160# TODO:
3161# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3162# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3163# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3164
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003165if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003166 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003167
3168 if have_gnu_efi
3169 status += [
3170 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003171 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003172 'EFI lib directory: @0@'.format(efi_libdir),
3173 'EFI lds directory: @0@'.format(efi_ldsdir),
3174 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 endif
3176endif
3177
3178found = []
3179missing = []
3180
3181foreach tuple : [
3182 ['libcryptsetup'],
3183 ['PAM'],
3184 ['AUDIT'],
3185 ['IMA'],
3186 ['AppArmor'],
3187 ['SELinux'],
3188 ['SECCOMP'],
3189 ['SMACK'],
3190 ['zlib'],
3191 ['xz'],
3192 ['lz4'],
3193 ['bzip2'],
3194 ['ACL'],
3195 ['gcrypt'],
3196 ['qrencode'],
3197 ['microhttpd'],
3198 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003199 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003201 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003202 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003203 ['libidn'],
3204 ['libiptc'],
3205 ['elfutils'],
3206 ['binfmt'],
3207 ['vconsole'],
3208 ['quotacheck'],
3209 ['tmpfiles'],
3210 ['environment.d'],
3211 ['sysusers'],
3212 ['firstboot'],
3213 ['randomseed'],
3214 ['backlight'],
3215 ['rfkill'],
3216 ['logind'],
3217 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003218 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003219 ['importd'],
3220 ['hostnamed'],
3221 ['timedated'],
3222 ['timesyncd'],
3223 ['localed'],
3224 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003225 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003226 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3227 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003228 ['coredump'],
3229 ['polkit'],
3230 ['legacy pkla', install_polkit_pkla],
3231 ['efi'],
3232 ['gnu-efi', have_gnu_efi],
3233 ['kmod'],
3234 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003235 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003236 ['blkid'],
3237 ['dbus'],
3238 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003239 ['nss-myhostname'],
3240 ['nss-mymachines'],
3241 ['nss-resolve'],
3242 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 ['hwdb'],
3244 ['tpm'],
3245 ['man pages', want_man],
3246 ['html pages', want_html],
3247 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248 ['SysV compat'],
3249 ['utmp'],
3250 ['ldconfig'],
3251 ['hibernate'],
3252 ['adm group', get_option('adm-group')],
3253 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003254 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003255 ['debug hashmap'],
3256 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003257 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003258 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003259 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003260 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003261 ['link-udev-shared', get_option('link-udev-shared')],
3262 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003263]
3264
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003265 if tuple.length() >= 2
3266 cond = tuple[1]
3267 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003268 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3269 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003270 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003271 endif
3272 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003273 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003274 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003275 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003276 endif
3277endforeach
3278
3279status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003280 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003281 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003282 '',
3283 'disabled features: @0@'.format(', '.join(missing)),
3284 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003285message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003286
3287if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003288 warning('\n' +
3289 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3290 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3291 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003292endif