blob: 1f2595573649370c37b2bd7e7bbd91e30d5c1490 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
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 Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
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()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020030want_ossfuzz = get_option('oss-fuzz')
31want_libfuzzer = get_option('llvm-fuzz')
32if want_ossfuzz and want_libfuzzer
33 error('only one of oss-fuzz and llvm-fuzz can be specified')
34endif
35fuzzer_build = want_ossfuzz or want_libfuzzer
36
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040037#####################################################################
38
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040039# Try to install the git pre-commit hook
40git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
41if git_hook.returncode() == 0
42 message(git_hook.stdout().strip())
43endif
44
45#####################################################################
46
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010047if get_option('split-usr') == 'auto'
48 split_usr = run_command('test', '-L', '/bin').returncode() != 0
49else
50 split_usr = get_option('split-usr') == 'true'
51endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010052conf.set10('HAVE_SPLIT_USR', split_usr,
53 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010054
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055if get_option('split-bin') == 'auto'
56 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
57else
58 split_bin = get_option('split-bin') == 'true'
59endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010060conf.set10('HAVE_SPLIT_BIN', split_bin,
61 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010062
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064# Unusual rootprefixdir values are used by some distros
65# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010066rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067if rootprefixdir == ''
68 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +020078conf.set('HIGH_RLIMIT_NOFILE', 256*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020079
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080# join_paths ignore the preceding arguments if an absolute component is
81# encountered, so this should canonicalize various paths when they are
82# absolute or relative.
83prefixdir = get_option('prefix')
84if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040085 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086endif
87bindir = join_paths(prefixdir, get_option('bindir'))
88libdir = join_paths(prefixdir, get_option('libdir'))
89sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
90includedir = join_paths(prefixdir, get_option('includedir'))
91datadir = join_paths(prefixdir, get_option('datadir'))
92localstatedir = join_paths('/', get_option('localstatedir'))
93
94rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010095rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
97
98rootlibdir = get_option('rootlibdir')
99if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400100 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101endif
102
103# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200104pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
105pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400106polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
107polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
108polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
109varlogdir = join_paths(localstatedir, 'log')
110xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900111rpmmacrosdir = get_option('rpmmacrosdir')
112if rpmmacrosdir != 'no'
113 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
114endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200115modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400116
117# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118pkgdatadir = join_paths(datadir, 'systemd')
119environmentdir = join_paths(prefixdir, 'lib/environment.d')
120pkgsysconfdir = join_paths(sysconfdir, 'systemd')
121userunitdir = join_paths(prefixdir, 'lib/systemd/user')
122userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
123tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
124sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
125sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
126binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
127modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
128networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
129pkgincludedir = join_paths(includedir, 'systemd')
130systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
131usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
132systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
133userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
134systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
135systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
136systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
137systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
138udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
139udevhomedir = udevlibexecdir
140udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
141udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
142catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
143kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
144factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
146testsdir = join_paths(prefixdir, 'lib/systemd/tests')
147systemdstatedir = join_paths(localstatedir, 'lib/systemd')
148catalogstatedir = join_paths(systemdstatedir, 'catalog')
149randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200150profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151
tblume75aaade2018-02-01 22:46:15 +0100152docdir = get_option('docdir')
153if docdir == ''
154 docdir = join_paths(datadir, 'doc/systemd')
155endif
156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157dbuspolicydir = get_option('dbuspolicydir')
158if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162dbussessionservicedir = get_option('dbussessionservicedir')
163if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussystemservicedir = get_option('dbussystemservicedir')
168if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172pamlibdir = get_option('pamlibdir')
173if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamconfdir = get_option('pamconfdir')
178if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100182memory_accounting_default = get_option('memory-accounting-default')
183
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
187conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
188conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
190conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100191
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100192conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100193
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
196conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
198conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
199conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
200conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100201conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100202conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
204conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
205conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
206conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
207conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100208conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400209conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
211conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
213conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
214conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
215conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
216conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
217conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
219conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700220conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700221conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('LIBDIR', libdir)
225conf.set_quoted('ROOTLIBDIR', rootlibdir)
226conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
227conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
229conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200230conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
232conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
233conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
234conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200235conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100236conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('exec_prefix', prefixdir)
240substs.set('libdir', libdir)
241substs.set('rootlibdir', rootlibdir)
242substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('bindir', bindir)
245substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400246substs.set('rootlibexecdir', rootlibexecdir)
247substs.set('systemunitdir', systemunitdir)
248substs.set('userunitdir', userunitdir)
249substs.set('systempresetdir', systempresetdir)
250substs.set('userpresetdir', userpresetdir)
251substs.set('udevhwdbdir', udevhwdbdir)
252substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200254substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('catalogdir', catalogdir)
256substs.set('tmpfilesdir', tmpfilesdir)
257substs.set('sysusersdir', sysusersdir)
258substs.set('sysctldir', sysctldir)
259substs.set('binfmtdir', binfmtdir)
260substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('systemgeneratordir', systemgeneratordir)
263substs.set('usergeneratordir', usergeneratordir)
264substs.set('systemenvgeneratordir', systemenvgeneratordir)
265substs.set('userenvgeneratordir', userenvgeneratordir)
266substs.set('systemshutdowndir', systemshutdowndir)
267substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400268substs.set('VARLOGDIR', varlogdir)
269substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400270substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
271substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400272substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
273substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
274substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
275substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100276substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200277substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278
279#####################################################################
280
281cc = meson.get_compiler('c')
282pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400283check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100284meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200286want_tests = get_option('tests')
287slow_tests = want_tests != 'false' and get_option('slow-tests')
288install_tests = get_option('install-tests')
289
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200290cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200291if cxx.found()
292 # Used only for tests
293 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200294 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200295else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200296 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400297endif
298
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500299if want_libfuzzer
300 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200301elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500302 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
303endif
304
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900305possible_cc_flags = [
306 '-Wextra',
307 '-Werror=undef',
308 '-Wlogical-op',
309 '-Wmissing-include-dirs',
310 '-Wold-style-definition',
311 '-Wpointer-arith',
312 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900313 '-Wfloat-equal',
314 '-Wsuggest-attribute=noreturn',
315 '-Werror=missing-prototypes',
316 '-Werror=implicit-function-declaration',
317 '-Werror=missing-declarations',
318 '-Werror=return-type',
319 '-Werror=incompatible-pointer-types',
320 '-Werror=format=2',
321 '-Wstrict-prototypes',
322 '-Wredundant-decls',
323 '-Wmissing-noreturn',
324 '-Wimplicit-fallthrough=5',
325 '-Wshadow',
326 '-Wendif-labels',
327 '-Wstrict-aliasing=2',
328 '-Wwrite-strings',
329 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200330 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200331 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900332 '-Wdate-time',
333 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700334
335 # negative arguments are correctly detected starting with meson 0.46.
336 '-Wno-unused-parameter',
337 '-Wno-missing-field-initializers',
338 '-Wno-unused-result',
339 '-Wno-format-signedness',
340
341 # work-around for gcc 7.1 turning this on on its own.
342 '-Wno-error=nonnull',
343
344 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
345 # optimizations enabled, producing essentially false positives.
346 '-Wno-maybe-uninitialized',
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-ffast-math',
349 '-fno-common',
350 '-fdiagnostics-show-option',
351 '-fno-strict-aliasing',
352 '-fvisibility=hidden',
353 '-fstack-protector',
354 '-fstack-protector-strong',
355 '--param=ssp-buffer-size=4',
356]
357
358# --as-needed and --no-undefined are provided by meson by default,
359# run mesonconf to see what is enabled
360possible_link_flags = [
361 '-Wl,-z,relro',
362 '-Wl,-z,now',
363]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500365# the oss-fuzz fuzzers are not built with -fPIE, so don't
366# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500367if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900368 possible_cc_flags += '-fPIE'
369 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500370endif
371
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
388add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900389add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900390
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800391if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392 #include <time.h>
393 #include <inttypes.h>
394 typedef uint64_t usec_t;
395 usec_t now(clockid_t clock);
396 int main(void) {
397 struct timespec now;
398 return 0;
399 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800400''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400401 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endif
403
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200404cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426
427foreach decl : ['char16_t',
428 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000430 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100431 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400433
434 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200435 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
436
437 if decl == 'struct statx'
438 if have
439 want_linux_stat_h = false
440 else
441 have = cc.sizeof(decl,
442 prefix : decl_headers + '#include <linux/stat.h>',
443 args : '-D_GNU_SOURCE') > 0
444 want_linux_stat_h = have
445 endif
446 endif
447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200448 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700452
Yu Watanabe8a716f22018-11-17 23:42:27 +0900453foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
454 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
455 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
456 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
457 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
458 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
459 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
460 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
462 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
463 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400464 # if_tunnel.h is buggy and cannot be included on its own
Yu Watanabe8a716f22018-11-17 23:42:27 +0900465 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
466 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
467 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
468 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
469 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
470 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
471 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
472 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
473 ['NDA_IFINDEX', 'linux/neighbour.h'],
474 ['IFA_FLAGS', 'linux/if_addr.h'],
475 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
476 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
477 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
478 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
479 ['FOU_CMD_GET', 'linux/fou.h'],
480 ['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
481 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
482 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
483 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
484 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
485 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 prefix = decl.length() > 2 ? decl[2] : ''
488 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200489 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490endforeach
491
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200493 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494endforeach
495
496foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100498 ['gettid', '''#include <sys/types.h>
499 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100500 ['pivot_root', '''#include <stdlib.h>
501 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 #include <sys/stat.h>
504 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100506 ['renameat2', '''#include <stdio.h>
507 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508 ['kcmp', '''#include <linux/kcmp.h>'''],
509 ['keyctl', '''#include <sys/types.h>
510 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200513 ['bpf', '''#include <sys/syscall.h>
514 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100515 ['statx', '''#include <sys/types.h>
516 #include <sys/stat.h>
517 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100518 ['explicit_bzero' , '''#include <string.h>'''],
519 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521
Lennart Poettering85db59b2017-12-25 12:01:14 +0100522 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200523 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524endforeach
525
Lennart Poettering85db59b2017-12-25 12:01:14 +0100526if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200527 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200528 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400529else
530 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200531 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200532 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400533endif
534
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535#####################################################################
536
537sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400539m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400541git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100542env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100543perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400545meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400546mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400547test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
548splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400549
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
551# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500552progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['kmod', '/usr/bin/kmod' ],
555 ['kexec', '/usr/sbin/kexec' ],
556 ['sulogin', '/usr/sbin/sulogin' ],
557 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
558 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
559 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
560 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
561 ]
562foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400563 path = get_option(prog[0] + '-path')
564 if path != ''
565 message('Using @1@ for @0@'.format(prog[0], path))
566 else
567 exe = find_program(prog[0],
568 '/usr/sbin/' + prog[0],
569 '/sbin/' + prog[0],
570 required: false)
571 path = exe.found() ? exe.path() : prog[1]
572 endif
573 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
574 conf.set_quoted(name, path)
575 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576endforeach
577
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500578conf.set_quoted('TELINIT', get_option('telinit-path'))
579
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400580if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100581 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400582endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583
584############################################################
585
586gperf = find_program('gperf')
587
588gperf_test_format = '''
589#include <string.h>
590const char * in_word_set(const char *, @0@);
591@1@
592'''
593gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
594gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
595gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
596if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400597 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
600 if cc.compiles(gperf_test)
601 gperf_len_type = 'unsigned'
602 else
603 error('unable to determine gperf len type')
604 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605endif
606message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607conf.set('GPERF_LEN_TYPE', gperf_len_type,
608 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610############################################################
611
612if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100615foreach header : ['crypt.h',
616 'linux/btrfs.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900617 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618 'linux/memfd.h',
619 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200620 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621 'valgrind/memcheck.h',
622 'valgrind/valgrind.h',
623 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200625 conf.set10('HAVE_' + header.underscorify().to_upper(),
626 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endforeach
628
629############################################################
630
631conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400632conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
633gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635default_hierarchy = get_option('default-hierarchy')
636conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
637 description : 'default cgroup hierarchy as string')
638if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
645
646time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900647if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900649 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651conf.set('TIME_EPOCH', time_epoch)
652
653system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900654if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655 system_uid_max = run_command(
656 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800657 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
658 '/etc/login.defs').stdout().strip()
659 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900660 system_uid_max = 999
661 else
662 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800663 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665conf.set('SYSTEM_UID_MAX', system_uid_max)
666substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900669if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400670 system_gid_max = run_command(
671 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800672 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
673 '/etc/login.defs').stdout().strip()
674 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900675 system_gid_max = 999
676 else
677 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800678 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680conf.set('SYSTEM_GID_MAX', system_gid_max)
681substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682
Yu Watanabeac093402018-05-10 16:04:16 +0900683dynamic_uid_min = get_option('dynamic-uid-min')
684dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100685conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
686conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
687substs.set('dynamicuidmin', dynamic_uid_min)
688substs.set('dynamicuidmax', dynamic_uid_max)
689
Yu Watanabeac093402018-05-10 16:04:16 +0900690container_uid_base_min = get_option('container-uid-base-min')
691container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100692conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
693conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
694substs.set('containeruidbasemin', container_uid_base_min)
695substs.set('containeruidbasemax', container_uid_base_max)
696
Lennart Poetteringafde4572017-12-05 11:00:24 +0100697nobody_user = get_option('nobody-user')
698nobody_group = get_option('nobody-group')
699
Chen Qi2484bff2018-07-23 14:53:09 +0800700if not meson.is_cross_build()
701 getent_result = run_command('getent', 'passwd', '65534')
702 if getent_result.returncode() == 0
703 name = getent_result.stdout().split(':')[0]
704 if name != nobody_user
705 warning('\n' +
706 '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) +
707 'Your build will result in an user table setup that is incompatible with the local system.')
708 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100709 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800710 id_result = run_command('id', '-u', nobody_user)
711 if id_result.returncode() == 0
712 id = id_result.stdout().to_int()
713 if id != 65534
714 warning('\n' +
715 '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) +
716 'Your build will result in an user table setup that is incompatible with the local system.')
717 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100718 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100719
Chen Qi2484bff2018-07-23 14:53:09 +0800720 getent_result = run_command('getent', 'group', '65534')
721 if getent_result.returncode() == 0
722 name = getent_result.stdout().split(':')[0]
723 if name != nobody_group
724 warning('\n' +
725 '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) +
726 'Your build will result in an group table setup that is incompatible with the local system.')
727 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100728 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800729 id_result = run_command('id', '-g', nobody_group)
730 if id_result.returncode() == 0
731 id = id_result.stdout().to_int()
732 if id != 65534
733 warning('\n' +
734 '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) +
735 'Your build will result in an group table setup that is incompatible with the local system.')
736 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100737 endif
738endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900739if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900740 warning('\n' +
741 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
742 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900743endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744
745conf.set_quoted('NOBODY_USER_NAME', nobody_user)
746conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900747substs.set('NOBODY_USER_NAME', nobody_user)
748substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100749
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750tty_gid = get_option('tty-gid')
751conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Ikey Doherty84786b82017-12-03 12:28:23 +0000754# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900755users_gid = get_option('users-gid')
756substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000757
Yu Watanabe348b4432018-05-07 18:17:35 +0900758conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
759conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
Michael Bieblace5e312018-07-13 23:36:13 +0200761dev_kvm_mode = get_option('dev-kvm-mode')
762substs.set('DEV_KVM_MODE', dev_kvm_mode)
763conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700764substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400766kill_user_processes = get_option('default-kill-user-processes')
767conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100768conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400769substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400771dns_servers = get_option('dns-servers')
772conf.set_quoted('DNS_SERVERS', dns_servers)
773substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400775ntp_servers = get_option('ntp-servers')
776conf.set_quoted('NTP_SERVERS', ntp_servers)
777substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
779conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
780
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400781substs.set('SUSHELL', get_option('debug-shell'))
782substs.set('DEBUGTTY', get_option('debug-tty'))
783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200784enable_debug_hashmap = false
785enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900786enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900787enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200788foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900789 if name == 'hashmap'
790 enable_debug_hashmap = true
791 elif name == 'mmap-cache'
792 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900793 elif name == 'siphash'
794 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900795 elif name == 'udev'
796 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900797 else
798 message('unknown debug option "@0@", ignoring'.format(name))
799 endif
800endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
802conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900803conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900804conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400805
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200806conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200807conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200808
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809#####################################################################
810
811threads = dependency('threads')
812librt = cc.find_library('rt')
813libm = cc.find_library('m')
814libdl = cc.find_library('dl')
815libcrypt = cc.find_library('crypt')
816
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400817libcap = dependency('libcap', required : false)
818if not libcap.found()
819 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
820 libcap = cc.find_library('cap')
821endif
822
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100824 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825
826want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500827if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400829 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
838want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500839if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libselinux = dependency('libselinux',
841 version : '>= 2.1.9',
842 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500851if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libapparmor = dependency('libapparmor',
853 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861smack_run_label = get_option('smack-run-label')
862if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864endif
865
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866want_polkit = get_option('polkit')
867install_polkit = false
868install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400871
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libpolkit = dependency('polkit-gobject-1',
873 required : false)
874 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
875 message('Old polkit detected, will install pkla files')
876 install_polkit_pkla = true
877 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887 libacl = []
888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500912if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libkmod = dependency('libkmod',
914 version : '>= 15',
915 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500924if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libpam = cc.find_library('pam', required : want_pam == 'true')
926 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libpam = []
931 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libmicrohttpd = dependency('libmicrohttpd',
938 version : '>= 0.9.33',
939 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libmicrohttpd.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 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500948if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libcryptsetup = dependency('libcryptsetup',
950 version : '>= 1.6.0',
951 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100953 have_sector = cc.has_member(
954 'struct crypt_params_plain',
955 'sector_size',
956 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100959 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100963conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcurl = dependency('libcurl',
968 version : '>= 7.32.0',
969 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400978want_libidn2 = get_option('libidn2')
979if want_libidn == 'true' and want_libidn2 == 'true'
980 error('libidn and libidn2 cannot be requested simultaneously')
981endif
982
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500983if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libidn = dependency('libidn',
985 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400989 libidn = []
990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400993 # libidn is used for both libidn and libidn2 objects
994 libidn = dependency('libidn2',
995 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libidn.found()
997else
998 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libiptc = dependency('libiptc',
1005 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libqrencode = dependency('libqrencode',
1016 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001025if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001026 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1027 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
1031endif
1032if not have
1033 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034 libgcrypt = []
1035 libgpg_error = []
1036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libgnutls = dependency('gnutls',
1042 version : '>= 3.1.4',
1043 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001051want_openssl = get_option('openssl')
1052if want_openssl != 'false' and not fuzzer_build
1053 libopenssl = dependency('openssl',
1054 version : '>= 1.1.0',
1055 required : want_openssl == 'true')
1056 have = libopenssl.found()
1057else
1058 have = false
1059 libopenssl = []
1060endif
1061conf.set10('HAVE_OPENSSL', have)
1062
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libdw = dependency('libdw',
1066 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libz = dependency('zlib',
1077 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libbzip2 = cc.find_library('bz2',
1088 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
1096want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libxz = dependency('liblzma',
1099 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
1107want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001110 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001119want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001120if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121 libxkbcommon = dependency('xkbcommon',
1122 version : '>= 0.3.0',
1123 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127 libxkbcommon = []
1128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001130
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001131want_pcre2 = get_option('pcre2')
1132if want_pcre2 != 'false'
1133 libpcre2 = dependency('libpcre2-8',
1134 required : want_pcre2 == 'true')
1135 have = libpcre2.found()
1136else
1137 have = false
1138 libpcre2 = []
1139endif
1140conf.set10('HAVE_PCRE2', have)
1141
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001142want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001143if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libglib = dependency('glib-2.0',
1145 version : '>= 2.22.0',
1146 required : want_glib == 'true')
1147 libgobject = dependency('gobject-2.0',
1148 version : '>= 2.22.0',
1149 required : want_glib == 'true')
1150 libgio = dependency('gio-2.0',
1151 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001152 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libglib = []
1156 libgobject = []
1157 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160
1161want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001162if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libdbus = dependency('dbus-1',
1164 version : '>= 1.3.2',
1165 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172
Yu Watanabe42303dc2017-06-18 05:22:32 +09001173default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001174if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001175 default_dnssec = 'no'
1176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001178 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1179 default_dnssec = 'no'
1180endif
1181conf.set('DEFAULT_DNSSEC_MODE',
1182 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1183substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1184
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001185dns_over_tls = get_option('dns-over-tls')
1186if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001187 if dns_over_tls == 'openssl'
1188 have_gnutls = false
1189 else
1190 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1191 if dns_over_tls == 'gnutls' and not have_gnutls
1192 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1193 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001194 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001195 if dns_over_tls == 'gnutls' or have_gnutls
1196 have_openssl = false
1197 else
1198 have_openssl = conf.get('HAVE_OPENSSL') == 1
1199 if dns_over_tls != 'auto' and not have_openssl
1200 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1201 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1202 endif
1203 endif
1204 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001205else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001206 have = false
1207 have_gnutls = false
1208 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001209endif
1210conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001211conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1212conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001213
Iwan Timmerc9299be2018-06-13 20:26:24 +02001214default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001215if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001216 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001217endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001218if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1219 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 +02001220 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001221endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001222conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1223 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1224substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001225
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001227if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228 have = (conf.get('HAVE_LIBCURL') == 1 and
1229 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230 conf.get('HAVE_XZ') == 1 and
1231 conf.get('HAVE_GCRYPT') == 1)
1232 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001233 error('importd support was requested, but dependencies are not available')
1234 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235else
1236 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239
1240want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001241if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1243 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1245 # it's possible to build one without the other. Complain only if
1246 # support was explictly requested. The auxiliary files like sysusers
1247 # config should be installed when any of the programs are built.
1248 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1249 error('remote support was requested, but dependencies are not available')
1250 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251 have = have_deps[0] or have_deps[1]
1252else
1253 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001257foreach term : ['utmp',
1258 'hibernate',
1259 'environment-d',
1260 'binfmt',
1261 'coredump',
1262 'resolve',
1263 'logind',
1264 'hostnamed',
1265 'localed',
1266 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001267 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001268 'networkd',
1269 'timedated',
1270 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001271 'firstboot',
1272 'randomseed',
1273 'backlight',
1274 'vconsole',
1275 'quotacheck',
1276 'sysusers',
1277 'tmpfiles',
1278 'hwdb',
1279 'rfkill',
1280 'ldconfig',
1281 'efi',
1282 'tpm',
1283 'ima',
1284 'smack',
1285 'gshadow',
1286 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001287 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001288 'nss-systemd']
1289 have = get_option(term)
1290 name = 'ENABLE_' + term.underscorify().to_upper()
1291 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292endforeach
1293
Yu Watanabe08540a92018-07-18 09:25:57 +09001294foreach tuple : [['nss-mymachines', 'machined'],
1295 ['nss-resolve', 'resolve']]
1296 want = get_option(tuple[0])
1297 if want != 'false'
1298 have = get_option(tuple[1])
1299 if want == 'true' and not have
1300 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1301 endif
1302 else
1303 have = false
1304 endif
1305 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1306 conf.set10(name, have)
1307endforeach
1308
1309enable_nss = false
1310foreach term : ['ENABLE_NSS_MYHOSTNAME',
1311 'ENABLE_NSS_MYMACHINES',
1312 'ENABLE_NSS_RESOLVE',
1313 'ENABLE_NSS_SYSTEMD']
1314 if conf.get(term) == 1
1315 enable_nss = true
1316 endif
1317endforeach
1318conf.set10('ENABLE_NSS', enable_nss)
1319
Yu Watanabe348b4432018-05-07 18:17:35 +09001320conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001321
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001322tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001323fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001324
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001325conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001326
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327#####################################################################
1328
1329if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001331
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001332 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001334 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 elif efi_arch == 'x86_64'
1336 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001337 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 elif efi_arch == 'arm'
1339 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001340 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 elif efi_arch == 'aarch64'
1342 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001343 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 else
1345 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001349 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001351
Yu Watanabeac093402018-05-10 16:04:16 +09001352 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001353else
1354 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001356conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358#####################################################################
1359
1360config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001361 output : 'config.h',
1362 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
Yu Watanabe348b4432018-05-07 18:17:35 +09001364meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366includes = include_directories('src/basic',
1367 'src/shared',
1368 'src/systemd',
1369 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001370 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001371 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372 'src/resolve',
1373 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001374 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375 'src/login',
1376 'src/udev',
1377 'src/libudev',
1378 'src/core',
1379 'src/libsystemd/sd-bus',
1380 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001381 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382 'src/libsystemd/sd-hwdb',
1383 'src/libsystemd/sd-id128',
1384 'src/libsystemd/sd-netlink',
1385 'src/libsystemd/sd-network',
1386 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001387 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388
1389add_project_arguments('-include', 'config.h', language : 'c')
1390
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391subdir('po')
1392subdir('catalog')
1393subdir('src/systemd')
1394subdir('src/basic')
1395subdir('src/libsystemd')
1396subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
1400libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 'journal-core',
1402 libjournal_core_sources,
1403 journald_gperf_c,
1404 include_directories : includes,
1405 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001407libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001410 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001411 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 include_directories : includes,
1413 link_args : ['-shared',
1414 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001415 link_with : [libbasic,
1416 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001417 link_whole : [libsystemd_static,
1418 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 dependencies : [threads,
1420 librt,
1421 libxz,
1422 liblz4],
1423 link_depends : libsystemd_sym,
1424 install : true,
1425 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426
Davide Cavalca70848ec2018-04-09 02:43:35 -07001427static_libsystemd = get_option('static-libsystemd')
1428static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1429
1430install_libsystemd_static = static_library(
1431 'systemd',
1432 libsystemd_sources,
1433 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001434 basic_sources,
1435 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001436 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001437 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001438 build_by_default : static_libsystemd != 'false',
1439 install : static_libsystemd != 'false',
1440 install_dir : rootlibdir,
1441 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1442 dependencies : [threads,
1443 librt,
1444 libxz,
1445 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001446 libcap,
1447 libblkid,
1448 libmount,
1449 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001450 libgcrypt],
1451 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453############################################################
1454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001455# binaries that have --help and are intended for use by humans,
1456# usually, but not always, installed in /bin.
1457public_programs = []
1458
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459subdir('src/libudev')
1460subdir('src/shared')
1461subdir('src/core')
1462subdir('src/udev')
1463subdir('src/network')
1464
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001465subdir('src/analyze')
1466subdir('src/journal-remote')
1467subdir('src/coredump')
1468subdir('src/hostname')
1469subdir('src/import')
1470subdir('src/kernel-install')
1471subdir('src/locale')
1472subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001473subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001474subdir('src/nspawn')
1475subdir('src/resolve')
1476subdir('src/timedate')
1477subdir('src/timesync')
1478subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001479subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001480
1481subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001482subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001483subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001484subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001485
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001486############################################################
1487
1488# only static linking apart from libdl, to make sure that the
1489# module is linked to all libraries that it uses.
1490test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 'test-dlopen',
1492 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001493 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 include_directories : includes,
1495 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001496 dependencies : [libdl],
1497 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498
Yu Watanabe08540a92018-07-18 09:25:57 +09001499foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001500 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001501 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1502 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001503
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001504 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 if condition
1506 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001507
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001509 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001510
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 nss = shared_library(
1512 'nss_' + module,
1513 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001514 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001515 version : '2',
1516 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001517 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1518 link_args : ['-Wl,-z,nodelete',
1519 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 '-Wl,--version-script=' + version_script_arg,
1521 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001522 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 libbasic],
1524 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001525 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 link_depends : sym,
1527 install : true,
1528 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001529
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 # We cannot use shared_module because it does not support version suffix.
1531 # Unfortunately shared_library insists on creating the symlink…
1532 meson.add_install_script('sh', '-c',
1533 'rm $DESTDIR@0@/libnss_@1@.so'
1534 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001535
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001536 if want_tests != 'false'
1537 test('dlopen-nss_' + module,
1538 test_dlopen,
1539 # path to dlopen must include a slash
1540 args : nss.full_path())
1541 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001543endforeach
1544
1545############################################################
1546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547executable('systemd',
1548 systemd_sources,
1549 include_directories : includes,
1550 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001551 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552 dependencies : [threads,
1553 librt,
1554 libseccomp,
1555 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001556 libmount,
1557 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001558 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559 install : true,
1560 install_dir : rootlibexecdir)
1561
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001562meson.add_install_script(meson_make_symlink,
1563 join_paths(rootlibexecdir, 'systemd'),
1564 join_paths(rootsbindir, 'init'))
1565
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566exe = executable('systemd-analyze',
1567 systemd_analyze_sources,
1568 include_directories : includes,
1569 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001570 libshared],
1571 dependencies : [threads,
1572 librt,
1573 libseccomp,
1574 libselinux,
1575 libmount,
1576 libblkid],
1577 install_rpath : rootlibexecdir,
1578 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001579public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580
1581executable('systemd-journald',
1582 systemd_journald_sources,
1583 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001584 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001585 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586 dependencies : [threads,
1587 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001588 liblz4,
1589 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591 install : true,
1592 install_dir : rootlibexecdir)
1593
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594exe = executable('systemd-cat',
1595 systemd_cat_sources,
1596 include_directories : includes,
1597 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001598 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599 dependencies : [threads],
1600 install_rpath : rootlibexecdir,
1601 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001602public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604exe = executable('journalctl',
1605 journalctl_sources,
1606 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001607 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001608 dependencies : [threads,
1609 libqrencode,
1610 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001611 liblz4,
1612 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613 install_rpath : rootlibexecdir,
1614 install : true,
1615 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617
1618executable('systemd-getty-generator',
1619 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001621 link_with : [libshared],
1622 install_rpath : rootlibexecdir,
1623 install : true,
1624 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625
1626executable('systemd-debug-generator',
1627 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001629 link_with : [libshared],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
1634executable('systemd-fstab-generator',
1635 'src/fstab-generator/fstab-generator.c',
1636 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001638 link_with : [libshared],
1639 install_rpath : rootlibexecdir,
1640 install : true,
1641 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001643if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 executable('30-systemd-environment-d-generator',
1645 'src/environment-d-generator/environment-d-generator.c',
1646 include_directories : includes,
1647 link_with : [libshared],
1648 install_rpath : rootlibexecdir,
1649 install : true,
1650 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001651
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 meson.add_install_script(meson_make_symlink,
1653 join_paths(sysconfdir, 'environment'),
1654 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655endif
1656
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001657if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658 executable('systemd-hibernate-resume-generator',
1659 'src/hibernate-resume/hibernate-resume-generator.c',
1660 include_directories : includes,
1661 link_with : [libshared],
1662 install_rpath : rootlibexecdir,
1663 install : true,
1664 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-hibernate-resume',
1667 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668 include_directories : includes,
1669 link_with : [libshared],
1670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673endif
1674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-gpt-auto-generator',
1677 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001678 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001680 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 dependencies : libblkid,
1682 install_rpath : rootlibexecdir,
1683 install : true,
1684 install_dir : systemgeneratordir)
1685
1686 exe = executable('systemd-dissect',
1687 'src/dissect/dissect.c',
1688 include_directories : includes,
1689 link_with : [libshared],
1690 install_rpath : rootlibexecdir,
1691 install : true,
1692 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001693 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694endif
1695
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001696if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001697 executable('systemd-resolved',
1698 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001699 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001700 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001701 libbasic_gcrypt,
1702 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001703 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 install : true,
1706 install_dir : rootlibexecdir)
1707
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001708 exe = executable('resolvectl',
1709 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001711 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001712 libbasic_gcrypt,
1713 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001715 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 libm,
1717 libidn],
1718 install_rpath : rootlibexecdir,
1719 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001720 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001721
1722 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001723 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001724 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001725
1726 meson.add_install_script(meson_make_symlink,
1727 join_paths(bindir, 'resolvectl'),
1728 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729endif
1730
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001731if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 executable('systemd-logind',
1733 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001736 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001737 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001739 install_rpath : rootlibexecdir,
1740 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001742
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 exe = executable('loginctl',
1744 loginctl_sources,
1745 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 dependencies : [threads,
1748 liblz4,
1749 libxz],
1750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001753 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001754
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 exe = executable('systemd-inhibit',
1756 'src/login/inhibit.c',
1757 include_directories : includes,
1758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001762 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001763
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001764 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001765 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 pam_systemd = shared_library(
1767 'pam_systemd',
1768 pam_systemd_c,
1769 name_prefix : '',
1770 include_directories : includes,
1771 link_args : ['-shared',
1772 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001773 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 libshared_static],
1775 dependencies : [threads,
1776 libpam,
1777 libpam_misc],
1778 link_depends : pam_systemd_sym,
1779 install : true,
1780 install_dir : pamlibdir)
1781
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001782 if want_tests != 'false'
1783 test('dlopen-pam_systemd',
1784 test_dlopen,
1785 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001786 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001787 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001790 executable('systemd-user-runtime-dir',
1791 user_runtime_dir_sources,
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : rootlibexecdir)
1797endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001798
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001799if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 executable('systemd-user-sessions',
1801 'src/user-sessions/user-sessions.c',
1802 include_directories : includes,
1803 link_with : [libshared],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 exe = executable('bootctl',
1811 'src/boot/bootctl.c',
1812 include_directories : includes,
1813 link_with : [libshared],
1814 dependencies : [libblkid],
1815 install_rpath : rootlibexecdir,
1816 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001817 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001818
1819 executable('systemd-bless-boot',
1820 'src/boot/bless-boot.c',
1821 include_directories : includes,
1822 link_with : [libshared],
1823 dependencies : [libblkid],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001827
1828 executable('systemd-bless-boot-generator',
1829 'src/boot/bless-boot-generator.c',
1830 include_directories : includes,
1831 link_with : [libshared],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001835endif
1836
Lennart Poetteringf876f532018-06-25 16:07:33 +02001837executable('systemd-boot-check-no-failures',
1838 'src/boot/boot-check-no-failures.c',
1839 include_directories : includes,
1840 link_with : [libshared],
1841 dependencies : [libblkid],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootlibexecdir)
1845
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001846exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1847 include_directories : includes,
1848 link_with : [libshared],
1849 dependencies : [threads],
1850 install_rpath : rootlibexecdir,
1851 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001852public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853
Felipe Satelerf3794362018-05-22 15:08:57 -04001854
1855if get_option('link-systemctl-shared')
1856 systemctl_link_with = [libshared]
1857else
1858 systemctl_link_with = [libsystemd_static,
1859 libshared_static,
1860 libjournal_client,
1861 libbasic_gcrypt]
1862endif
1863
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001864exe = executable('systemctl', 'src/systemctl/systemctl.c',
1865 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001866 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001867 dependencies : [threads,
1868 libcap,
1869 libselinux,
1870 libxz,
1871 liblz4],
1872 install_rpath : rootlibexecdir,
1873 install : true,
1874 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001875public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876
Lennart Poettering61d05782018-04-16 21:41:40 +02001877if conf.get('ENABLE_PORTABLED') == 1
1878 executable('systemd-portabled',
1879 systemd_portabled_sources,
1880 include_directories : includes,
1881 link_with : [libshared],
1882 dependencies : [threads],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
1886
1887 exe = executable('portablectl', 'src/portable/portablectl.c',
1888 include_directories : includes,
1889 link_with : [libshared],
1890 dependencies : [threads],
1891 install_rpath : rootlibexecdir,
1892 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001893 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001894 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001895endif
1896
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001897foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1898 meson.add_install_script(meson_make_symlink,
1899 join_paths(rootbindir, 'systemctl'),
1900 join_paths(rootsbindir, alias))
1901endforeach
1902
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001903if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001904 executable('systemd-backlight',
1905 'src/backlight/backlight.c',
1906 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001907 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911endif
1912
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001913if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 executable('systemd-rfkill',
1915 'src/rfkill/rfkill.c',
1916 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001917 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 install_rpath : rootlibexecdir,
1919 install : true,
1920 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001921endif
1922
1923executable('systemd-system-update-generator',
1924 'src/system-update-generator/system-update-generator.c',
1925 include_directories : includes,
1926 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001927 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928 install : true,
1929 install_dir : systemgeneratordir)
1930
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001931if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 executable('systemd-cryptsetup',
1933 'src/cryptsetup/cryptsetup.c',
1934 include_directories : includes,
1935 link_with : [libshared],
1936 dependencies : [libcryptsetup],
1937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001941 executable('systemd-cryptsetup-generator',
1942 'src/cryptsetup/cryptsetup-generator.c',
1943 include_directories : includes,
1944 link_with : [libshared],
1945 dependencies : [libcryptsetup],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 executable('systemd-veritysetup',
1951 'src/veritysetup/veritysetup.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [libcryptsetup],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001959 executable('systemd-veritysetup-generator',
1960 'src/veritysetup/veritysetup-generator.c',
1961 include_directories : includes,
1962 link_with : [libshared],
1963 dependencies : [libcryptsetup],
1964 install_rpath : rootlibexecdir,
1965 install : true,
1966 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001967endif
1968
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001969if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-sysv-generator',
1971 'src/sysv-generator/sysv-generator.c',
1972 include_directories : includes,
1973 link_with : [libshared],
1974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001977
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-rc-local-generator',
1979 'src/rc-local-generator/rc-local-generator.c',
1980 include_directories : includes,
1981 link_with : [libshared],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001987if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 executable('systemd-hostnamed',
1989 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001990 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001991 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001992 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 install : true,
1994 install_dir : rootlibexecdir)
1995
1996 exe = executable('hostnamectl',
1997 'src/hostname/hostnamectl.c',
1998 include_directories : includes,
1999 link_with : [libshared],
2000 install_rpath : rootlibexecdir,
2001 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002002 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003endif
2004
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002005if conf.get('ENABLE_LOCALED') == 1
2006 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 # logind will load libxkbcommon.so dynamically on its own
2008 deps = [libdl]
2009 else
2010 deps = []
2011 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002012
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002013 executable('systemd-localed',
2014 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002015 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002016 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002018 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 install : true,
2020 install_dir : rootlibexecdir)
2021
2022 exe = executable('localectl',
2023 localectl_sources,
2024 include_directories : includes,
2025 link_with : [libshared],
2026 install_rpath : rootlibexecdir,
2027 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002028 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029endif
2030
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002031if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 executable('systemd-timedated',
2033 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002034 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002035 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 install_rpath : rootlibexecdir,
2037 install : true,
2038 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002039endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040
Yu Watanabe6129ec82018-05-03 18:07:43 +09002041if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 exe = executable('timedatectl',
2043 'src/timedate/timedatectl.c',
2044 include_directories : includes,
2045 install_rpath : rootlibexecdir,
2046 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002047 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002049 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050endif
2051
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002052if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-timesyncd',
2054 systemd_timesyncd_sources,
2055 include_directories : includes,
2056 link_with : [libshared],
2057 dependencies : [threads,
2058 libm],
2059 install_rpath : rootlibexecdir,
2060 install : true,
2061 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002062
2063 executable('systemd-time-wait-sync',
2064 'src/time-wait-sync/time-wait-sync.c',
2065 include_directories : includes,
2066 link_with : [libshared],
2067 install_rpath : rootlibexecdir,
2068 install : true,
2069 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070endif
2071
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002072if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 executable('systemd-machined',
2074 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 link_with : [libmachine_core,
2077 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002078 install_rpath : rootlibexecdir,
2079 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 install_dir : rootlibexecdir)
2081
2082 exe = executable('machinectl',
2083 'src/machine/machinectl.c',
2084 include_directories : includes,
2085 link_with : [libshared],
2086 dependencies : [threads,
2087 libxz,
2088 liblz4],
2089 install_rpath : rootlibexecdir,
2090 install : true,
2091 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002092 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093endif
2094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 executable('systemd-importd',
2097 systemd_importd_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 dependencies : [threads],
2101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 systemd_pull = executable('systemd-pull',
2106 systemd_pull_sources,
2107 include_directories : includes,
2108 link_with : [libshared],
2109 dependencies : [libcurl,
2110 libz,
2111 libbzip2,
2112 libxz,
2113 libgcrypt],
2114 install_rpath : rootlibexecdir,
2115 install : true,
2116 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 systemd_import = executable('systemd-import',
2119 systemd_import_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
2122 dependencies : [libcurl,
2123 libz,
2124 libbzip2,
2125 libxz],
2126 install_rpath : rootlibexecdir,
2127 install : true,
2128 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002130 systemd_import_fs = executable('systemd-import-fs',
2131 systemd_import_fs_sources,
2132 include_directories : includes,
2133 link_with : [libshared],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
2137
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 systemd_export = executable('systemd-export',
2139 systemd_export_sources,
2140 include_directories : includes,
2141 link_with : [libshared],
2142 dependencies : [libcurl,
2143 libz,
2144 libbzip2,
2145 libxz],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002149
2150 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151endif
2152
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002153if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002154 exe = executable('systemd-journal-upload',
2155 systemd_journal_upload_sources,
2156 include_directories : includes,
2157 link_with : [libshared],
2158 dependencies : [threads,
2159 libcurl,
2160 libgnutls,
2161 libxz,
2162 liblz4],
2163 install_rpath : rootlibexecdir,
2164 install : true,
2165 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002166 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167endif
2168
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002169if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 s_j_remote = executable('systemd-journal-remote',
2171 systemd_journal_remote_sources,
2172 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002173 link_with : [libshared,
2174 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175 dependencies : [threads,
2176 libmicrohttpd,
2177 libgnutls,
2178 libxz,
2179 liblz4],
2180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 s_j_gatewayd = executable('systemd-journal-gatewayd',
2185 systemd_journal_gatewayd_sources,
2186 include_directories : includes,
2187 link_with : [libshared],
2188 dependencies : [threads,
2189 libmicrohttpd,
2190 libgnutls,
2191 libxz,
2192 liblz4],
2193 install_rpath : rootlibexecdir,
2194 install : true,
2195 install_dir : rootlibexecdir)
2196 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197endif
2198
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002199if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002200 executable('systemd-coredump',
2201 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002203 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002205 libacl,
2206 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207 libxz,
2208 liblz4],
2209 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 install : true,
2211 install_dir : rootlibexecdir)
2212
2213 exe = executable('coredumpctl',
2214 coredumpctl_sources,
2215 include_directories : includes,
2216 link_with : [libshared],
2217 dependencies : [threads,
2218 libxz,
2219 liblz4],
2220 install_rpath : rootlibexecdir,
2221 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002222 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002223endif
2224
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002225if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002226 exe = executable('systemd-binfmt',
2227 'src/binfmt/binfmt.c',
2228 include_directories : includes,
2229 link_with : [libshared],
2230 install_rpath : rootlibexecdir,
2231 install : true,
2232 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002233 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002234
2235 meson.add_install_script('sh', '-c',
2236 mkdir_p.format(binfmtdir))
2237 meson.add_install_script('sh', '-c',
2238 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2239endif
2240
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002241if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002242 executable('systemd-vconsole-setup',
2243 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244 include_directories : includes,
2245 link_with : [libshared],
2246 install_rpath : rootlibexecdir,
2247 install : true,
2248 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249endif
2250
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002251if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002252 executable('systemd-random-seed',
2253 'src/random-seed/random-seed.c',
2254 include_directories : includes,
2255 link_with : [libshared],
2256 install_rpath : rootlibexecdir,
2257 install : true,
2258 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259endif
2260
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002261if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002262 executable('systemd-firstboot',
2263 'src/firstboot/firstboot.c',
2264 include_directories : includes,
2265 link_with : [libshared],
2266 dependencies : [libcrypt],
2267 install_rpath : rootlibexecdir,
2268 install : true,
2269 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270endif
2271
2272executable('systemd-remount-fs',
2273 'src/remount-fs/remount-fs.c',
2274 'src/core/mount-setup.c',
2275 'src/core/mount-setup.h',
2276 include_directories : includes,
2277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002278 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279 install : true,
2280 install_dir : rootlibexecdir)
2281
2282executable('systemd-machine-id-setup',
2283 'src/machine-id-setup/machine-id-setup-main.c',
2284 'src/core/machine-id-setup.c',
2285 'src/core/machine-id-setup.h',
2286 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002287 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002288 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289 install : true,
2290 install_dir : rootbindir)
2291
2292executable('systemd-fsck',
2293 'src/fsck/fsck.c',
2294 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002295 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002296 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297 install : true,
2298 install_dir : rootlibexecdir)
2299
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002300executable('systemd-growfs',
2301 'src/partition/growfs.c',
2302 include_directories : includes,
2303 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002304 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002305 install_rpath : rootlibexecdir,
2306 install : true,
2307 install_dir : rootlibexecdir)
2308
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002309executable('systemd-makefs',
2310 'src/partition/makefs.c',
2311 include_directories : includes,
2312 link_with : [libshared],
2313 install_rpath : rootlibexecdir,
2314 install : true,
2315 install_dir : rootlibexecdir)
2316
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002317executable('systemd-sleep',
2318 'src/sleep/sleep.c',
2319 include_directories : includes,
2320 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002321 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002322 install : true,
2323 install_dir : rootlibexecdir)
2324
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002325exe = executable('systemd-sysctl',
2326 'src/sysctl/sysctl.c',
2327 include_directories : includes,
2328 link_with : [libshared],
2329 install_rpath : rootlibexecdir,
2330 install : true,
2331 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002332public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333
2334executable('systemd-ac-power',
2335 'src/ac-power/ac-power.c',
2336 include_directories : includes,
2337 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002338 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002339 install : true,
2340 install_dir : rootlibexecdir)
2341
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342exe = executable('systemd-detect-virt',
2343 'src/detect-virt/detect-virt.c',
2344 include_directories : includes,
2345 link_with : [libshared],
2346 install_rpath : rootlibexecdir,
2347 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002348public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002349
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002350exe = executable('systemd-delta',
2351 'src/delta/delta.c',
2352 include_directories : includes,
2353 link_with : [libshared],
2354 install_rpath : rootlibexecdir,
2355 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002356public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358exe = executable('systemd-escape',
2359 'src/escape/escape.c',
2360 include_directories : includes,
2361 link_with : [libshared],
2362 install_rpath : rootlibexecdir,
2363 install : true,
2364 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002365public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367exe = executable('systemd-notify',
2368 'src/notify/notify.c',
2369 include_directories : includes,
2370 link_with : [libshared],
2371 install_rpath : rootlibexecdir,
2372 install : true,
2373 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002374public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375
2376executable('systemd-volatile-root',
2377 'src/volatile-root/volatile-root.c',
2378 include_directories : includes,
2379 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002380 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381 install : true,
2382 install_dir : rootlibexecdir)
2383
2384executable('systemd-cgroups-agent',
2385 'src/cgroups-agent/cgroups-agent.c',
2386 include_directories : includes,
2387 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002388 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389 install : true,
2390 install_dir : rootlibexecdir)
2391
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002392exe = executable('systemd-id128',
2393 'src/id128/id128.c',
2394 include_directories : includes,
2395 link_with : [libshared],
2396 install_rpath : rootlibexecdir,
2397 install : true)
2398public_programs += exe
2399
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002400exe = executable('systemd-path',
2401 'src/path/path.c',
2402 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002404 install_rpath : rootlibexecdir,
2405 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002406public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002407
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002408exe = executable('systemd-ask-password',
2409 'src/ask-password/ask-password.c',
2410 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002412 install_rpath : rootlibexecdir,
2413 install : true,
2414 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002415public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416
2417executable('systemd-reply-password',
2418 'src/reply-password/reply-password.c',
2419 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002420 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002421 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422 install : true,
2423 install_dir : rootlibexecdir)
2424
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002425exe = executable('systemd-tty-ask-password-agent',
2426 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2427 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002428 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002429 install_rpath : rootlibexecdir,
2430 install : true,
2431 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002432public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('systemd-cgls',
2435 'src/cgls/cgls.c',
2436 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002437 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002438 install_rpath : rootlibexecdir,
2439 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442exe = executable('systemd-cgtop',
2443 'src/cgtop/cgtop.c',
2444 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002445 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446 install_rpath : rootlibexecdir,
2447 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002448public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
2450executable('systemd-initctl',
2451 'src/initctl/initctl.c',
2452 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002453 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458exe = executable('systemd-mount',
2459 'src/mount/mount-tool.c',
2460 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002461 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462 install_rpath : rootlibexecdir,
2463 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002464public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002465
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002466meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002467 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('systemd-run',
2470 'src/run/run.c',
2471 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002473 install_rpath : rootlibexecdir,
2474 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477exe = executable('systemd-stdio-bridge',
2478 'src/stdio-bridge/stdio-bridge.c',
2479 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002480 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481 install_rpath : rootlibexecdir,
2482 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002483public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485exe = executable('busctl',
2486 'src/busctl/busctl.c',
2487 'src/busctl/busctl-introspect.c',
2488 'src/busctl/busctl-introspect.h',
2489 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002490 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491 install_rpath : rootlibexecdir,
2492 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002493public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002495if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002496 exe = executable('systemd-sysusers',
2497 'src/sysusers/sysusers.c',
2498 include_directories : includes,
2499 link_with : [libshared],
2500 install_rpath : rootlibexecdir,
2501 install : true,
2502 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002503 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504endif
2505
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002506if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002507 exe = executable('systemd-tmpfiles',
2508 'src/tmpfiles/tmpfiles.c',
2509 include_directories : includes,
2510 link_with : [libshared],
2511 dependencies : [libacl],
2512 install_rpath : rootlibexecdir,
2513 install : true,
2514 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002515 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002516
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002517 if want_tests != 'false'
2518 test('test-systemd-tmpfiles',
2519 test_systemd_tmpfiles_py,
2520 # https://github.com/mesonbuild/meson/issues/2681
2521 args : exe.full_path())
2522 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002523endif
2524
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002525if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002526 exe = executable('systemd-hwdb',
2527 'src/hwdb/hwdb.c',
2528 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2529 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002530 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002531 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002532 install : true,
2533 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002534 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002535endif
2536
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002537if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002538 executable('systemd-quotacheck',
2539 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002540 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002541 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 install_rpath : rootlibexecdir,
2543 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002544 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545endif
2546
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002547exe = executable('systemd-socket-proxyd',
2548 'src/socket-proxy/socket-proxyd.c',
2549 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002550 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002551 dependencies : [threads],
2552 install_rpath : rootlibexecdir,
2553 install : true,
2554 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002555public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002557exe = executable('systemd-udevd',
2558 systemd_udevd_sources,
2559 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002560 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002561 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002563 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002564 dependencies : [threads,
2565 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002567 libacl,
2568 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002569 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002570 install : true,
2571 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002572public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002574exe = executable('udevadm',
2575 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002576 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 include_directories : includes,
2578 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002579 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002580 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002581 dependencies : [threads,
2582 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002583 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002584 libacl,
2585 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002586 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002587 install : true,
2588 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002589public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590
2591executable('systemd-shutdown',
2592 systemd_shutdown_sources,
2593 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002594 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002595 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002596 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597 install : true,
2598 install_dir : rootlibexecdir)
2599
2600executable('systemd-update-done',
2601 'src/update-done/update-done.c',
2602 include_directories : includes,
2603 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002604 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002605 install : true,
2606 install_dir : rootlibexecdir)
2607
2608executable('systemd-update-utmp',
2609 'src/update-utmp/update-utmp.c',
2610 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002611 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002612 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002613 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614 install : true,
2615 install_dir : rootlibexecdir)
2616
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002617if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002618 executable('systemd-modules-load',
2619 'src/modules-load/modules-load.c',
2620 include_directories : includes,
2621 link_with : [libshared],
2622 dependencies : [libkmod],
2623 install_rpath : rootlibexecdir,
2624 install : true,
2625 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002626
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002627 meson.add_install_script('sh', '-c',
2628 mkdir_p.format(modulesloaddir))
2629 meson.add_install_script('sh', '-c',
2630 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631endif
2632
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633exe = executable('systemd-nspawn',
2634 systemd_nspawn_sources,
2635 'src/core/mount-setup.c', # FIXME: use a variable?
2636 'src/core/mount-setup.h',
2637 'src/core/loopback-setup.c',
2638 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002639 include_directories : includes,
2640 link_with : [libnspawn_core,
2641 libshared],
2642 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 install_rpath : rootlibexecdir,
2644 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002645public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002647if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002648 executable('systemd-networkd',
2649 systemd_networkd_sources,
2650 include_directories : includes,
2651 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002652 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002653 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002654 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002655 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002656 install_rpath : rootlibexecdir,
2657 install : true,
2658 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002659
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002660 executable('systemd-networkd-wait-online',
2661 systemd_networkd_wait_online_sources,
2662 include_directories : includes,
2663 link_with : [libnetworkd_core,
2664 libshared],
2665 install_rpath : rootlibexecdir,
2666 install : true,
2667 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002668
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002669 exe = executable('networkctl',
2670 networkctl_sources,
2671 include_directories : includes,
2672 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002673 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002674 install_rpath : rootlibexecdir,
2675 install : true,
2676 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002677 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002678endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002679
2680executable('systemd-sulogin-shell',
2681 ['src/sulogin-shell/sulogin-shell.c'],
2682 include_directories : includes,
2683 link_with : [libshared],
2684 install_rpath : rootlibexecdir,
2685 install : true,
2686 install_dir : rootlibexecdir)
2687
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002688############################################################
2689
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002690custom_target(
2691 'systemd-runtest.env',
2692 output : 'systemd-runtest.env',
2693 command : ['sh', '-c', '{ ' +
2694 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002695 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002696 '} >@OUTPUT@'],
2697 build_by_default : true)
2698
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002699foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002700 sources = tuple[0]
2701 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2702 dependencies = tuple[2]
2703 condition = tuple.length() >= 4 ? tuple[3] : ''
2704 type = tuple.length() >= 5 ? tuple[4] : ''
2705 defs = tuple.length() >= 6 ? tuple[5] : []
2706 incs = tuple.length() >= 7 ? tuple[6] : includes
2707 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002708
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 name = sources[0].split('/')[-1].split('.')[0]
2710 if type.startswith('timeout=')
2711 timeout = type.split('=')[1].to_int()
2712 type = ''
2713 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002714
2715 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 exe = executable(
2717 name,
2718 sources,
2719 include_directories : incs,
2720 link_with : link_with,
2721 dependencies : dependencies,
2722 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002723 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002724 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002725 install : install_tests,
2726 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002727
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 if type == 'manual'
2729 message('@0@ is a manual test'.format(name))
2730 elif type == 'unsafe' and want_tests != 'unsafe'
2731 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002732 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002733 test(name, exe,
2734 env : test_env,
2735 timeout : timeout)
2736 endif
2737 else
2738 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2739 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002740endforeach
2741
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002742exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 'test-libsystemd-sym',
2744 test_libsystemd_sym_c,
2745 include_directories : includes,
2746 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002747 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 install : install_tests,
2749 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002750if want_tests != 'false'
2751 test('test-libsystemd-sym', exe)
2752endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002753
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002754exe = executable(
2755 'test-libsystemd-static-sym',
2756 test_libsystemd_sym_c,
2757 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002758 link_with : [install_libsystemd_static],
2759 dependencies : [threads], # threads is already included in dependencies on the library,
2760 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002761 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002762 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002763 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002764if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002765 test('test-libsystemd-static-sym', exe)
2766endif
2767
2768exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002769 'test-libudev-sym',
2770 test_libudev_sym_c,
2771 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002772 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002773 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002774 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002775 install : install_tests,
2776 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002777if want_tests != 'false'
2778 test('test-libudev-sym', exe)
2779endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002780
2781exe = executable(
2782 'test-libudev-static-sym',
2783 test_libudev_sym_c,
2784 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002785 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002786 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002787 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002788 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002789 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002790if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002791 test('test-libudev-static-sym', exe)
2792endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002793
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002794############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002795
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002796fuzzer_exes = []
2797
Michael Olbrich59967402018-11-11 11:27:35 +01002798if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002799foreach tuple : fuzzers
2800 sources = tuple[0]
2801 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2802 dependencies = tuple[2]
2803 defs = tuple.length() >= 4 ? tuple[3] : []
2804 incs = tuple.length() >= 5 ? tuple[4] : includes
2805
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002806 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002807 dependencies += fuzzing_engine
2808 else
2809 sources += 'src/fuzz/fuzz-main.c'
2810 endif
2811
2812 name = sources[0].split('/')[-1].split('.')[0]
2813
2814 fuzzer_exes += executable(
2815 name,
2816 sources,
2817 include_directories : [incs, include_directories('src/fuzz')],
2818 link_with : link_with,
2819 dependencies : dependencies,
2820 c_args : defs,
2821 install : false)
2822endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002823endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002824
2825run_target('fuzzers',
2826 depends : fuzzer_exes,
2827 command : ['true'])
2828
2829############################################################
2830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831make_directive_index_py = find_program('tools/make-directive-index.py')
2832make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002833xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002834hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002835
2836subdir('units')
2837subdir('sysctl.d')
2838subdir('sysusers.d')
2839subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002840subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002841subdir('hwdb')
2842subdir('network')
2843subdir('man')
2844subdir('shell-completion/bash')
2845subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002846subdir('docs/sysvinit')
2847subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002848
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002849install_subdir('factory/etc',
2850 install_dir : factorydir)
2851
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002852install_data('xorg/50-systemd-user.sh',
2853 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002854install_data('modprobe.d/systemd.conf',
2855 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002856install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002857 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002858 'NEWS',
2859 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302860 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002861 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002862 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302863 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002864 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002865 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002866 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002867 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2868 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002869
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002870meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2871meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2872
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002873############################################################
2874
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002875meson_check_help = find_program('tools/meson-check-help.sh')
2876
2877foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002878 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002879 if want_tests != 'false'
2880 test('check-help-' + name,
2881 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002882 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002883 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002884endforeach
2885
2886############################################################
2887
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002888# Enable tests for all supported sanitizers
2889foreach tuple : sanitizers
2890 sanitizer = tuple[0]
2891 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002892
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002893 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002894 prev = ''
2895 foreach p : fuzz_regression_tests
2896 b = p.split('/')[-2]
2897 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002898
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002899 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002900
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002901 if name != prev
2902 if want_tests == 'false'
2903 message('Not compiling @0@ because tests is set to false'.format(name))
2904 elif slow_tests
2905 exe = custom_target(
2906 name,
2907 output : name,
2908 depends : build,
2909 command : [env, 'ln', '-fs',
2910 join_paths(build.full_path(), b),
2911 '@OUTPUT@'],
2912 build_by_default : true)
2913 else
2914 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2915 endif
2916 endif
2917 prev = name
2918
2919 if want_tests != 'false' and slow_tests
2920 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2921 env,
2922 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002923 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002924 endif
2925 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002926 endif
2927endforeach
2928
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002929
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002930############################################################
2931
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002932if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002933 all_files = run_command(
2934 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002935 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002936 'ls-files',
2937 ':/*.[ch]'])
2938 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002939
userwithuide85a6902017-08-09 13:41:44 +00002940 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002941 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002942 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002943 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002944 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002945 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002946 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002947endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002948
2949if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002950 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002951 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002952 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002953 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002954endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002955
2956if git.found()
2957 git_head = run_command(
2958 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002959 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002960 'rev-parse', 'HEAD']).stdout().strip()
2961 git_head_short = run_command(
2962 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002963 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002964 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2965
2966 run_target(
2967 'git-snapshot',
2968 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002969 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002970 git_head_short),
2971 '--prefix', 'systemd-@0@/'.format(git_head),
2972 'HEAD'])
2973endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002974
2975############################################################
2976
Lennart Poettering51b13862017-12-20 12:51:14 +01002977meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2978run_target(
2979 'check-api-docs',
2980 depends : [man, libsystemd, libudev],
2981 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2982
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002983run_target(
2984 'make-index-md',
2985 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2986
Lennart Poettering51b13862017-12-20 12:51:14 +01002987############################################################
2988
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002989status = [
2990 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2991
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002992 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002993 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002994 'prefix directory: @0@'.format(prefixdir),
2995 'rootprefix directory: @0@'.format(rootprefixdir),
2996 'sysconf directory: @0@'.format(sysconfdir),
2997 'include directory: @0@'.format(includedir),
2998 'lib directory: @0@'.format(libdir),
2999 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003000 'SysV init scripts: @0@'.format(sysvinit_path),
3001 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003002 'PAM modules directory: @0@'.format(pamlibdir),
3003 'PAM configuration directory: @0@'.format(pamconfdir),
3004 'RPM macros directory: @0@'.format(rpmmacrosdir),
3005 'modprobe.d directory: @0@'.format(modprobedir),
3006 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3007 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3008 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3009 'bash completions directory: @0@'.format(bashcompletiondir),
3010 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003011 'extra start script: @0@'.format(get_option('rc-local')),
3012 'extra stop script: @0@'.format(get_option('halt-local')),
3013 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3014 get_option('debug-tty')),
3015 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003016 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003017 'maximum system UID: @0@'.format(system_uid_max),
3018 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003019 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3020 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3021 'minimum container UID base: @0@'.format(container_uid_base_min),
3022 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003023 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003024 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003025 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003026 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003027 'nobody user name: @0@'.format(nobody_user),
3028 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003029 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003030 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003031
3032 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003033 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003034 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3035 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3036
3037alt_dns_servers = '\n '.join(dns_servers.split(' '))
3038alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3039status += [
3040 'default DNS servers: @0@'.format(alt_dns_servers),
3041 'default NTP servers: @0@'.format(alt_ntp_servers)]
3042
3043alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3044 '@@0@'.format(time_epoch)).stdout().strip()
3045status += [
3046 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3047
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003048status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003049 'static libsystemd: @0@'.format(static_libsystemd),
3050 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003051
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003052# TODO:
3053# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3054# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3055# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3056
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003057if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003058 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003059
3060 if have_gnu_efi
3061 status += [
3062 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3063 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003064 'EFI lib directory: @0@'.format(efi_libdir),
3065 'EFI lds directory: @0@'.format(efi_ldsdir),
3066 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067 endif
3068endif
3069
3070found = []
3071missing = []
3072
3073foreach tuple : [
3074 ['libcryptsetup'],
3075 ['PAM'],
3076 ['AUDIT'],
3077 ['IMA'],
3078 ['AppArmor'],
3079 ['SELinux'],
3080 ['SECCOMP'],
3081 ['SMACK'],
3082 ['zlib'],
3083 ['xz'],
3084 ['lz4'],
3085 ['bzip2'],
3086 ['ACL'],
3087 ['gcrypt'],
3088 ['qrencode'],
3089 ['microhttpd'],
3090 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003091 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003093 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003094 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 ['libidn'],
3096 ['libiptc'],
3097 ['elfutils'],
3098 ['binfmt'],
3099 ['vconsole'],
3100 ['quotacheck'],
3101 ['tmpfiles'],
3102 ['environment.d'],
3103 ['sysusers'],
3104 ['firstboot'],
3105 ['randomseed'],
3106 ['backlight'],
3107 ['rfkill'],
3108 ['logind'],
3109 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003110 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003111 ['importd'],
3112 ['hostnamed'],
3113 ['timedated'],
3114 ['timesyncd'],
3115 ['localed'],
3116 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003117 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003118 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3119 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120 ['coredump'],
3121 ['polkit'],
3122 ['legacy pkla', install_polkit_pkla],
3123 ['efi'],
3124 ['gnu-efi', have_gnu_efi],
3125 ['kmod'],
3126 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003127 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003128 ['blkid'],
3129 ['dbus'],
3130 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003131 ['nss-myhostname'],
3132 ['nss-mymachines'],
3133 ['nss-resolve'],
3134 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003135 ['hwdb'],
3136 ['tpm'],
3137 ['man pages', want_man],
3138 ['html pages', want_html],
3139 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140 ['SysV compat'],
3141 ['utmp'],
3142 ['ldconfig'],
3143 ['hibernate'],
3144 ['adm group', get_option('adm-group')],
3145 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003146 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003147 ['debug hashmap'],
3148 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003149 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003150 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003151 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003152 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003153 ['link-udev-shared', get_option('link-udev-shared')],
3154 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003155]
3156
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003157 if tuple.length() >= 2
3158 cond = tuple[1]
3159 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003160 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3161 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003162 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003163 endif
3164 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003165 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003166 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003167 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003168 endif
3169endforeach
3170
3171status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003172 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003173 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003174 '',
3175 'disabled features: @0@'.format(', '.join(missing)),
3176 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003178
3179if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003180 warning('\n' +
3181 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3182 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3183 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003184endif