blob: ec78e4c926b9d5c10c7c0b3aee397635d7daf547 [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'))
Lennart Poettering09dad042018-11-15 09:50:42 +010078conf.set('HIGH_RLIMIT_NOFILE', 512*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 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100400''', args: '-Werror=shadow', 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',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000429 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530430 'struct fib_rule_port_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>'],
Susant Sahani22668642018-11-26 17:20:09 +0530468 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900469 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
470 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
471 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
472 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
473 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
474 ['NDA_IFINDEX', 'linux/neighbour.h'],
475 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahani926062f2018-11-27 10:58:54 +0530476 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900477 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
478 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
479 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
480 ['FOU_CMD_GET', 'linux/fou.h'],
481 ['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
482 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
483 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
484 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
485 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
486 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400488 prefix = decl.length() > 2 ? decl[2] : ''
489 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200490 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491endforeach
492
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200494 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400495endforeach
496
497foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100499 ['gettid', '''#include <sys/types.h>
500 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100501 ['pivot_root', '''#include <stdlib.h>
502 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400504 #include <sys/stat.h>
505 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100507 ['renameat2', '''#include <stdio.h>
508 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509 ['kcmp', '''#include <linux/kcmp.h>'''],
510 ['keyctl', '''#include <sys/types.h>
511 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100512 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200514 ['bpf', '''#include <sys/syscall.h>
515 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100516 ['statx', '''#include <sys/types.h>
517 #include <sys/stat.h>
518 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100519 ['explicit_bzero' , '''#include <string.h>'''],
520 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400521]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400522
Lennart Poettering85db59b2017-12-25 12:01:14 +0100523 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200524 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400525endforeach
526
Lennart Poettering85db59b2017-12-25 12:01:14 +0100527if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200528 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200529 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400530else
531 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200532 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200533 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400534endif
535
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536#####################################################################
537
538sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400540m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400542git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100543env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100544perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400545
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400546meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400547mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400548test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
549splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400550
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400551# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
552# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500553progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555 ['kmod', '/usr/bin/kmod' ],
556 ['kexec', '/usr/sbin/kexec' ],
557 ['sulogin', '/usr/sbin/sulogin' ],
558 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
559 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
560 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
561 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
562 ]
563foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400564 path = get_option(prog[0] + '-path')
565 if path != ''
566 message('Using @1@ for @0@'.format(prog[0], path))
567 else
568 exe = find_program(prog[0],
569 '/usr/sbin/' + prog[0],
570 '/sbin/' + prog[0],
571 required: false)
572 path = exe.found() ? exe.path() : prog[1]
573 endif
574 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
575 conf.set_quoted(name, path)
576 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577endforeach
578
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500579conf.set_quoted('TELINIT', get_option('telinit-path'))
580
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400581if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100582 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400583endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584
585############################################################
586
587gperf = find_program('gperf')
588
589gperf_test_format = '''
590#include <string.h>
591const char * in_word_set(const char *, @0@);
592@1@
593'''
594gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
595gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
596gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
597if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400598 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
601 if cc.compiles(gperf_test)
602 gperf_len_type = 'unsigned'
603 else
604 error('unable to determine gperf len type')
605 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606endif
607message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400608conf.set('GPERF_LEN_TYPE', gperf_len_type,
609 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610
611############################################################
612
613if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400614 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100616foreach header : ['crypt.h',
617 'linux/btrfs.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900618 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619 'linux/memfd.h',
620 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200621 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622 'valgrind/memcheck.h',
623 'valgrind/valgrind.h',
624 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400625
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200626 conf.set10('HAVE_' + header.underscorify().to_upper(),
627 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endforeach
629
630############################################################
631
632conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400633conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
634gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636default_hierarchy = get_option('default-hierarchy')
637conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
638 description : 'default cgroup hierarchy as string')
639if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400644 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645endif
646
647time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900648if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900650 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652conf.set('TIME_EPOCH', time_epoch)
653
654system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900655if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400656 system_uid_max = run_command(
657 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800658 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
659 '/etc/login.defs').stdout().strip()
660 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900661 system_uid_max = 999
662 else
663 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800664 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666conf.set('SYSTEM_UID_MAX', system_uid_max)
667substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400669system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900670if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400671 system_gid_max = run_command(
672 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800673 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
674 '/etc/login.defs').stdout().strip()
675 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900676 system_gid_max = 999
677 else
678 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800679 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681conf.set('SYSTEM_GID_MAX', system_gid_max)
682substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683
Yu Watanabeac093402018-05-10 16:04:16 +0900684dynamic_uid_min = get_option('dynamic-uid-min')
685dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100686conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
687conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
688substs.set('dynamicuidmin', dynamic_uid_min)
689substs.set('dynamicuidmax', dynamic_uid_max)
690
Yu Watanabeac093402018-05-10 16:04:16 +0900691container_uid_base_min = get_option('container-uid-base-min')
692container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100693conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
694conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
695substs.set('containeruidbasemin', container_uid_base_min)
696substs.set('containeruidbasemax', container_uid_base_max)
697
Lennart Poetteringafde4572017-12-05 11:00:24 +0100698nobody_user = get_option('nobody-user')
699nobody_group = get_option('nobody-group')
700
Chen Qi2484bff2018-07-23 14:53:09 +0800701if not meson.is_cross_build()
702 getent_result = run_command('getent', 'passwd', '65534')
703 if getent_result.returncode() == 0
704 name = getent_result.stdout().split(':')[0]
705 if name != nobody_user
706 warning('\n' +
707 '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) +
708 'Your build will result in an user table setup that is incompatible with the local system.')
709 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100710 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800711 id_result = run_command('id', '-u', nobody_user)
712 if id_result.returncode() == 0
713 id = id_result.stdout().to_int()
714 if id != 65534
715 warning('\n' +
716 '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) +
717 'Your build will result in an user table setup that is incompatible with the local system.')
718 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100719 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100720
Chen Qi2484bff2018-07-23 14:53:09 +0800721 getent_result = run_command('getent', 'group', '65534')
722 if getent_result.returncode() == 0
723 name = getent_result.stdout().split(':')[0]
724 if name != nobody_group
725 warning('\n' +
726 '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) +
727 'Your build will result in an group table setup that is incompatible with the local system.')
728 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100729 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800730 id_result = run_command('id', '-g', nobody_group)
731 if id_result.returncode() == 0
732 id = id_result.stdout().to_int()
733 if id != 65534
734 warning('\n' +
735 '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) +
736 'Your build will result in an group table setup that is incompatible with the local system.')
737 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100738 endif
739endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900740if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900741 warning('\n' +
742 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
743 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900744endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100745
746conf.set_quoted('NOBODY_USER_NAME', nobody_user)
747conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900748substs.set('NOBODY_USER_NAME', nobody_user)
749substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100750
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751tty_gid = get_option('tty-gid')
752conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400753substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754
Ikey Doherty84786b82017-12-03 12:28:23 +0000755# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900756users_gid = get_option('users-gid')
757substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000758
Yu Watanabe348b4432018-05-07 18:17:35 +0900759conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
760conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400761
Michael Bieblace5e312018-07-13 23:36:13 +0200762dev_kvm_mode = get_option('dev-kvm-mode')
763substs.set('DEV_KVM_MODE', dev_kvm_mode)
764conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700765substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400766
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400767kill_user_processes = get_option('default-kill-user-processes')
768conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100769conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400770substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400772dns_servers = get_option('dns-servers')
773conf.set_quoted('DNS_SERVERS', dns_servers)
774substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400776ntp_servers = get_option('ntp-servers')
777conf.set_quoted('NTP_SERVERS', ntp_servers)
778substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779
780conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
781
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400782substs.set('SUSHELL', get_option('debug-shell'))
783substs.set('DEBUGTTY', get_option('debug-tty'))
784
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200785enable_debug_hashmap = false
786enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900787enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900788enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200789foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900790 if name == 'hashmap'
791 enable_debug_hashmap = true
792 elif name == 'mmap-cache'
793 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900794 elif name == 'siphash'
795 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900796 elif name == 'udev'
797 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900798 else
799 message('unknown debug option "@0@", ignoring'.format(name))
800 endif
801endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
803conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900804conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900805conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400806
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200807conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200808conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200809
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810#####################################################################
811
812threads = dependency('threads')
813librt = cc.find_library('rt')
814libm = cc.find_library('m')
815libdl = cc.find_library('dl')
816libcrypt = cc.find_library('crypt')
817
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400818libcap = dependency('libcap', required : false)
819if not libcap.found()
820 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
821 libcap = cc.find_library('cap')
822endif
823
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100825 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
827want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500828if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400830 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200837conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838
839want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500840if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libselinux = dependency('libselinux',
842 version : '>= 2.1.9',
843 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200846 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400848endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850
851want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500852if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400853 libapparmor = dependency('libapparmor',
854 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862smack_run_label = get_option('smack-run-label')
863if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865endif
866
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400867want_polkit = get_option('polkit')
868install_polkit = false
869install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400872
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 libpolkit = dependency('polkit-gobject-1',
874 required : false)
875 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
876 message('Old polkit detected, will install pkla files')
877 install_polkit_pkla = true
878 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400879endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400881
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400882want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500883if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400884 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400886else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400888 libacl = []
889endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901
902want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
912want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500913if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libkmod = dependency('libkmod',
915 version : '>= 15',
916 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
924want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500925if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libpam = cc.find_library('pam', required : want_pam == 'true')
927 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libpam = []
932 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935
936want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libmicrohttpd = dependency('libmicrohttpd',
939 version : '>= 0.9.33',
940 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947
948want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libcryptsetup = dependency('libcryptsetup',
951 version : '>= 1.6.0',
952 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100954 have_sector = cc.has_member(
955 'struct crypt_params_plain',
956 'sector_size',
957 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100960 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100964conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965
966want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500967if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libcurl = dependency('libcurl',
969 version : '>= 7.32.0',
970 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400979want_libidn2 = get_option('libidn2')
980if want_libidn == 'true' and want_libidn2 == 'true'
981 error('libidn and libidn2 cannot be requested simultaneously')
982endif
983
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500984if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libidn = dependency('libidn',
986 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400988else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400990 libidn = []
991endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500993if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400994 # libidn is used for both libidn and libidn2 objects
995 libidn = dependency('libidn2',
996 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libidn.found()
998else
999 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002
1003want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libiptc = dependency('libiptc',
1006 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libqrencode = dependency('libqrencode',
1017 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001018 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001025want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001026if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001027 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1028 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
1032endif
1033if not have
1034 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001035 libgcrypt = []
1036 libgpg_error = []
1037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001039
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libgnutls = dependency('gnutls',
1043 version : '>= 3.1.4',
1044 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001052want_openssl = get_option('openssl')
1053if want_openssl != 'false' and not fuzzer_build
1054 libopenssl = dependency('openssl',
1055 version : '>= 1.1.0',
1056 required : want_openssl == 'true')
1057 have = libopenssl.found()
1058else
1059 have = false
1060 libopenssl = []
1061endif
1062conf.set10('HAVE_OPENSSL', have)
1063
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001065if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 libdw = dependency('libdw',
1067 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074
1075want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001076if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libz = dependency('zlib',
1078 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085
1086want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001087if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libbzip2 = cc.find_library('bz2',
1089 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096
1097want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001098if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libxz = dependency('liblzma',
1100 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107
1108want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001109if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001111 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001120want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001121if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001122 libxkbcommon = dependency('xkbcommon',
1123 version : '>= 0.3.0',
1124 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001126else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001128 libxkbcommon = []
1129endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001131
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001132want_pcre2 = get_option('pcre2')
1133if want_pcre2 != 'false'
1134 libpcre2 = dependency('libpcre2-8',
1135 required : want_pcre2 == 'true')
1136 have = libpcre2.found()
1137else
1138 have = false
1139 libpcre2 = []
1140endif
1141conf.set10('HAVE_PCRE2', have)
1142
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001144if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libglib = dependency('glib-2.0',
1146 version : '>= 2.22.0',
1147 required : want_glib == 'true')
1148 libgobject = dependency('gobject-2.0',
1149 version : '>= 2.22.0',
1150 required : want_glib == 'true')
1151 libgio = dependency('gio-2.0',
1152 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001153 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001154else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libglib = []
1157 libgobject = []
1158 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001159endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161
1162want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001163if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libdbus = dependency('dbus-1',
1165 version : '>= 1.3.2',
1166 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001173
Yu Watanabe42303dc2017-06-18 05:22:32 +09001174default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001175if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001176 default_dnssec = 'no'
1177endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001179 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1180 default_dnssec = 'no'
1181endif
1182conf.set('DEFAULT_DNSSEC_MODE',
1183 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1184substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1185
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001186dns_over_tls = get_option('dns-over-tls')
1187if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001188 if dns_over_tls == 'openssl'
1189 have_gnutls = false
1190 else
1191 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1192 if dns_over_tls == 'gnutls' and not have_gnutls
1193 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1194 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001195 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001196 if dns_over_tls == 'gnutls' or have_gnutls
1197 have_openssl = false
1198 else
1199 have_openssl = conf.get('HAVE_OPENSSL') == 1
1200 if dns_over_tls != 'auto' and not have_openssl
1201 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1202 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1203 endif
1204 endif
1205 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001206else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001207 have = false
1208 have_gnutls = false
1209 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001210endif
1211conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001212conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1213conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001214
Iwan Timmerc9299be2018-06-13 20:26:24 +02001215default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001216if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001217 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001218endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001219if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1220 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 +02001221 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001222endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001223conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1224 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1225substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001226
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001227want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001228if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229 have = (conf.get('HAVE_LIBCURL') == 1 and
1230 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231 conf.get('HAVE_XZ') == 1 and
1232 conf.get('HAVE_GCRYPT') == 1)
1233 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 error('importd support was requested, but dependencies are not available')
1235 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236else
1237 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001238endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240
1241want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001242if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1244 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001245 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1246 # it's possible to build one without the other. Complain only if
1247 # support was explictly requested. The auxiliary files like sysusers
1248 # config should be installed when any of the programs are built.
1249 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1250 error('remote support was requested, but dependencies are not available')
1251 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001252 have = have_deps[0] or have_deps[1]
1253else
1254 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001256conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001257
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001258foreach term : ['utmp',
1259 'hibernate',
1260 'environment-d',
1261 'binfmt',
1262 'coredump',
1263 'resolve',
1264 'logind',
1265 'hostnamed',
1266 'localed',
1267 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001268 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001269 'networkd',
1270 'timedated',
1271 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001272 'firstboot',
1273 'randomseed',
1274 'backlight',
1275 'vconsole',
1276 'quotacheck',
1277 'sysusers',
1278 'tmpfiles',
1279 'hwdb',
1280 'rfkill',
1281 'ldconfig',
1282 'efi',
1283 'tpm',
1284 'ima',
1285 'smack',
1286 'gshadow',
1287 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001288 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001289 'nss-systemd']
1290 have = get_option(term)
1291 name = 'ENABLE_' + term.underscorify().to_upper()
1292 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293endforeach
1294
Yu Watanabe08540a92018-07-18 09:25:57 +09001295foreach tuple : [['nss-mymachines', 'machined'],
1296 ['nss-resolve', 'resolve']]
1297 want = get_option(tuple[0])
1298 if want != 'false'
1299 have = get_option(tuple[1])
1300 if want == 'true' and not have
1301 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1302 endif
1303 else
1304 have = false
1305 endif
1306 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1307 conf.set10(name, have)
1308endforeach
1309
1310enable_nss = false
1311foreach term : ['ENABLE_NSS_MYHOSTNAME',
1312 'ENABLE_NSS_MYMACHINES',
1313 'ENABLE_NSS_RESOLVE',
1314 'ENABLE_NSS_SYSTEMD']
1315 if conf.get(term) == 1
1316 enable_nss = true
1317 endif
1318endforeach
1319conf.set10('ENABLE_NSS', enable_nss)
1320
Yu Watanabe348b4432018-05-07 18:17:35 +09001321conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001322
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001323tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001324fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001325
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001326conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001327
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001328#####################################################################
1329
1330if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001331 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001332
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001333 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001334 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001335 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 elif efi_arch == 'x86_64'
1337 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001338 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 elif efi_arch == 'arm'
1340 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001341 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 elif efi_arch == 'aarch64'
1343 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001344 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 else
1346 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001347 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001348 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001350 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001351 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001352
Yu Watanabeac093402018-05-10 16:04:16 +09001353 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001354else
1355 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001356endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001357conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358
1359#####################################################################
1360
1361config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001362 output : 'config.h',
1363 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364
Yu Watanabe348b4432018-05-07 18:17:35 +09001365meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1366
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367includes = include_directories('src/basic',
1368 'src/shared',
1369 'src/systemd',
1370 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001371 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001372 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373 'src/resolve',
1374 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001375 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376 'src/login',
1377 'src/udev',
1378 'src/libudev',
1379 'src/core',
1380 'src/libsystemd/sd-bus',
1381 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001382 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383 'src/libsystemd/sd-hwdb',
1384 'src/libsystemd/sd-id128',
1385 'src/libsystemd/sd-netlink',
1386 'src/libsystemd/sd-network',
1387 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001388 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389
1390add_project_arguments('-include', 'config.h', language : 'c')
1391
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001392generate_gperfs = find_program('tools/generate-gperfs.py')
1393
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394subdir('po')
1395subdir('catalog')
1396subdir('src/systemd')
1397subdir('src/basic')
1398subdir('src/libsystemd')
1399subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402
1403libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 'journal-core',
1405 libjournal_core_sources,
1406 journald_gperf_c,
1407 include_directories : includes,
1408 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001410libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001413 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001414 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 include_directories : includes,
1416 link_args : ['-shared',
1417 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001418 link_with : [libbasic,
1419 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001420 link_whole : [libsystemd_static,
1421 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 dependencies : [threads,
1423 librt,
1424 libxz,
1425 liblz4],
1426 link_depends : libsystemd_sym,
1427 install : true,
1428 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429
Davide Cavalca70848ec2018-04-09 02:43:35 -07001430static_libsystemd = get_option('static-libsystemd')
1431static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1432
1433install_libsystemd_static = static_library(
1434 'systemd',
1435 libsystemd_sources,
1436 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001437 basic_sources,
1438 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001439 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001440 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001441 build_by_default : static_libsystemd != 'false',
1442 install : static_libsystemd != 'false',
1443 install_dir : rootlibdir,
1444 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1445 dependencies : [threads,
1446 librt,
1447 libxz,
1448 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001449 libcap,
1450 libblkid,
1451 libmount,
1452 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001453 libgcrypt],
1454 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1455
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456############################################################
1457
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001458# binaries that have --help and are intended for use by humans,
1459# usually, but not always, installed in /bin.
1460public_programs = []
1461
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462subdir('src/libudev')
1463subdir('src/shared')
1464subdir('src/core')
1465subdir('src/udev')
1466subdir('src/network')
1467
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001468subdir('src/analyze')
1469subdir('src/journal-remote')
1470subdir('src/coredump')
1471subdir('src/hostname')
1472subdir('src/import')
1473subdir('src/kernel-install')
1474subdir('src/locale')
1475subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001476subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001477subdir('src/nspawn')
1478subdir('src/resolve')
1479subdir('src/timedate')
1480subdir('src/timesync')
1481subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001482subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001483
1484subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001485subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001486subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001487subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001488
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001489############################################################
1490
1491# only static linking apart from libdl, to make sure that the
1492# module is linked to all libraries that it uses.
1493test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 'test-dlopen',
1495 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001496 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 include_directories : includes,
1498 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001499 dependencies : [libdl],
1500 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001501
Yu Watanabe08540a92018-07-18 09:25:57 +09001502foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001503 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001504 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1505 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001506
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001507 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 if condition
1509 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001510
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001512 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001513
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 nss = shared_library(
1515 'nss_' + module,
1516 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001517 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 version : '2',
1519 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001520 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1521 link_args : ['-Wl,-z,nodelete',
1522 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 '-Wl,--version-script=' + version_script_arg,
1524 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001525 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 libbasic],
1527 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001528 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 link_depends : sym,
1530 install : true,
1531 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001532
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 # We cannot use shared_module because it does not support version suffix.
1534 # Unfortunately shared_library insists on creating the symlink…
1535 meson.add_install_script('sh', '-c',
1536 'rm $DESTDIR@0@/libnss_@1@.so'
1537 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001538
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001539 if want_tests != 'false'
1540 test('dlopen-nss_' + module,
1541 test_dlopen,
1542 # path to dlopen must include a slash
1543 args : nss.full_path())
1544 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001545 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001546endforeach
1547
1548############################################################
1549
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550executable('systemd',
1551 systemd_sources,
1552 include_directories : includes,
1553 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001554 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555 dependencies : [threads,
1556 librt,
1557 libseccomp,
1558 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001559 libmount,
1560 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001561 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562 install : true,
1563 install_dir : rootlibexecdir)
1564
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001565meson.add_install_script(meson_make_symlink,
1566 join_paths(rootlibexecdir, 'systemd'),
1567 join_paths(rootsbindir, 'init'))
1568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001569exe = executable('systemd-analyze',
1570 systemd_analyze_sources,
1571 include_directories : includes,
1572 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573 libshared],
1574 dependencies : [threads,
1575 librt,
1576 libseccomp,
1577 libselinux,
1578 libmount,
1579 libblkid],
1580 install_rpath : rootlibexecdir,
1581 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001582public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001583
1584executable('systemd-journald',
1585 systemd_journald_sources,
1586 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001587 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001588 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001589 dependencies : [threads,
1590 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001591 liblz4,
1592 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001593 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594 install : true,
1595 install_dir : rootlibexecdir)
1596
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001597exe = executable('systemd-cat',
1598 systemd_cat_sources,
1599 include_directories : includes,
1600 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001601 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001602 dependencies : [threads],
1603 install_rpath : rootlibexecdir,
1604 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001605public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001606
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001607exe = executable('journalctl',
1608 journalctl_sources,
1609 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001610 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 dependencies : [threads,
1612 libqrencode,
1613 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001614 liblz4,
1615 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616 install_rpath : rootlibexecdir,
1617 install : true,
1618 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001619public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620
1621executable('systemd-getty-generator',
1622 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001624 link_with : [libshared],
1625 install_rpath : rootlibexecdir,
1626 install : true,
1627 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628
1629executable('systemd-debug-generator',
1630 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001632 link_with : [libshared],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001637executable('systemd-run-generator',
1638 'src/run-generator/run-generator.c',
1639 include_directories : includes,
1640 link_with : [libshared],
1641 install_rpath : rootlibexecdir,
1642 install : true,
1643 install_dir : systemgeneratordir)
1644
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645executable('systemd-fstab-generator',
1646 'src/fstab-generator/fstab-generator.c',
1647 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001649 link_with : [libshared],
1650 install_rpath : rootlibexecdir,
1651 install : true,
1652 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001654if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 executable('30-systemd-environment-d-generator',
1656 'src/environment-d-generator/environment-d-generator.c',
1657 include_directories : includes,
1658 link_with : [libshared],
1659 install_rpath : rootlibexecdir,
1660 install : true,
1661 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001662
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 meson.add_install_script(meson_make_symlink,
1664 join_paths(sysconfdir, 'environment'),
1665 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001666endif
1667
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001668if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001669 executable('systemd-hibernate-resume-generator',
1670 'src/hibernate-resume/hibernate-resume-generator.c',
1671 include_directories : includes,
1672 link_with : [libshared],
1673 install_rpath : rootlibexecdir,
1674 install : true,
1675 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 executable('systemd-hibernate-resume',
1678 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001679 include_directories : includes,
1680 link_with : [libshared],
1681 install_rpath : rootlibexecdir,
1682 install : true,
1683 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684endif
1685
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001686if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 executable('systemd-gpt-auto-generator',
1688 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001689 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001691 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 dependencies : libblkid,
1693 install_rpath : rootlibexecdir,
1694 install : true,
1695 install_dir : systemgeneratordir)
1696
1697 exe = executable('systemd-dissect',
1698 'src/dissect/dissect.c',
1699 include_directories : includes,
1700 link_with : [libshared],
1701 install_rpath : rootlibexecdir,
1702 install : true,
1703 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001704 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705endif
1706
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001707if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 executable('systemd-resolved',
1709 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -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],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001714 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001715 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 install : true,
1717 install_dir : rootlibexecdir)
1718
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001719 exe = executable('resolvectl',
1720 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001722 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001723 libbasic_gcrypt,
1724 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001725 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001726 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 libm,
1728 libidn],
1729 install_rpath : rootlibexecdir,
1730 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001731 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001732
1733 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001734 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001735 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001736
1737 meson.add_install_script(meson_make_symlink,
1738 join_paths(bindir, 'resolvectl'),
1739 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001740endif
1741
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001742if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 executable('systemd-logind',
1744 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001745 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001747 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001748 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001750 install_rpath : rootlibexecdir,
1751 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001753
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 exe = executable('loginctl',
1755 loginctl_sources,
1756 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001757 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 dependencies : [threads,
1759 liblz4,
1760 libxz],
1761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001764 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001765
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 exe = executable('systemd-inhibit',
1767 'src/login/inhibit.c',
1768 include_directories : includes,
1769 link_with : [libshared],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001773 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001774
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001775 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001776 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 pam_systemd = shared_library(
1778 'pam_systemd',
1779 pam_systemd_c,
1780 name_prefix : '',
1781 include_directories : includes,
1782 link_args : ['-shared',
1783 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001784 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 libshared_static],
1786 dependencies : [threads,
1787 libpam,
1788 libpam_misc],
1789 link_depends : pam_systemd_sym,
1790 install : true,
1791 install_dir : pamlibdir)
1792
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001793 if want_tests != 'false'
1794 test('dlopen-pam_systemd',
1795 test_dlopen,
1796 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001797 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001798 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001800
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001801 executable('systemd-user-runtime-dir',
1802 user_runtime_dir_sources,
1803 include_directories : includes,
1804 link_with : [libshared],
1805 install_rpath : rootlibexecdir,
1806 install : true,
1807 install_dir : rootlibexecdir)
1808endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001809
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001810if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 executable('systemd-user-sessions',
1812 'src/user-sessions/user-sessions.c',
1813 include_directories : includes,
1814 link_with : [libshared],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818endif
1819
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001820if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 exe = executable('bootctl',
1822 'src/boot/bootctl.c',
1823 include_directories : includes,
1824 link_with : [libshared],
1825 dependencies : [libblkid],
1826 install_rpath : rootlibexecdir,
1827 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001828 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001829
1830 executable('systemd-bless-boot',
1831 'src/boot/bless-boot.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 dependencies : [libblkid],
1835 install_rpath : rootlibexecdir,
1836 install : true,
1837 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001838
1839 executable('systemd-bless-boot-generator',
1840 'src/boot/bless-boot-generator.c',
1841 include_directories : includes,
1842 link_with : [libshared],
1843 install_rpath : rootlibexecdir,
1844 install : true,
1845 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001846endif
1847
Lennart Poetteringf876f532018-06-25 16:07:33 +02001848executable('systemd-boot-check-no-failures',
1849 'src/boot/boot-check-no-failures.c',
1850 include_directories : includes,
1851 link_with : [libshared],
1852 dependencies : [libblkid],
1853 install_rpath : rootlibexecdir,
1854 install : true,
1855 install_dir : rootlibexecdir)
1856
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001857exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1858 include_directories : includes,
1859 link_with : [libshared],
1860 dependencies : [threads],
1861 install_rpath : rootlibexecdir,
1862 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001863public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864
Felipe Satelerf3794362018-05-22 15:08:57 -04001865
1866if get_option('link-systemctl-shared')
1867 systemctl_link_with = [libshared]
1868else
1869 systemctl_link_with = [libsystemd_static,
1870 libshared_static,
1871 libjournal_client,
1872 libbasic_gcrypt]
1873endif
1874
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001875exe = executable('systemctl', 'src/systemctl/systemctl.c',
1876 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001877 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001878 dependencies : [threads,
1879 libcap,
1880 libselinux,
1881 libxz,
1882 liblz4],
1883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001886public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887
Lennart Poettering61d05782018-04-16 21:41:40 +02001888if conf.get('ENABLE_PORTABLED') == 1
1889 executable('systemd-portabled',
1890 systemd_portabled_sources,
1891 include_directories : includes,
1892 link_with : [libshared],
1893 dependencies : [threads],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
1897
1898 exe = executable('portablectl', 'src/portable/portablectl.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 dependencies : [threads],
1902 install_rpath : rootlibexecdir,
1903 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001904 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001905 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001906endif
1907
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001908foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1909 meson.add_install_script(meson_make_symlink,
1910 join_paths(rootbindir, 'systemctl'),
1911 join_paths(rootsbindir, alias))
1912endforeach
1913
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001914if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 executable('systemd-backlight',
1916 'src/backlight/backlight.c',
1917 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001918 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922endif
1923
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001924if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 executable('systemd-rfkill',
1926 'src/rfkill/rfkill.c',
1927 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001928 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001929 install_rpath : rootlibexecdir,
1930 install : true,
1931 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001932endif
1933
1934executable('systemd-system-update-generator',
1935 'src/system-update-generator/system-update-generator.c',
1936 include_directories : includes,
1937 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001938 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939 install : true,
1940 install_dir : systemgeneratordir)
1941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001942if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 executable('systemd-cryptsetup',
1944 'src/cryptsetup/cryptsetup.c',
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [libcryptsetup],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 executable('systemd-cryptsetup-generator',
1953 'src/cryptsetup/cryptsetup-generator.c',
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [libcryptsetup],
1957 install_rpath : rootlibexecdir,
1958 install : true,
1959 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 executable('systemd-veritysetup',
1962 'src/veritysetup/veritysetup.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [libcryptsetup],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001969
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-veritysetup-generator',
1971 'src/veritysetup/veritysetup-generator.c',
1972 include_directories : includes,
1973 link_with : [libshared],
1974 dependencies : [libcryptsetup],
1975 install_rpath : rootlibexecdir,
1976 install : true,
1977 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001978endif
1979
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001980if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 executable('systemd-sysv-generator',
1982 'src/sysv-generator/sysv-generator.c',
1983 include_directories : includes,
1984 link_with : [libshared],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 executable('systemd-rc-local-generator',
1990 'src/rc-local-generator/rc-local-generator.c',
1991 include_directories : includes,
1992 link_with : [libshared],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001998if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 executable('systemd-hostnamed',
2000 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002001 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002002 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002003 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 install : true,
2005 install_dir : rootlibexecdir)
2006
2007 exe = executable('hostnamectl',
2008 'src/hostname/hostnamectl.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 install_rpath : rootlibexecdir,
2012 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002013 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_LOCALED') == 1
2017 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 # logind will load libxkbcommon.so dynamically on its own
2019 deps = [libdl]
2020 else
2021 deps = []
2022 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 executable('systemd-localed',
2025 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002027 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 install : true,
2031 install_dir : rootlibexecdir)
2032
2033 exe = executable('localectl',
2034 localectl_sources,
2035 include_directories : includes,
2036 link_with : [libshared],
2037 install_rpath : rootlibexecdir,
2038 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002039 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040endif
2041
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002042if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 executable('systemd-timedated',
2044 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002045 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002046 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002050endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051
Yu Watanabe6129ec82018-05-03 18:07:43 +09002052if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 exe = executable('timedatectl',
2054 'src/timedate/timedatectl.c',
2055 include_directories : includes,
2056 install_rpath : rootlibexecdir,
2057 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002058 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002060 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-timesyncd',
2065 systemd_timesyncd_sources,
2066 include_directories : includes,
2067 link_with : [libshared],
2068 dependencies : [threads,
2069 libm],
2070 install_rpath : rootlibexecdir,
2071 install : true,
2072 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002073
2074 executable('systemd-time-wait-sync',
2075 'src/time-wait-sync/time-wait-sync.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081endif
2082
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002083if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002084 executable('systemd-machined',
2085 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002086 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 link_with : [libmachine_core,
2088 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002089 install_rpath : rootlibexecdir,
2090 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 install_dir : rootlibexecdir)
2092
2093 exe = executable('machinectl',
2094 'src/machine/machinectl.c',
2095 include_directories : includes,
2096 link_with : [libshared],
2097 dependencies : [threads,
2098 libxz,
2099 liblz4],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002103 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 executable('systemd-importd',
2108 systemd_importd_sources,
2109 include_directories : includes,
2110 link_with : [libshared],
2111 dependencies : [threads],
2112 install_rpath : rootlibexecdir,
2113 install : true,
2114 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002115
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 systemd_pull = executable('systemd-pull',
2117 systemd_pull_sources,
2118 include_directories : includes,
2119 link_with : [libshared],
2120 dependencies : [libcurl,
2121 libz,
2122 libbzip2,
2123 libxz,
2124 libgcrypt],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002129 systemd_import = executable('systemd-import',
2130 systemd_import_sources,
2131 include_directories : includes,
2132 link_with : [libshared],
2133 dependencies : [libcurl,
2134 libz,
2135 libbzip2,
2136 libxz],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002140
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002141 systemd_import_fs = executable('systemd-import-fs',
2142 systemd_import_fs_sources,
2143 include_directories : includes,
2144 link_with : [libshared],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootlibexecdir)
2148
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 systemd_export = executable('systemd-export',
2150 systemd_export_sources,
2151 include_directories : includes,
2152 link_with : [libshared],
2153 dependencies : [libcurl,
2154 libz,
2155 libbzip2,
2156 libxz],
2157 install_rpath : rootlibexecdir,
2158 install : true,
2159 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002160
2161 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162endif
2163
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002164if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002165 exe = executable('systemd-journal-upload',
2166 systemd_journal_upload_sources,
2167 include_directories : includes,
2168 link_with : [libshared],
2169 dependencies : [threads,
2170 libcurl,
2171 libgnutls,
2172 libxz,
2173 liblz4],
2174 install_rpath : rootlibexecdir,
2175 install : true,
2176 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002177 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178endif
2179
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002180if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 s_j_remote = executable('systemd-journal-remote',
2182 systemd_journal_remote_sources,
2183 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002184 link_with : [libshared,
2185 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 dependencies : [threads,
2187 libmicrohttpd,
2188 libgnutls,
2189 libxz,
2190 liblz4],
2191 install_rpath : rootlibexecdir,
2192 install : true,
2193 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002195 s_j_gatewayd = executable('systemd-journal-gatewayd',
2196 systemd_journal_gatewayd_sources,
2197 include_directories : includes,
2198 link_with : [libshared],
2199 dependencies : [threads,
2200 libmicrohttpd,
2201 libgnutls,
2202 libxz,
2203 liblz4],
2204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootlibexecdir)
2207 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208endif
2209
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002210if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002211 executable('systemd-coredump',
2212 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002213 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002215 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002216 libacl,
2217 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002218 libxz,
2219 liblz4],
2220 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002221 install : true,
2222 install_dir : rootlibexecdir)
2223
2224 exe = executable('coredumpctl',
2225 coredumpctl_sources,
2226 include_directories : includes,
2227 link_with : [libshared],
2228 dependencies : [threads,
2229 libxz,
2230 liblz4],
2231 install_rpath : rootlibexecdir,
2232 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002233 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234endif
2235
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002236if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002237 exe = executable('systemd-binfmt',
2238 'src/binfmt/binfmt.c',
2239 include_directories : includes,
2240 link_with : [libshared],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002244 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245
2246 meson.add_install_script('sh', '-c',
2247 mkdir_p.format(binfmtdir))
2248 meson.add_install_script('sh', '-c',
2249 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2250endif
2251
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002252if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 executable('systemd-vconsole-setup',
2254 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 include_directories : includes,
2256 link_with : [libshared],
2257 install_rpath : rootlibexecdir,
2258 install : true,
2259 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260endif
2261
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002262if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002263 executable('systemd-random-seed',
2264 'src/random-seed/random-seed.c',
2265 include_directories : includes,
2266 link_with : [libshared],
2267 install_rpath : rootlibexecdir,
2268 install : true,
2269 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270endif
2271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002272if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 executable('systemd-firstboot',
2274 'src/firstboot/firstboot.c',
2275 include_directories : includes,
2276 link_with : [libshared],
2277 dependencies : [libcrypt],
2278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281endif
2282
2283executable('systemd-remount-fs',
2284 'src/remount-fs/remount-fs.c',
2285 'src/core/mount-setup.c',
2286 'src/core/mount-setup.h',
2287 include_directories : includes,
2288 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002289 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290 install : true,
2291 install_dir : rootlibexecdir)
2292
2293executable('systemd-machine-id-setup',
2294 'src/machine-id-setup/machine-id-setup-main.c',
2295 'src/core/machine-id-setup.c',
2296 'src/core/machine-id-setup.h',
2297 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002298 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002299 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300 install : true,
2301 install_dir : rootbindir)
2302
2303executable('systemd-fsck',
2304 'src/fsck/fsck.c',
2305 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002307 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308 install : true,
2309 install_dir : rootlibexecdir)
2310
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002311executable('systemd-growfs',
2312 'src/partition/growfs.c',
2313 include_directories : includes,
2314 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002315 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002316 install_rpath : rootlibexecdir,
2317 install : true,
2318 install_dir : rootlibexecdir)
2319
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002320executable('systemd-makefs',
2321 'src/partition/makefs.c',
2322 include_directories : includes,
2323 link_with : [libshared],
2324 install_rpath : rootlibexecdir,
2325 install : true,
2326 install_dir : rootlibexecdir)
2327
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328executable('systemd-sleep',
2329 'src/sleep/sleep.c',
2330 include_directories : includes,
2331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002332 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333 install : true,
2334 install_dir : rootlibexecdir)
2335
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336exe = executable('systemd-sysctl',
2337 'src/sysctl/sysctl.c',
2338 include_directories : includes,
2339 link_with : [libshared],
2340 install_rpath : rootlibexecdir,
2341 install : true,
2342 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002343public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344
2345executable('systemd-ac-power',
2346 'src/ac-power/ac-power.c',
2347 include_directories : includes,
2348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002349 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350 install : true,
2351 install_dir : rootlibexecdir)
2352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353exe = executable('systemd-detect-virt',
2354 'src/detect-virt/detect-virt.c',
2355 include_directories : includes,
2356 link_with : [libshared],
2357 install_rpath : rootlibexecdir,
2358 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002359public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361exe = executable('systemd-delta',
2362 'src/delta/delta.c',
2363 include_directories : includes,
2364 link_with : [libshared],
2365 install_rpath : rootlibexecdir,
2366 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002367public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369exe = executable('systemd-escape',
2370 'src/escape/escape.c',
2371 include_directories : includes,
2372 link_with : [libshared],
2373 install_rpath : rootlibexecdir,
2374 install : true,
2375 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002376public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002377
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378exe = executable('systemd-notify',
2379 'src/notify/notify.c',
2380 include_directories : includes,
2381 link_with : [libshared],
2382 install_rpath : rootlibexecdir,
2383 install : true,
2384 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002385public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386
2387executable('systemd-volatile-root',
2388 'src/volatile-root/volatile-root.c',
2389 include_directories : includes,
2390 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002391 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392 install : true,
2393 install_dir : rootlibexecdir)
2394
2395executable('systemd-cgroups-agent',
2396 'src/cgroups-agent/cgroups-agent.c',
2397 include_directories : includes,
2398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002399 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400 install : true,
2401 install_dir : rootlibexecdir)
2402
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002403exe = executable('systemd-id128',
2404 'src/id128/id128.c',
2405 include_directories : includes,
2406 link_with : [libshared],
2407 install_rpath : rootlibexecdir,
2408 install : true)
2409public_programs += exe
2410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-path',
2412 'src/path/path.c',
2413 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002414 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415 install_rpath : rootlibexecdir,
2416 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002417public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419exe = executable('systemd-ask-password',
2420 'src/ask-password/ask-password.c',
2421 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002422 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002423 install_rpath : rootlibexecdir,
2424 install : true,
2425 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002426public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
2428executable('systemd-reply-password',
2429 'src/reply-password/reply-password.c',
2430 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002432 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433 install : true,
2434 install_dir : rootlibexecdir)
2435
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002436exe = executable('systemd-tty-ask-password-agent',
2437 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2438 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002439 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440 install_rpath : rootlibexecdir,
2441 install : true,
2442 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002443public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445exe = executable('systemd-cgls',
2446 'src/cgls/cgls.c',
2447 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449 install_rpath : rootlibexecdir,
2450 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002451public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002453exe = executable('systemd-cgtop',
2454 'src/cgtop/cgtop.c',
2455 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002456 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457 install_rpath : rootlibexecdir,
2458 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002459public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460
2461executable('systemd-initctl',
2462 'src/initctl/initctl.c',
2463 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002464 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002465 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466 install : true,
2467 install_dir : rootlibexecdir)
2468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('systemd-mount',
2470 'src/mount/mount-tool.c',
2471 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002472 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-Szmek7b76fce2017-04-09 23:55:50 -04002477meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002478 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002479
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480exe = executable('systemd-run',
2481 'src/run/run.c',
2482 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484 install_rpath : rootlibexecdir,
2485 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002486public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002487
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488exe = executable('systemd-stdio-bridge',
2489 'src/stdio-bridge/stdio-bridge.c',
2490 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492 install_rpath : rootlibexecdir,
2493 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002494public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002495
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002496exe = executable('busctl',
2497 'src/busctl/busctl.c',
2498 'src/busctl/busctl-introspect.c',
2499 'src/busctl/busctl-introspect.h',
2500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 install_rpath : rootlibexecdir,
2503 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002504public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002505
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002506if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002507 exe = executable('systemd-sysusers',
2508 'src/sysusers/sysusers.c',
2509 include_directories : includes,
2510 link_with : [libshared],
2511 install_rpath : rootlibexecdir,
2512 install : true,
2513 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515endif
2516
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002517if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002518 exe = executable('systemd-tmpfiles',
2519 'src/tmpfiles/tmpfiles.c',
2520 include_directories : includes,
2521 link_with : [libshared],
2522 dependencies : [libacl],
2523 install_rpath : rootlibexecdir,
2524 install : true,
2525 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002526 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002527
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002528 if want_tests != 'false'
2529 test('test-systemd-tmpfiles',
2530 test_systemd_tmpfiles_py,
2531 # https://github.com/mesonbuild/meson/issues/2681
2532 args : exe.full_path())
2533 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534endif
2535
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002536if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 exe = executable('systemd-hwdb',
2538 'src/hwdb/hwdb.c',
2539 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2540 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002541 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002542 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 install : true,
2544 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002545 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002546endif
2547
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002548if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002549 executable('systemd-quotacheck',
2550 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002551 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002552 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002553 install_rpath : rootlibexecdir,
2554 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002555 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556endif
2557
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002558exe = executable('systemd-socket-proxyd',
2559 'src/socket-proxy/socket-proxyd.c',
2560 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002561 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562 dependencies : [threads],
2563 install_rpath : rootlibexecdir,
2564 install : true,
2565 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002566public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002567
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002568exe = executable('systemd-udevd',
2569 systemd_udevd_sources,
2570 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002571 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002572 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002574 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002575 dependencies : [threads,
2576 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002578 libacl,
2579 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002580 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002581 install : true,
2582 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002583public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002584
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002585exe = executable('udevadm',
2586 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002587 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002588 include_directories : includes,
2589 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002590 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002591 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002592 dependencies : [threads,
2593 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002594 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002595 libacl,
2596 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002597 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002598 install : true,
2599 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002600public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002601
2602executable('systemd-shutdown',
2603 systemd_shutdown_sources,
2604 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002605 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002606 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002607 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608 install : true,
2609 install_dir : rootlibexecdir)
2610
2611executable('systemd-update-done',
2612 'src/update-done/update-done.c',
2613 include_directories : includes,
2614 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002615 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002616 install : true,
2617 install_dir : rootlibexecdir)
2618
2619executable('systemd-update-utmp',
2620 'src/update-utmp/update-utmp.c',
2621 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002622 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002623 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002624 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002625 install : true,
2626 install_dir : rootlibexecdir)
2627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002628if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002629 executable('systemd-modules-load',
2630 'src/modules-load/modules-load.c',
2631 include_directories : includes,
2632 link_with : [libshared],
2633 dependencies : [libkmod],
2634 install_rpath : rootlibexecdir,
2635 install : true,
2636 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002637
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002638 meson.add_install_script('sh', '-c',
2639 mkdir_p.format(modulesloaddir))
2640 meson.add_install_script('sh', '-c',
2641 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642endif
2643
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644exe = executable('systemd-nspawn',
2645 systemd_nspawn_sources,
2646 'src/core/mount-setup.c', # FIXME: use a variable?
2647 'src/core/mount-setup.h',
2648 'src/core/loopback-setup.c',
2649 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002650 include_directories : includes,
2651 link_with : [libnspawn_core,
2652 libshared],
2653 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002654 install_rpath : rootlibexecdir,
2655 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002656public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002657
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002658if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002659 executable('systemd-networkd',
2660 systemd_networkd_sources,
2661 include_directories : includes,
2662 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002663 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002664 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002665 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002666 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002667 install_rpath : rootlibexecdir,
2668 install : true,
2669 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002670
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002671 executable('systemd-networkd-wait-online',
2672 systemd_networkd_wait_online_sources,
2673 include_directories : includes,
2674 link_with : [libnetworkd_core,
2675 libshared],
2676 install_rpath : rootlibexecdir,
2677 install : true,
2678 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002680 exe = executable('networkctl',
2681 networkctl_sources,
2682 include_directories : includes,
2683 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002684 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002685 install_rpath : rootlibexecdir,
2686 install : true,
2687 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002688 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002689endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002690
2691executable('systemd-sulogin-shell',
2692 ['src/sulogin-shell/sulogin-shell.c'],
2693 include_directories : includes,
2694 link_with : [libshared],
2695 install_rpath : rootlibexecdir,
2696 install : true,
2697 install_dir : rootlibexecdir)
2698
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002699############################################################
2700
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002701custom_target(
2702 'systemd-runtest.env',
2703 output : 'systemd-runtest.env',
2704 command : ['sh', '-c', '{ ' +
2705 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002706 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002707 '} >@OUTPUT@'],
2708 build_by_default : true)
2709
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002710foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002711 sources = tuple[0]
2712 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2713 dependencies = tuple[2]
2714 condition = tuple.length() >= 4 ? tuple[3] : ''
2715 type = tuple.length() >= 5 ? tuple[4] : ''
2716 defs = tuple.length() >= 6 ? tuple[5] : []
2717 incs = tuple.length() >= 7 ? tuple[6] : includes
2718 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002719
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720 name = sources[0].split('/')[-1].split('.')[0]
2721 if type.startswith('timeout=')
2722 timeout = type.split('=')[1].to_int()
2723 type = ''
2724 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002725
2726 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 exe = executable(
2728 name,
2729 sources,
2730 include_directories : incs,
2731 link_with : link_with,
2732 dependencies : dependencies,
2733 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002734 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002736 install : install_tests,
2737 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002738
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 if type == 'manual'
2740 message('@0@ is a manual test'.format(name))
2741 elif type == 'unsafe' and want_tests != 'unsafe'
2742 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002743 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002744 test(name, exe,
2745 env : test_env,
2746 timeout : timeout)
2747 endif
2748 else
2749 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2750 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002751endforeach
2752
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002753exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002754 'test-libsystemd-sym',
2755 test_libsystemd_sym_c,
2756 include_directories : includes,
2757 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002758 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002759 install : install_tests,
2760 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002761if want_tests != 'false'
2762 test('test-libsystemd-sym', exe)
2763endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002764
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002765exe = executable(
2766 'test-libsystemd-static-sym',
2767 test_libsystemd_sym_c,
2768 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002769 link_with : [install_libsystemd_static],
2770 dependencies : [threads], # threads is already included in dependencies on the library,
2771 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002772 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002773 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002774 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002775if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002776 test('test-libsystemd-static-sym', exe)
2777endif
2778
2779exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002780 'test-libudev-sym',
2781 test_libudev_sym_c,
2782 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002783 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002784 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002785 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002786 install : install_tests,
2787 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002788if want_tests != 'false'
2789 test('test-libudev-sym', exe)
2790endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002791
2792exe = executable(
2793 'test-libudev-static-sym',
2794 test_libudev_sym_c,
2795 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002796 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002797 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002798 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002799 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002800 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002801if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002802 test('test-libudev-static-sym', exe)
2803endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002804
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002805############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002806
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002807fuzzer_exes = []
2808
Michael Olbrich59967402018-11-11 11:27:35 +01002809if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002810foreach tuple : fuzzers
2811 sources = tuple[0]
2812 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2813 dependencies = tuple[2]
2814 defs = tuple.length() >= 4 ? tuple[3] : []
2815 incs = tuple.length() >= 5 ? tuple[4] : includes
2816
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002817 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002818 dependencies += fuzzing_engine
2819 else
2820 sources += 'src/fuzz/fuzz-main.c'
2821 endif
2822
2823 name = sources[0].split('/')[-1].split('.')[0]
2824
2825 fuzzer_exes += executable(
2826 name,
2827 sources,
2828 include_directories : [incs, include_directories('src/fuzz')],
2829 link_with : link_with,
2830 dependencies : dependencies,
2831 c_args : defs,
2832 install : false)
2833endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002834endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002835
2836run_target('fuzzers',
2837 depends : fuzzer_exes,
2838 command : ['true'])
2839
2840############################################################
2841
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002842make_directive_index_py = find_program('tools/make-directive-index.py')
2843make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002844xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002845hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002846
2847subdir('units')
2848subdir('sysctl.d')
2849subdir('sysusers.d')
2850subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002851subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002852subdir('hwdb')
2853subdir('network')
2854subdir('man')
2855subdir('shell-completion/bash')
2856subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002857subdir('docs/sysvinit')
2858subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002860install_subdir('factory/etc',
2861 install_dir : factorydir)
2862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002863install_data('xorg/50-systemd-user.sh',
2864 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002865install_data('modprobe.d/systemd.conf',
2866 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002867install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002868 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002869 'NEWS',
2870 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302871 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002872 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002873 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302874 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002875 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002876 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002877 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002878 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2879 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002880
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002881meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2882meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2883
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002884############################################################
2885
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002886meson_check_help = find_program('tools/meson-check-help.sh')
2887
2888foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002889 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002890 if want_tests != 'false'
2891 test('check-help-' + name,
2892 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002893 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002894 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002895endforeach
2896
2897############################################################
2898
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002899# Enable tests for all supported sanitizers
2900foreach tuple : sanitizers
2901 sanitizer = tuple[0]
2902 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002903
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002904 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002905 prev = ''
2906 foreach p : fuzz_regression_tests
2907 b = p.split('/')[-2]
2908 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002909
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002910 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002911
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002912 if name != prev
2913 if want_tests == 'false'
2914 message('Not compiling @0@ because tests is set to false'.format(name))
2915 elif slow_tests
2916 exe = custom_target(
2917 name,
2918 output : name,
2919 depends : build,
2920 command : [env, 'ln', '-fs',
2921 join_paths(build.full_path(), b),
2922 '@OUTPUT@'],
2923 build_by_default : true)
2924 else
2925 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2926 endif
2927 endif
2928 prev = name
2929
2930 if want_tests != 'false' and slow_tests
2931 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2932 env,
2933 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002934 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002935 endif
2936 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002937 endif
2938endforeach
2939
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002940
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002941############################################################
2942
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002943if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002944 all_files = run_command(
2945 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002946 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002947 'ls-files',
2948 ':/*.[ch]'])
2949 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002950
userwithuide85a6902017-08-09 13:41:44 +00002951 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002952 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002953 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002954 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002955 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002956 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002957 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002958endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002959
2960if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002961 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002962 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002963 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002964 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002965endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002966
2967if git.found()
2968 git_head = run_command(
2969 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002970 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002971 'rev-parse', 'HEAD']).stdout().strip()
2972 git_head_short = run_command(
2973 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002974 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002975 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2976
2977 run_target(
2978 'git-snapshot',
2979 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002980 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002981 git_head_short),
2982 '--prefix', 'systemd-@0@/'.format(git_head),
2983 'HEAD'])
2984endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002985
2986############################################################
2987
Lennart Poettering51b13862017-12-20 12:51:14 +01002988meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2989run_target(
2990 'check-api-docs',
2991 depends : [man, libsystemd, libudev],
2992 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2993
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002994run_target(
2995 'make-index-md',
2996 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2997
Lennart Poettering51b13862017-12-20 12:51:14 +01002998############################################################
2999
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003000status = [
3001 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3002
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003003 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003004 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003005 'prefix directory: @0@'.format(prefixdir),
3006 'rootprefix directory: @0@'.format(rootprefixdir),
3007 'sysconf directory: @0@'.format(sysconfdir),
3008 'include directory: @0@'.format(includedir),
3009 'lib directory: @0@'.format(libdir),
3010 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003011 'SysV init scripts: @0@'.format(sysvinit_path),
3012 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003013 'PAM modules directory: @0@'.format(pamlibdir),
3014 'PAM configuration directory: @0@'.format(pamconfdir),
3015 'RPM macros directory: @0@'.format(rpmmacrosdir),
3016 'modprobe.d directory: @0@'.format(modprobedir),
3017 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3018 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3019 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3020 'bash completions directory: @0@'.format(bashcompletiondir),
3021 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003022 'extra start script: @0@'.format(get_option('rc-local')),
3023 'extra stop script: @0@'.format(get_option('halt-local')),
3024 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3025 get_option('debug-tty')),
3026 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003027 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003028 'maximum system UID: @0@'.format(system_uid_max),
3029 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003030 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3031 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3032 'minimum container UID base: @0@'.format(container_uid_base_min),
3033 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003034 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003035 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003036 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003037 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003038 'nobody user name: @0@'.format(nobody_user),
3039 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003040 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003041 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003042
3043 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003044 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003045 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3046 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3047
3048alt_dns_servers = '\n '.join(dns_servers.split(' '))
3049alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3050status += [
3051 'default DNS servers: @0@'.format(alt_dns_servers),
3052 'default NTP servers: @0@'.format(alt_ntp_servers)]
3053
3054alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3055 '@@0@'.format(time_epoch)).stdout().strip()
3056status += [
3057 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3058
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003059status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003060 'static libsystemd: @0@'.format(static_libsystemd),
3061 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003062
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003063# TODO:
3064# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3065# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3066# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3067
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003068if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003069 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003070
3071 if have_gnu_efi
3072 status += [
3073 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3074 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003075 'EFI lib directory: @0@'.format(efi_libdir),
3076 'EFI lds directory: @0@'.format(efi_ldsdir),
3077 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078 endif
3079endif
3080
3081found = []
3082missing = []
3083
3084foreach tuple : [
3085 ['libcryptsetup'],
3086 ['PAM'],
3087 ['AUDIT'],
3088 ['IMA'],
3089 ['AppArmor'],
3090 ['SELinux'],
3091 ['SECCOMP'],
3092 ['SMACK'],
3093 ['zlib'],
3094 ['xz'],
3095 ['lz4'],
3096 ['bzip2'],
3097 ['ACL'],
3098 ['gcrypt'],
3099 ['qrencode'],
3100 ['microhttpd'],
3101 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003102 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003104 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003105 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 ['libidn'],
3107 ['libiptc'],
3108 ['elfutils'],
3109 ['binfmt'],
3110 ['vconsole'],
3111 ['quotacheck'],
3112 ['tmpfiles'],
3113 ['environment.d'],
3114 ['sysusers'],
3115 ['firstboot'],
3116 ['randomseed'],
3117 ['backlight'],
3118 ['rfkill'],
3119 ['logind'],
3120 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003121 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122 ['importd'],
3123 ['hostnamed'],
3124 ['timedated'],
3125 ['timesyncd'],
3126 ['localed'],
3127 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003128 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003129 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3130 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003131 ['coredump'],
3132 ['polkit'],
3133 ['legacy pkla', install_polkit_pkla],
3134 ['efi'],
3135 ['gnu-efi', have_gnu_efi],
3136 ['kmod'],
3137 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003138 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139 ['blkid'],
3140 ['dbus'],
3141 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003142 ['nss-myhostname'],
3143 ['nss-mymachines'],
3144 ['nss-resolve'],
3145 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003146 ['hwdb'],
3147 ['tpm'],
3148 ['man pages', want_man],
3149 ['html pages', want_html],
3150 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003151 ['SysV compat'],
3152 ['utmp'],
3153 ['ldconfig'],
3154 ['hibernate'],
3155 ['adm group', get_option('adm-group')],
3156 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003157 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003158 ['debug hashmap'],
3159 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003160 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003161 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003162 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003163 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003164 ['link-udev-shared', get_option('link-udev-shared')],
3165 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003166]
3167
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003168 if tuple.length() >= 2
3169 cond = tuple[1]
3170 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003171 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3172 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003173 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003174 endif
3175 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003176 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003178 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003179 endif
3180endforeach
3181
3182status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003183 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003185 '',
3186 'disabled features: @0@'.format(', '.join(missing)),
3187 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003189
3190if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003191 warning('\n' +
3192 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3193 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3194 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003195endif