blob: 9c788979b354945a2e75f654d5fc6b18ecc1799c [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020030want_ossfuzz = get_option('oss-fuzz')
31want_libfuzzer = get_option('llvm-fuzz')
32if want_ossfuzz and want_libfuzzer
33 error('only one of oss-fuzz and llvm-fuzz can be specified')
34endif
35fuzzer_build = want_ossfuzz or want_libfuzzer
36
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040037#####################################################################
38
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040039# Try to install the git pre-commit hook
40git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
41if git_hook.returncode() == 0
42 message(git_hook.stdout().strip())
43endif
44
45#####################################################################
46
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010047if get_option('split-usr') == 'auto'
48 split_usr = run_command('test', '-L', '/bin').returncode() != 0
49else
50 split_usr = get_option('split-usr') == 'true'
51endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010052conf.set10('HAVE_SPLIT_USR', split_usr,
53 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010054
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055if get_option('split-bin') == 'auto'
56 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
57else
58 split_bin = get_option('split-bin') == 'true'
59endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010060conf.set10('HAVE_SPLIT_BIN', split_bin,
61 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010062
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064# Unusual rootprefixdir values are used by some distros
65# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010066rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067if rootprefixdir == ''
68 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +020078conf.set('HIGH_RLIMIT_NOFILE', 256*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020079
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080# join_paths ignore the preceding arguments if an absolute component is
81# encountered, so this should canonicalize various paths when they are
82# absolute or relative.
83prefixdir = get_option('prefix')
84if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040085 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086endif
87bindir = join_paths(prefixdir, get_option('bindir'))
88libdir = join_paths(prefixdir, get_option('libdir'))
89sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
90includedir = join_paths(prefixdir, get_option('includedir'))
91datadir = join_paths(prefixdir, get_option('datadir'))
92localstatedir = join_paths('/', get_option('localstatedir'))
93
94rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010095rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
97
98rootlibdir = get_option('rootlibdir')
99if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400100 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101endif
102
103# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200104pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
105pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400106polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
107polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
108polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
109varlogdir = join_paths(localstatedir, 'log')
110xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900111rpmmacrosdir = get_option('rpmmacrosdir')
112if rpmmacrosdir != 'no'
113 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
114endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200115modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400116
117# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118pkgdatadir = join_paths(datadir, 'systemd')
119environmentdir = join_paths(prefixdir, 'lib/environment.d')
120pkgsysconfdir = join_paths(sysconfdir, 'systemd')
121userunitdir = join_paths(prefixdir, 'lib/systemd/user')
122userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
123tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
124sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
125sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
126binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
127modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
128networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
129pkgincludedir = join_paths(includedir, 'systemd')
130systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
131usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
132systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
133userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
134systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
135systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
136systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
137systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
138udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
139udevhomedir = udevlibexecdir
140udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
141udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
142catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
143kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
144factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
146testsdir = join_paths(prefixdir, 'lib/systemd/tests')
147systemdstatedir = join_paths(localstatedir, 'lib/systemd')
148catalogstatedir = join_paths(systemdstatedir, 'catalog')
149randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200150profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151
tblume75aaade2018-02-01 22:46:15 +0100152docdir = get_option('docdir')
153if docdir == ''
154 docdir = join_paths(datadir, 'doc/systemd')
155endif
156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157dbuspolicydir = get_option('dbuspolicydir')
158if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162dbussessionservicedir = get_option('dbussessionservicedir')
163if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussystemservicedir = get_option('dbussystemservicedir')
168if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172pamlibdir = get_option('pamlibdir')
173if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamconfdir = get_option('pamconfdir')
178if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100182memory_accounting_default = get_option('memory-accounting-default')
183
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
187conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
188conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
190conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100191
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100192conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100193
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
196conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
198conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
199conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
200conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100201conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100202conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
204conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
205conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
206conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
207conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100208conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400209conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
211conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
213conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
214conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
215conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
216conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
217conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
219conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700220conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700221conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('LIBDIR', libdir)
225conf.set_quoted('ROOTLIBDIR', rootlibdir)
226conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
227conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
229conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
230conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
231conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
232conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
233conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200234conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100235conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100238substs.set('rootprefix', rootprefixdir)
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-Szmek1c2c7c62018-11-17 15:38:15 +0100243substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('bindir', bindir)
245substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400246substs.set('rootlibexecdir', rootlibexecdir)
247substs.set('systemunitdir', systemunitdir)
248substs.set('userunitdir', userunitdir)
249substs.set('systempresetdir', systempresetdir)
250substs.set('userpresetdir', userpresetdir)
251substs.set('udevhwdbdir', udevhwdbdir)
252substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200254substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('catalogdir', catalogdir)
256substs.set('tmpfilesdir', tmpfilesdir)
257substs.set('sysusersdir', sysusersdir)
258substs.set('sysctldir', sysctldir)
259substs.set('binfmtdir', binfmtdir)
260substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('systemgeneratordir', systemgeneratordir)
263substs.set('usergeneratordir', usergeneratordir)
264substs.set('systemenvgeneratordir', systemenvgeneratordir)
265substs.set('userenvgeneratordir', userenvgeneratordir)
266substs.set('systemshutdowndir', systemshutdowndir)
267substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400268substs.set('VARLOGDIR', varlogdir)
269substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400270substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
271substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400272substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
273substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
274substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
275substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100276substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200277substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278
279#####################################################################
280
281cc = meson.get_compiler('c')
282pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400283check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100284meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200286want_tests = get_option('tests')
287slow_tests = want_tests != 'false' and get_option('slow-tests')
288install_tests = get_option('install-tests')
289
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200290cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200291if cxx.found()
292 # Used only for tests
293 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200294 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200295else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200296 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400297endif
298
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500299if want_libfuzzer
300 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200301elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500302 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
303endif
304
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900305possible_cc_flags = [
306 '-Wextra',
307 '-Werror=undef',
308 '-Wlogical-op',
309 '-Wmissing-include-dirs',
310 '-Wold-style-definition',
311 '-Wpointer-arith',
312 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900313 '-Wfloat-equal',
314 '-Wsuggest-attribute=noreturn',
315 '-Werror=missing-prototypes',
316 '-Werror=implicit-function-declaration',
317 '-Werror=missing-declarations',
318 '-Werror=return-type',
319 '-Werror=incompatible-pointer-types',
320 '-Werror=format=2',
321 '-Wstrict-prototypes',
322 '-Wredundant-decls',
323 '-Wmissing-noreturn',
324 '-Wimplicit-fallthrough=5',
325 '-Wshadow',
326 '-Wendif-labels',
327 '-Wstrict-aliasing=2',
328 '-Wwrite-strings',
329 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200330 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200331 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900332 '-Wdate-time',
333 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700334
335 # negative arguments are correctly detected starting with meson 0.46.
336 '-Wno-unused-parameter',
337 '-Wno-missing-field-initializers',
338 '-Wno-unused-result',
339 '-Wno-format-signedness',
340
341 # work-around for gcc 7.1 turning this on on its own.
342 '-Wno-error=nonnull',
343
344 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
345 # optimizations enabled, producing essentially false positives.
346 '-Wno-maybe-uninitialized',
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-ffast-math',
349 '-fno-common',
350 '-fdiagnostics-show-option',
351 '-fno-strict-aliasing',
352 '-fvisibility=hidden',
353 '-fstack-protector',
354 '-fstack-protector-strong',
355 '--param=ssp-buffer-size=4',
356]
357
358# --as-needed and --no-undefined are provided by meson by default,
359# run mesonconf to see what is enabled
360possible_link_flags = [
361 '-Wl,-z,relro',
362 '-Wl,-z,now',
363]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500365# the oss-fuzz fuzzers are not built with -fPIE, so don't
366# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500367if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900368 possible_cc_flags += '-fPIE'
369 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500370endif
371
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900372if cc.get_id() == 'clang'
373 possible_cc_flags += [
374 '-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
377endif
378
379if get_option('buildtype') != 'debug'
380 possible_cc_flags += [
381 '-ffunction-sections',
382 '-fdata-sections',
383 ]
384
385 possible_link_flags += '-Wl,--gc-sections'
386endif
387
388add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900389add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900390
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800391if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392 #include <time.h>
393 #include <inttypes.h>
394 typedef uint64_t usec_t;
395 usec_t now(clockid_t clock);
396 int main(void) {
397 struct timespec now;
398 return 0;
399 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800400''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400401 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endif
403
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200404cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426
427foreach decl : ['char16_t',
428 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400429 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000430 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100431 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400433
434 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200435 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
436
437 if decl == 'struct statx'
438 if have
439 want_linux_stat_h = false
440 else
441 have = cc.sizeof(decl,
442 prefix : decl_headers + '#include <linux/stat.h>',
443 args : '-D_GNU_SOURCE') > 0
444 want_linux_stat_h = have
445 endif
446 endif
447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200448 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453foreach 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'],
Susant Sahanid3848262017-12-23 23:25:03 +0530457 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
Tobias Jungel99f68ef2018-11-02 02:31:20 +0100459 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
462 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530463 ['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
465 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
466 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
467 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
468 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
469 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
470 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
471 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530472 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473 ['NDA_IFINDEX', 'linux/neighbour.h'],
474 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000475 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530477 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530478 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
479 ['FOU_CMD_GET', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400480 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400481 prefix = decl.length() > 2 ? decl[2] : ''
482 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200483 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400484endforeach
485
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200487 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400488endforeach
489
490foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100492 ['gettid', '''#include <sys/types.h>
493 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100494 ['pivot_root', '''#include <stdlib.h>
495 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400497 #include <sys/stat.h>
498 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100499 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100500 ['renameat2', '''#include <stdio.h>
501 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400502 ['kcmp', '''#include <linux/kcmp.h>'''],
503 ['keyctl', '''#include <sys/types.h>
504 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400506 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200507 ['bpf', '''#include <sys/syscall.h>
508 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100509 ['statx', '''#include <sys/types.h>
510 #include <sys/stat.h>
511 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100512 ['explicit_bzero' , '''#include <string.h>'''],
513 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400514]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400515
Lennart Poettering85db59b2017-12-25 12:01:14 +0100516 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200517 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400518endforeach
519
Lennart Poettering85db59b2017-12-25 12:01:14 +0100520if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200521 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200522 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400523else
524 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200525 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200526 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400527endif
528
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529#####################################################################
530
531sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400533m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400535git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100536env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100537perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400539meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400540mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400541test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
542splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400543
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
545# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500546progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400548 ['kmod', '/usr/bin/kmod' ],
549 ['kexec', '/usr/sbin/kexec' ],
550 ['sulogin', '/usr/sbin/sulogin' ],
551 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
552 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
553 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
554 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
555 ]
556foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400557 path = get_option(prog[0] + '-path')
558 if path != ''
559 message('Using @1@ for @0@'.format(prog[0], path))
560 else
561 exe = find_program(prog[0],
562 '/usr/sbin/' + prog[0],
563 '/sbin/' + prog[0],
564 required: false)
565 path = exe.found() ? exe.path() : prog[1]
566 endif
567 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
568 conf.set_quoted(name, path)
569 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570endforeach
571
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500572conf.set_quoted('TELINIT', get_option('telinit-path'))
573
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400574if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100575 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400576endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577
578############################################################
579
580gperf = find_program('gperf')
581
582gperf_test_format = '''
583#include <string.h>
584const char * in_word_set(const char *, @0@);
585@1@
586'''
587gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
588gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
589gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
590if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400591 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400593 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
594 if cc.compiles(gperf_test)
595 gperf_len_type = 'unsigned'
596 else
597 error('unable to determine gperf len type')
598 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599endif
600message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400601conf.set('GPERF_LEN_TYPE', gperf_len_type,
602 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603
604############################################################
605
606if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100609foreach header : ['crypt.h',
610 'linux/btrfs.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900611 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612 'linux/memfd.h',
613 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200614 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615 'valgrind/memcheck.h',
616 'valgrind/valgrind.h',
617 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200619 conf.set10('HAVE_' + header.underscorify().to_upper(),
620 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621endforeach
622
623############################################################
624
625conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400626conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
627gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628
629default_hierarchy = get_option('default-hierarchy')
630conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
631 description : 'default cgroup hierarchy as string')
632if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
639
640time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900641if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900643 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400645conf.set('TIME_EPOCH', time_epoch)
646
647system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900648if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 system_uid_max = run_command(
650 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800651 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
652 '/etc/login.defs').stdout().strip()
653 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900654 system_uid_max = 999
655 else
656 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659conf.set('SYSTEM_UID_MAX', system_uid_max)
660substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900663if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400664 system_gid_max = run_command(
665 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800666 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
667 '/etc/login.defs').stdout().strip()
668 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900669 system_gid_max = 999
670 else
671 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800672 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674conf.set('SYSTEM_GID_MAX', system_gid_max)
675substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676
Yu Watanabeac093402018-05-10 16:04:16 +0900677dynamic_uid_min = get_option('dynamic-uid-min')
678dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100679conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
680conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
681substs.set('dynamicuidmin', dynamic_uid_min)
682substs.set('dynamicuidmax', dynamic_uid_max)
683
Yu Watanabeac093402018-05-10 16:04:16 +0900684container_uid_base_min = get_option('container-uid-base-min')
685container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100686conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
687conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
688substs.set('containeruidbasemin', container_uid_base_min)
689substs.set('containeruidbasemax', container_uid_base_max)
690
Lennart Poetteringafde4572017-12-05 11:00:24 +0100691nobody_user = get_option('nobody-user')
692nobody_group = get_option('nobody-group')
693
Chen Qi2484bff2018-07-23 14:53:09 +0800694if not meson.is_cross_build()
695 getent_result = run_command('getent', 'passwd', '65534')
696 if getent_result.returncode() == 0
697 name = getent_result.stdout().split(':')[0]
698 if name != nobody_user
699 warning('\n' +
700 '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) +
701 'Your build will result in an user table setup that is incompatible with the local system.')
702 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100703 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800704 id_result = run_command('id', '-u', nobody_user)
705 if id_result.returncode() == 0
706 id = id_result.stdout().to_int()
707 if id != 65534
708 warning('\n' +
709 '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) +
710 'Your build will result in an user table setup that is incompatible with the local system.')
711 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100713
Chen Qi2484bff2018-07-23 14:53:09 +0800714 getent_result = run_command('getent', 'group', '65534')
715 if getent_result.returncode() == 0
716 name = getent_result.stdout().split(':')[0]
717 if name != nobody_group
718 warning('\n' +
719 '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) +
720 'Your build will result in an group table setup that is incompatible with the local system.')
721 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800723 id_result = run_command('id', '-g', nobody_group)
724 if id_result.returncode() == 0
725 id = id_result.stdout().to_int()
726 if id != 65534
727 warning('\n' +
728 '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) +
729 'Your build will result in an group table setup that is incompatible with the local system.')
730 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100731 endif
732endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900733if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900734 warning('\n' +
735 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
736 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900737endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100738
739conf.set_quoted('NOBODY_USER_NAME', nobody_user)
740conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900741substs.set('NOBODY_USER_NAME', nobody_user)
742substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100743
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744tty_gid = get_option('tty-gid')
745conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400746substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Ikey Doherty84786b82017-12-03 12:28:23 +0000748# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900749users_gid = get_option('users-gid')
750substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000751
Yu Watanabe348b4432018-05-07 18:17:35 +0900752conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
753conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400754
Michael Bieblace5e312018-07-13 23:36:13 +0200755dev_kvm_mode = get_option('dev-kvm-mode')
756substs.set('DEV_KVM_MODE', dev_kvm_mode)
757conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700758substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400760kill_user_processes = get_option('default-kill-user-processes')
761conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100762conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400763substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400765dns_servers = get_option('dns-servers')
766conf.set_quoted('DNS_SERVERS', dns_servers)
767substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400768
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400769ntp_servers = get_option('ntp-servers')
770conf.set_quoted('NTP_SERVERS', ntp_servers)
771substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400772
773conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
774
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400775substs.set('SUSHELL', get_option('debug-shell'))
776substs.set('DEBUGTTY', get_option('debug-tty'))
777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778enable_debug_hashmap = false
779enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200780foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900781 if name == 'hashmap'
782 enable_debug_hashmap = true
783 elif name == 'mmap-cache'
784 enable_debug_mmap_cache = true
785 else
786 message('unknown debug option "@0@", ignoring'.format(name))
787 endif
788endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200789conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
790conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400791
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200792conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200793conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200794
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795#####################################################################
796
797threads = dependency('threads')
798librt = cc.find_library('rt')
799libm = cc.find_library('m')
800libdl = cc.find_library('dl')
801libcrypt = cc.find_library('crypt')
802
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400803libcap = dependency('libcap', required : false)
804if not libcap.found()
805 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
806 libcap = cc.find_library('cap')
807endif
808
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100810 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811
812want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500813if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400815 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400816 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823
824want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500825if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 libselinux = dependency('libselinux',
827 version : '>= 2.1.9',
828 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400832 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
836want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500837if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400838 libapparmor = dependency('libapparmor',
839 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847smack_run_label = get_option('smack-run-label')
848if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400849 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850endif
851
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400852want_polkit = get_option('polkit')
853install_polkit = false
854install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500855if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400856 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400857
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 libpolkit = dependency('polkit-gobject-1',
859 required : false)
860 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
861 message('Old polkit detected, will install pkla files')
862 install_polkit_pkla = true
863 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400864endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400867want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500868if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400869 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400871else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400873 libacl = []
874endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400876
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500878if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886
887want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500888if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896
897want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500898if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libkmod = dependency('libkmod',
900 version : '>= 15',
901 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908
909want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500910if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libpam = cc.find_library('pam', required : want_pam == 'true')
912 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libpam = []
917 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920
921want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500922if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libmicrohttpd = dependency('libmicrohttpd',
924 version : '>= 0.9.33',
925 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932
933want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libcryptsetup = dependency('libcryptsetup',
936 version : '>= 1.6.0',
937 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100939 have_sector = cc.has_member(
940 'struct crypt_params_plain',
941 'sector_size',
942 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100945 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100949conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950
951want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500952if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libcurl = dependency('libcurl',
954 version : '>= 7.32.0',
955 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962
963want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400964want_libidn2 = get_option('libidn2')
965if want_libidn == 'true' and want_libidn2 == 'true'
966 error('libidn and libidn2 cannot be requested simultaneously')
967endif
968
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libidn = dependency('libidn',
971 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400975 libidn = []
976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400979 # libidn is used for both libidn and libidn2 objects
980 libidn = dependency('libidn2',
981 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libidn.found()
983else
984 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987
988want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500989if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400990 libiptc = dependency('libiptc',
991 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998
999want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001000if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libqrencode = dependency('libqrencode',
1002 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001010want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001011if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001012 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1013 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
1017endif
1018if not have
1019 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001020 libgcrypt = []
1021 libgpg_error = []
1022endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001026if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libgnutls = dependency('gnutls',
1028 version : '>= 3.1.4',
1029 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001037want_openssl = get_option('openssl')
1038if want_openssl != 'false' and not fuzzer_build
1039 libopenssl = dependency('openssl',
1040 version : '>= 1.1.0',
1041 required : want_openssl == 'true')
1042 have = libopenssl.found()
1043else
1044 have = false
1045 libopenssl = []
1046endif
1047conf.set10('HAVE_OPENSSL', have)
1048
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libdw = dependency('libdw',
1052 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059
1060want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001061if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libz = dependency('zlib',
1063 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070
1071want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001072if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libbzip2 = cc.find_library('bz2',
1074 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081
1082want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001083if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001084 libxz = dependency('liblzma',
1085 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001087else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092
1093want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001094if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001096 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001106if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001107 libxkbcommon = dependency('xkbcommon',
1108 version : '>= 0.3.0',
1109 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001111else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001113 libxkbcommon = []
1114endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001116
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001117want_pcre2 = get_option('pcre2')
1118if want_pcre2 != 'false'
1119 libpcre2 = dependency('libpcre2-8',
1120 required : want_pcre2 == 'true')
1121 have = libpcre2.found()
1122else
1123 have = false
1124 libpcre2 = []
1125endif
1126conf.set10('HAVE_PCRE2', have)
1127
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001128want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001129if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 libglib = dependency('glib-2.0',
1131 version : '>= 2.22.0',
1132 required : want_glib == 'true')
1133 libgobject = dependency('gobject-2.0',
1134 version : '>= 2.22.0',
1135 required : want_glib == 'true')
1136 libgio = dependency('gio-2.0',
1137 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001138 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001139else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 libglib = []
1142 libgobject = []
1143 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146
1147want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001148if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdbus = dependency('dbus-1',
1150 version : '>= 1.3.2',
1151 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158
Yu Watanabe42303dc2017-06-18 05:22:32 +09001159default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001161 default_dnssec = 'no'
1162endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001164 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1165 default_dnssec = 'no'
1166endif
1167conf.set('DEFAULT_DNSSEC_MODE',
1168 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1169substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1170
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001171dns_over_tls = get_option('dns-over-tls')
1172if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001173 if dns_over_tls == 'openssl'
1174 have_gnutls = false
1175 else
1176 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1177 if dns_over_tls == 'gnutls' and not have_gnutls
1178 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1179 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001180 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001181 if dns_over_tls == 'gnutls' or have_gnutls
1182 have_openssl = false
1183 else
1184 have_openssl = conf.get('HAVE_OPENSSL') == 1
1185 if dns_over_tls != 'auto' and not have_openssl
1186 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1187 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1188 endif
1189 endif
1190 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001191else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001192 have = false
1193 have_gnutls = false
1194 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001195endif
1196conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001197conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1198conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001199
Iwan Timmerc9299be2018-06-13 20:26:24 +02001200default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001201if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001202 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001203endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001204if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1205 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 +02001206 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001207endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001208conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1209 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1210substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001211
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001213if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214 have = (conf.get('HAVE_LIBCURL') == 1 and
1215 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001216 conf.get('HAVE_XZ') == 1 and
1217 conf.get('HAVE_GCRYPT') == 1)
1218 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001219 error('importd support was requested, but dependencies are not available')
1220 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221else
1222 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001223endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001225
1226want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001227if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1229 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1231 # it's possible to build one without the other. Complain only if
1232 # support was explictly requested. The auxiliary files like sysusers
1233 # config should be installed when any of the programs are built.
1234 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1235 error('remote support was requested, but dependencies are not available')
1236 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001237 have = have_deps[0] or have_deps[1]
1238else
1239 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001242
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001243foreach term : ['utmp',
1244 'hibernate',
1245 'environment-d',
1246 'binfmt',
1247 'coredump',
1248 'resolve',
1249 'logind',
1250 'hostnamed',
1251 'localed',
1252 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001253 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001254 'networkd',
1255 'timedated',
1256 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001257 'firstboot',
1258 'randomseed',
1259 'backlight',
1260 'vconsole',
1261 'quotacheck',
1262 'sysusers',
1263 'tmpfiles',
1264 'hwdb',
1265 'rfkill',
1266 'ldconfig',
1267 'efi',
1268 'tpm',
1269 'ima',
1270 'smack',
1271 'gshadow',
1272 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001273 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001274 'nss-systemd']
1275 have = get_option(term)
1276 name = 'ENABLE_' + term.underscorify().to_upper()
1277 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278endforeach
1279
Yu Watanabe08540a92018-07-18 09:25:57 +09001280foreach tuple : [['nss-mymachines', 'machined'],
1281 ['nss-resolve', 'resolve']]
1282 want = get_option(tuple[0])
1283 if want != 'false'
1284 have = get_option(tuple[1])
1285 if want == 'true' and not have
1286 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1287 endif
1288 else
1289 have = false
1290 endif
1291 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1292 conf.set10(name, have)
1293endforeach
1294
1295enable_nss = false
1296foreach term : ['ENABLE_NSS_MYHOSTNAME',
1297 'ENABLE_NSS_MYMACHINES',
1298 'ENABLE_NSS_RESOLVE',
1299 'ENABLE_NSS_SYSTEMD']
1300 if conf.get(term) == 1
1301 enable_nss = true
1302 endif
1303endforeach
1304conf.set10('ENABLE_NSS', enable_nss)
1305
Yu Watanabe348b4432018-05-07 18:17:35 +09001306conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001307
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001308tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001309fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001310
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001311conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001312
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001313#####################################################################
1314
1315if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001316 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001317
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001318 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001319 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001320 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 elif efi_arch == 'x86_64'
1322 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001323 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 elif efi_arch == 'arm'
1325 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001326 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 elif efi_arch == 'aarch64'
1328 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001329 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 else
1331 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001332 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001335 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001337
Yu Watanabeac093402018-05-10 16:04:16 +09001338 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001339else
1340 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001341endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001342conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343
1344#####################################################################
1345
1346config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 output : 'config.h',
1348 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349
Yu Watanabe348b4432018-05-07 18:17:35 +09001350meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1351
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352includes = include_directories('src/basic',
1353 'src/shared',
1354 'src/systemd',
1355 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001356 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001357 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358 'src/resolve',
1359 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001360 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361 'src/login',
1362 'src/udev',
1363 'src/libudev',
1364 'src/core',
1365 'src/libsystemd/sd-bus',
1366 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001367 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001368 'src/libsystemd/sd-hwdb',
1369 'src/libsystemd/sd-id128',
1370 'src/libsystemd/sd-netlink',
1371 'src/libsystemd/sd-network',
1372 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001373 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374
1375add_project_arguments('-include', 'config.h', language : 'c')
1376
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377subdir('po')
1378subdir('catalog')
1379subdir('src/systemd')
1380subdir('src/basic')
1381subdir('src/libsystemd')
1382subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385
1386libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 'journal-core',
1388 libjournal_core_sources,
1389 journald_gperf_c,
1390 include_directories : includes,
1391 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001393libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001396 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001397 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 include_directories : includes,
1399 link_args : ['-shared',
1400 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001401 link_with : [libbasic,
1402 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001403 link_whole : [libsystemd_static,
1404 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 dependencies : [threads,
1406 librt,
1407 libxz,
1408 liblz4],
1409 link_depends : libsystemd_sym,
1410 install : true,
1411 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412
Davide Cavalca70848ec2018-04-09 02:43:35 -07001413static_libsystemd = get_option('static-libsystemd')
1414static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1415
1416install_libsystemd_static = static_library(
1417 'systemd',
1418 libsystemd_sources,
1419 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001420 basic_sources,
1421 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001422 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001423 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001424 build_by_default : static_libsystemd != 'false',
1425 install : static_libsystemd != 'false',
1426 install_dir : rootlibdir,
1427 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1428 dependencies : [threads,
1429 librt,
1430 libxz,
1431 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001432 libcap,
1433 libblkid,
1434 libmount,
1435 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001436 libgcrypt],
1437 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1438
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439############################################################
1440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001441# binaries that have --help and are intended for use by humans,
1442# usually, but not always, installed in /bin.
1443public_programs = []
1444
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445subdir('src/libudev')
1446subdir('src/shared')
1447subdir('src/core')
1448subdir('src/udev')
1449subdir('src/network')
1450
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001451subdir('src/analyze')
1452subdir('src/journal-remote')
1453subdir('src/coredump')
1454subdir('src/hostname')
1455subdir('src/import')
1456subdir('src/kernel-install')
1457subdir('src/locale')
1458subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001459subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001460subdir('src/nspawn')
1461subdir('src/resolve')
1462subdir('src/timedate')
1463subdir('src/timesync')
1464subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001465subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001466
1467subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001468subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001469subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001470subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001471
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001472############################################################
1473
1474# only static linking apart from libdl, to make sure that the
1475# module is linked to all libraries that it uses.
1476test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 'test-dlopen',
1478 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001479 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 include_directories : includes,
1481 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001482 dependencies : [libdl],
1483 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001484
Yu Watanabe08540a92018-07-18 09:25:57 +09001485foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001486 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001487 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1488 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001489
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001490 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 if condition
1492 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001493
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001495 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001496
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001497 nss = shared_library(
1498 'nss_' + module,
1499 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001500 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001501 version : '2',
1502 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001503 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1504 link_args : ['-Wl,-z,nodelete',
1505 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 '-Wl,--version-script=' + version_script_arg,
1507 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001508 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001509 libbasic],
1510 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001511 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001512 link_depends : sym,
1513 install : true,
1514 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001515
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001516 # We cannot use shared_module because it does not support version suffix.
1517 # Unfortunately shared_library insists on creating the symlink…
1518 meson.add_install_script('sh', '-c',
1519 'rm $DESTDIR@0@/libnss_@1@.so'
1520 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001521
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001522 if want_tests != 'false'
1523 test('dlopen-nss_' + module,
1524 test_dlopen,
1525 # path to dlopen must include a slash
1526 args : nss.full_path())
1527 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001529endforeach
1530
1531############################################################
1532
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533executable('systemd',
1534 systemd_sources,
1535 include_directories : includes,
1536 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001537 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538 dependencies : [threads,
1539 librt,
1540 libseccomp,
1541 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001542 libmount,
1543 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001544 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001545 install : true,
1546 install_dir : rootlibexecdir)
1547
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001548meson.add_install_script(meson_make_symlink,
1549 join_paths(rootlibexecdir, 'systemd'),
1550 join_paths(rootsbindir, 'init'))
1551
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001552exe = executable('systemd-analyze',
1553 systemd_analyze_sources,
1554 include_directories : includes,
1555 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001556 libshared],
1557 dependencies : [threads,
1558 librt,
1559 libseccomp,
1560 libselinux,
1561 libmount,
1562 libblkid],
1563 install_rpath : rootlibexecdir,
1564 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001565public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566
1567executable('systemd-journald',
1568 systemd_journald_sources,
1569 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001570 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001571 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001572 dependencies : [threads,
1573 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001574 liblz4,
1575 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001576 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577 install : true,
1578 install_dir : rootlibexecdir)
1579
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580exe = executable('systemd-cat',
1581 systemd_cat_sources,
1582 include_directories : includes,
1583 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001584 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001585 dependencies : [threads],
1586 install_rpath : rootlibexecdir,
1587 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001588public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001589
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001590exe = executable('journalctl',
1591 journalctl_sources,
1592 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001593 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594 dependencies : [threads,
1595 libqrencode,
1596 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001597 liblz4,
1598 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599 install_rpath : rootlibexecdir,
1600 install : true,
1601 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001602public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603
1604executable('systemd-getty-generator',
1605 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001606 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001607 link_with : [libshared],
1608 install_rpath : rootlibexecdir,
1609 install : true,
1610 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611
1612executable('systemd-debug-generator',
1613 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001615 link_with : [libshared],
1616 install_rpath : rootlibexecdir,
1617 install : true,
1618 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619
1620executable('systemd-fstab-generator',
1621 'src/fstab-generator/fstab-generator.c',
1622 'src/core/mount-setup.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
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001629if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001630 executable('30-systemd-environment-d-generator',
1631 'src/environment-d-generator/environment-d-generator.c',
1632 include_directories : includes,
1633 link_with : [libshared],
1634 install_rpath : rootlibexecdir,
1635 install : true,
1636 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001637
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001638 meson.add_install_script(meson_make_symlink,
1639 join_paths(sysconfdir, 'environment'),
1640 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641endif
1642
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001643if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 executable('systemd-hibernate-resume-generator',
1645 'src/hibernate-resume/hibernate-resume-generator.c',
1646 include_directories : includes,
1647 link_with : [libshared],
1648 install_rpath : rootlibexecdir,
1649 install : true,
1650 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001651
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 executable('systemd-hibernate-resume',
1653 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001654 include_directories : includes,
1655 link_with : [libshared],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659endif
1660
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001661if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001662 executable('systemd-gpt-auto-generator',
1663 'src/gpt-auto-generator/gpt-auto-generator.c',
1664 'src/basic/blkid-util.h',
1665 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001666 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 dependencies : libblkid,
1668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : systemgeneratordir)
1671
1672 exe = executable('systemd-dissect',
1673 'src/dissect/dissect.c',
1674 include_directories : includes,
1675 link_with : [libshared],
1676 install_rpath : rootlibexecdir,
1677 install : true,
1678 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001679 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680endif
1681
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001682if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 executable('systemd-resolved',
1684 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001685 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001686 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001687 libbasic_gcrypt,
1688 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001689 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001690 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 install : true,
1692 install_dir : rootlibexecdir)
1693
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001694 exe = executable('resolvectl',
1695 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001697 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001698 libbasic_gcrypt,
1699 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001701 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001702 libm,
1703 libidn],
1704 install_rpath : rootlibexecdir,
1705 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001706 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001707
1708 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001709 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001710 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001711
1712 meson.add_install_script(meson_make_symlink,
1713 join_paths(bindir, 'resolvectl'),
1714 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001715endif
1716
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001717if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 executable('systemd-logind',
1719 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001720 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001722 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001723 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 install_rpath : rootlibexecdir,
1726 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001728
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001729 exe = executable('loginctl',
1730 loginctl_sources,
1731 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001732 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001733 dependencies : [threads,
1734 liblz4,
1735 libxz],
1736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001739 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001740
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 exe = executable('systemd-inhibit',
1742 'src/login/inhibit.c',
1743 include_directories : includes,
1744 link_with : [libshared],
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001748 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001749
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001750 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001751 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 pam_systemd = shared_library(
1753 'pam_systemd',
1754 pam_systemd_c,
1755 name_prefix : '',
1756 include_directories : includes,
1757 link_args : ['-shared',
1758 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001759 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 libshared_static],
1761 dependencies : [threads,
1762 libpam,
1763 libpam_misc],
1764 link_depends : pam_systemd_sym,
1765 install : true,
1766 install_dir : pamlibdir)
1767
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001768 if want_tests != 'false'
1769 test('dlopen-pam_systemd',
1770 test_dlopen,
1771 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001772 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001773 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001776 executable('systemd-user-runtime-dir',
1777 user_runtime_dir_sources,
1778 include_directories : includes,
1779 link_with : [libshared],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : rootlibexecdir)
1783endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001784
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001785if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 executable('systemd-user-sessions',
1787 'src/user-sessions/user-sessions.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 exe = executable('bootctl',
1797 'src/boot/bootctl.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 dependencies : [libblkid],
1801 install_rpath : rootlibexecdir,
1802 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001803 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001804
1805 executable('systemd-bless-boot',
1806 'src/boot/bless-boot.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 dependencies : [libblkid],
1810 install_rpath : rootlibexecdir,
1811 install : true,
1812 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001813
1814 executable('systemd-bless-boot-generator',
1815 'src/boot/bless-boot-generator.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true,
1820 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821endif
1822
Lennart Poetteringf876f532018-06-25 16:07:33 +02001823executable('systemd-boot-check-no-failures',
1824 'src/boot/boot-check-no-failures.c',
1825 include_directories : includes,
1826 link_with : [libshared],
1827 dependencies : [libblkid],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : rootlibexecdir)
1831
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001832exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 dependencies : [threads],
1836 install_rpath : rootlibexecdir,
1837 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001838public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001839
Felipe Satelerf3794362018-05-22 15:08:57 -04001840
1841if get_option('link-systemctl-shared')
1842 systemctl_link_with = [libshared]
1843else
1844 systemctl_link_with = [libsystemd_static,
1845 libshared_static,
1846 libjournal_client,
1847 libbasic_gcrypt]
1848endif
1849
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001850exe = executable('systemctl', 'src/systemctl/systemctl.c',
1851 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001852 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001853 dependencies : [threads,
1854 libcap,
1855 libselinux,
1856 libxz,
1857 liblz4],
1858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001861public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001862
Lennart Poettering61d05782018-04-16 21:41:40 +02001863if conf.get('ENABLE_PORTABLED') == 1
1864 executable('systemd-portabled',
1865 systemd_portabled_sources,
1866 include_directories : includes,
1867 link_with : [libshared],
1868 dependencies : [threads],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
1872
1873 exe = executable('portablectl', 'src/portable/portablectl.c',
1874 include_directories : includes,
1875 link_with : [libshared],
1876 dependencies : [threads],
1877 install_rpath : rootlibexecdir,
1878 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001879 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001880 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001881endif
1882
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001883foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1884 meson.add_install_script(meson_make_symlink,
1885 join_paths(rootbindir, 'systemctl'),
1886 join_paths(rootsbindir, alias))
1887endforeach
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-backlight',
1891 'src/backlight/backlight.c',
1892 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001893 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897endif
1898
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001899if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 executable('systemd-rfkill',
1901 'src/rfkill/rfkill.c',
1902 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001903 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001907endif
1908
1909executable('systemd-system-update-generator',
1910 'src/system-update-generator/system-update-generator.c',
1911 include_directories : includes,
1912 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001913 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914 install : true,
1915 install_dir : systemgeneratordir)
1916
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001917if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 executable('systemd-cryptsetup',
1919 'src/cryptsetup/cryptsetup.c',
1920 include_directories : includes,
1921 link_with : [libshared],
1922 dependencies : [libcryptsetup],
1923 install_rpath : rootlibexecdir,
1924 install : true,
1925 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-cryptsetup-generator',
1928 'src/cryptsetup/cryptsetup-generator.c',
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [libcryptsetup],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 executable('systemd-veritysetup',
1937 'src/veritysetup/veritysetup.c',
1938 include_directories : includes,
1939 link_with : [libshared],
1940 dependencies : [libcryptsetup],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 executable('systemd-veritysetup-generator',
1946 'src/veritysetup/veritysetup-generator.c',
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [libcryptsetup],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001953endif
1954
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001955if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 executable('systemd-sysv-generator',
1957 'src/sysv-generator/sysv-generator.c',
1958 include_directories : includes,
1959 link_with : [libshared],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001964 executable('systemd-rc-local-generator',
1965 'src/rc-local-generator/rc-local-generator.c',
1966 include_directories : includes,
1967 link_with : [libshared],
1968 install_rpath : rootlibexecdir,
1969 install : true,
1970 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001971endif
1972
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001973if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 executable('systemd-hostnamed',
1975 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001976 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001977 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001978 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 install : true,
1980 install_dir : rootlibexecdir)
1981
1982 exe = executable('hostnamectl',
1983 'src/hostname/hostnamectl.c',
1984 include_directories : includes,
1985 link_with : [libshared],
1986 install_rpath : rootlibexecdir,
1987 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001988 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989endif
1990
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001991if conf.get('ENABLE_LOCALED') == 1
1992 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 # logind will load libxkbcommon.so dynamically on its own
1994 deps = [libdl]
1995 else
1996 deps = []
1997 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001998
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001999 executable('systemd-localed',
2000 systemd_localed_sources,
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-Szmek37efbbd2017-04-17 19:25:00 -04002003 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 install : true,
2006 install_dir : rootlibexecdir)
2007
2008 exe = executable('localectl',
2009 localectl_sources,
2010 include_directories : includes,
2011 link_with : [libshared],
2012 install_rpath : rootlibexecdir,
2013 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002014 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015endif
2016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002017if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 executable('systemd-timedated',
2019 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002020 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002021 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 install_rpath : rootlibexecdir,
2023 install : true,
2024 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002025endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026
Yu Watanabe6129ec82018-05-03 18:07:43 +09002027if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 exe = executable('timedatectl',
2029 'src/timedate/timedatectl.c',
2030 include_directories : includes,
2031 install_rpath : rootlibexecdir,
2032 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002033 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002035 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036endif
2037
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002038if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 executable('systemd-timesyncd',
2040 systemd_timesyncd_sources,
2041 include_directories : includes,
2042 link_with : [libshared],
2043 dependencies : [threads,
2044 libm],
2045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002048
2049 executable('systemd-time-wait-sync',
2050 'src/time-wait-sync/time-wait-sync.c',
2051 include_directories : includes,
2052 link_with : [libshared],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002056endif
2057
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002058if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 executable('systemd-machined',
2060 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002061 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 link_with : [libmachine_core,
2063 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002064 install_rpath : rootlibexecdir,
2065 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002066 install_dir : rootlibexecdir)
2067
2068 exe = executable('machinectl',
2069 'src/machine/machinectl.c',
2070 include_directories : includes,
2071 link_with : [libshared],
2072 dependencies : [threads,
2073 libxz,
2074 liblz4],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002078 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079endif
2080
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002081if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 executable('systemd-importd',
2083 systemd_importd_sources,
2084 include_directories : includes,
2085 link_with : [libshared],
2086 dependencies : [threads],
2087 install_rpath : rootlibexecdir,
2088 install : true,
2089 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 systemd_pull = executable('systemd-pull',
2092 systemd_pull_sources,
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [libcurl,
2096 libz,
2097 libbzip2,
2098 libxz,
2099 libgcrypt],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002103
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 systemd_import = executable('systemd-import',
2105 systemd_import_sources,
2106 include_directories : includes,
2107 link_with : [libshared],
2108 dependencies : [libcurl,
2109 libz,
2110 libbzip2,
2111 libxz],
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_export = executable('systemd-export',
2117 systemd_export_sources,
2118 include_directories : includes,
2119 link_with : [libshared],
2120 dependencies : [libcurl,
2121 libz,
2122 libbzip2,
2123 libxz],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
2127 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128endif
2129
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002130if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002131 exe = executable('systemd-journal-upload',
2132 systemd_journal_upload_sources,
2133 include_directories : includes,
2134 link_with : [libshared],
2135 dependencies : [threads,
2136 libcurl,
2137 libgnutls,
2138 libxz,
2139 liblz4],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002143 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144endif
2145
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002146if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002147 s_j_remote = executable('systemd-journal-remote',
2148 systemd_journal_remote_sources,
2149 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002150 link_with : [libshared,
2151 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 dependencies : [threads,
2153 libmicrohttpd,
2154 libgnutls,
2155 libxz,
2156 liblz4],
2157 install_rpath : rootlibexecdir,
2158 install : true,
2159 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002161 s_j_gatewayd = executable('systemd-journal-gatewayd',
2162 systemd_journal_gatewayd_sources,
2163 include_directories : includes,
2164 link_with : [libshared],
2165 dependencies : [threads,
2166 libmicrohttpd,
2167 libgnutls,
2168 libxz,
2169 liblz4],
2170 install_rpath : rootlibexecdir,
2171 install : true,
2172 install_dir : rootlibexecdir)
2173 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174endif
2175
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002176if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002177 executable('systemd-coredump',
2178 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002180 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002181 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 libacl,
2183 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184 libxz,
2185 liblz4],
2186 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002187 install : true,
2188 install_dir : rootlibexecdir)
2189
2190 exe = executable('coredumpctl',
2191 coredumpctl_sources,
2192 include_directories : includes,
2193 link_with : [libshared],
2194 dependencies : [threads,
2195 libxz,
2196 liblz4],
2197 install_rpath : rootlibexecdir,
2198 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002199 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200endif
2201
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002202if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 exe = executable('systemd-binfmt',
2204 'src/binfmt/binfmt.c',
2205 include_directories : includes,
2206 link_with : [libshared],
2207 install_rpath : rootlibexecdir,
2208 install : true,
2209 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002210 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002211
2212 meson.add_install_script('sh', '-c',
2213 mkdir_p.format(binfmtdir))
2214 meson.add_install_script('sh', '-c',
2215 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2216endif
2217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 executable('systemd-vconsole-setup',
2220 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002221 include_directories : includes,
2222 link_with : [libshared],
2223 install_rpath : rootlibexecdir,
2224 install : true,
2225 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226endif
2227
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002228if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002229 executable('systemd-random-seed',
2230 'src/random-seed/random-seed.c',
2231 include_directories : includes,
2232 link_with : [libshared],
2233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236endif
2237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002238if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 executable('systemd-firstboot',
2240 'src/firstboot/firstboot.c',
2241 include_directories : includes,
2242 link_with : [libshared],
2243 dependencies : [libcrypt],
2244 install_rpath : rootlibexecdir,
2245 install : true,
2246 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247endif
2248
2249executable('systemd-remount-fs',
2250 'src/remount-fs/remount-fs.c',
2251 'src/core/mount-setup.c',
2252 'src/core/mount-setup.h',
2253 include_directories : includes,
2254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002255 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256 install : true,
2257 install_dir : rootlibexecdir)
2258
2259executable('systemd-machine-id-setup',
2260 'src/machine-id-setup/machine-id-setup-main.c',
2261 'src/core/machine-id-setup.c',
2262 'src/core/machine-id-setup.h',
2263 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002264 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002265 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266 install : true,
2267 install_dir : rootbindir)
2268
2269executable('systemd-fsck',
2270 'src/fsck/fsck.c',
2271 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002273 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274 install : true,
2275 install_dir : rootlibexecdir)
2276
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002277executable('systemd-growfs',
2278 'src/partition/growfs.c',
2279 include_directories : includes,
2280 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002281 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002282 install_rpath : rootlibexecdir,
2283 install : true,
2284 install_dir : rootlibexecdir)
2285
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002286executable('systemd-makefs',
2287 'src/partition/makefs.c',
2288 include_directories : includes,
2289 link_with : [libshared],
2290 install_rpath : rootlibexecdir,
2291 install : true,
2292 install_dir : rootlibexecdir)
2293
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294executable('systemd-sleep',
2295 'src/sleep/sleep.c',
2296 include_directories : includes,
2297 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002298 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299 install : true,
2300 install_dir : rootlibexecdir)
2301
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302exe = executable('systemd-sysctl',
2303 'src/sysctl/sysctl.c',
2304 include_directories : includes,
2305 link_with : [libshared],
2306 install_rpath : rootlibexecdir,
2307 install : true,
2308 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002309public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310
2311executable('systemd-ac-power',
2312 'src/ac-power/ac-power.c',
2313 include_directories : includes,
2314 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002315 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316 install : true,
2317 install_dir : rootlibexecdir)
2318
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002319exe = executable('systemd-detect-virt',
2320 'src/detect-virt/detect-virt.c',
2321 include_directories : includes,
2322 link_with : [libshared],
2323 install_rpath : rootlibexecdir,
2324 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002325public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002326
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002327exe = executable('systemd-delta',
2328 'src/delta/delta.c',
2329 include_directories : includes,
2330 link_with : [libshared],
2331 install_rpath : rootlibexecdir,
2332 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002333public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335exe = executable('systemd-escape',
2336 'src/escape/escape.c',
2337 include_directories : includes,
2338 link_with : [libshared],
2339 install_rpath : rootlibexecdir,
2340 install : true,
2341 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002342public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344exe = executable('systemd-notify',
2345 'src/notify/notify.c',
2346 include_directories : includes,
2347 link_with : [libshared],
2348 install_rpath : rootlibexecdir,
2349 install : true,
2350 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002351public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352
2353executable('systemd-volatile-root',
2354 'src/volatile-root/volatile-root.c',
2355 include_directories : includes,
2356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002357 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358 install : true,
2359 install_dir : rootlibexecdir)
2360
2361executable('systemd-cgroups-agent',
2362 'src/cgroups-agent/cgroups-agent.c',
2363 include_directories : includes,
2364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002365 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366 install : true,
2367 install_dir : rootlibexecdir)
2368
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002369exe = executable('systemd-id128',
2370 'src/id128/id128.c',
2371 include_directories : includes,
2372 link_with : [libshared],
2373 install_rpath : rootlibexecdir,
2374 install : true)
2375public_programs += exe
2376
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377exe = executable('systemd-path',
2378 'src/path/path.c',
2379 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002380 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381 install_rpath : rootlibexecdir,
2382 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002383public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385exe = executable('systemd-ask-password',
2386 'src/ask-password/ask-password.c',
2387 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002388 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002392public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393
2394executable('systemd-reply-password',
2395 'src/reply-password/reply-password.c',
2396 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002397 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002398 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399 install : true,
2400 install_dir : rootlibexecdir)
2401
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402exe = executable('systemd-tty-ask-password-agent',
2403 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2404 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406 install_rpath : rootlibexecdir,
2407 install : true,
2408 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002409public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-cgls',
2412 'src/cgls/cgls.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-cgtop',
2420 'src/cgtop/cgtop.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)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002425public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426
2427executable('systemd-initctl',
2428 'src/initctl/initctl.c',
2429 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002430 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002431 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432 install : true,
2433 install_dir : rootlibexecdir)
2434
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435exe = executable('systemd-mount',
2436 'src/mount/mount-tool.c',
2437 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439 install_rpath : rootlibexecdir,
2440 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002441public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002443meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002444 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002445
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002446exe = executable('systemd-run',
2447 'src/run/run.c',
2448 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002449 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002450 install_rpath : rootlibexecdir,
2451 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002452public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454exe = executable('systemd-stdio-bridge',
2455 'src/stdio-bridge/stdio-bridge.c',
2456 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002457 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002458 install_rpath : rootlibexecdir,
2459 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002460public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002462exe = executable('busctl',
2463 'src/busctl/busctl.c',
2464 'src/busctl/busctl-introspect.c',
2465 'src/busctl/busctl-introspect.h',
2466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002467 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002468 install_rpath : rootlibexecdir,
2469 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002470public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002472if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 exe = executable('systemd-sysusers',
2474 'src/sysusers/sysusers.c',
2475 include_directories : includes,
2476 link_with : [libshared],
2477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002480 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481endif
2482
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002483if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002484 exe = executable('systemd-tmpfiles',
2485 'src/tmpfiles/tmpfiles.c',
2486 include_directories : includes,
2487 link_with : [libshared],
2488 dependencies : [libacl],
2489 install_rpath : rootlibexecdir,
2490 install : true,
2491 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002493
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002494 if want_tests != 'false'
2495 test('test-systemd-tmpfiles',
2496 test_systemd_tmpfiles_py,
2497 # https://github.com/mesonbuild/meson/issues/2681
2498 args : exe.full_path())
2499 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002500endif
2501
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002502if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002503 exe = executable('systemd-hwdb',
2504 'src/hwdb/hwdb.c',
2505 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2506 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002507 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002508 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002509 install : true,
2510 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002511 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512endif
2513
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002514if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002515 executable('systemd-quotacheck',
2516 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 install_rpath : rootlibexecdir,
2520 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522endif
2523
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524exe = executable('systemd-socket-proxyd',
2525 'src/socket-proxy/socket-proxyd.c',
2526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 dependencies : [threads],
2529 install_rpath : rootlibexecdir,
2530 install : true,
2531 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002532public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002533
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002534exe = executable('systemd-udevd',
2535 systemd_udevd_sources,
2536 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002537 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002540 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002541 dependencies : [threads,
2542 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002544 libacl,
2545 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002546 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002547 install : true,
2548 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002549public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002551exe = executable('udevadm',
2552 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002553 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002554 include_directories : includes,
2555 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002557 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002558 dependencies : [threads,
2559 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002561 libacl,
2562 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002563 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002564 install : true,
2565 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002566public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002567
2568executable('systemd-shutdown',
2569 systemd_shutdown_sources,
2570 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002571 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002572 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002573 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002574 install : true,
2575 install_dir : rootlibexecdir)
2576
2577executable('systemd-update-done',
2578 'src/update-done/update-done.c',
2579 include_directories : includes,
2580 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002581 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582 install : true,
2583 install_dir : rootlibexecdir)
2584
2585executable('systemd-update-utmp',
2586 'src/update-utmp/update-utmp.c',
2587 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002588 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002591 install : true,
2592 install_dir : rootlibexecdir)
2593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002594if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 executable('systemd-modules-load',
2596 'src/modules-load/modules-load.c',
2597 include_directories : includes,
2598 link_with : [libshared],
2599 dependencies : [libkmod],
2600 install_rpath : rootlibexecdir,
2601 install : true,
2602 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002603
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002604 meson.add_install_script('sh', '-c',
2605 mkdir_p.format(modulesloaddir))
2606 meson.add_install_script('sh', '-c',
2607 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608endif
2609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610exe = executable('systemd-nspawn',
2611 systemd_nspawn_sources,
2612 'src/core/mount-setup.c', # FIXME: use a variable?
2613 'src/core/mount-setup.h',
2614 'src/core/loopback-setup.c',
2615 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002616 include_directories : includes,
2617 link_with : [libnspawn_core,
2618 libshared],
2619 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620 install_rpath : rootlibexecdir,
2621 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002622public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002624if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002625 executable('systemd-networkd',
2626 systemd_networkd_sources,
2627 include_directories : includes,
2628 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002629 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002630 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002631 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002632 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002633 install_rpath : rootlibexecdir,
2634 install : true,
2635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002637 executable('systemd-networkd-wait-online',
2638 systemd_networkd_wait_online_sources,
2639 include_directories : includes,
2640 link_with : [libnetworkd_core,
2641 libshared],
2642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002646 exe = executable('networkctl',
2647 networkctl_sources,
2648 include_directories : includes,
2649 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002650 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002651 install_rpath : rootlibexecdir,
2652 install : true,
2653 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002654 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002655endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002656
2657executable('systemd-sulogin-shell',
2658 ['src/sulogin-shell/sulogin-shell.c'],
2659 include_directories : includes,
2660 link_with : [libshared],
2661 install_rpath : rootlibexecdir,
2662 install : true,
2663 install_dir : rootlibexecdir)
2664
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002665############################################################
2666
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002667custom_target(
2668 'systemd-runtest.env',
2669 output : 'systemd-runtest.env',
2670 command : ['sh', '-c', '{ ' +
2671 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002672 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002673 '} >@OUTPUT@'],
2674 build_by_default : true)
2675
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002676foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002677 sources = tuple[0]
2678 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2679 dependencies = tuple[2]
2680 condition = tuple.length() >= 4 ? tuple[3] : ''
2681 type = tuple.length() >= 5 ? tuple[4] : ''
2682 defs = tuple.length() >= 6 ? tuple[5] : []
2683 incs = tuple.length() >= 7 ? tuple[6] : includes
2684 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002685
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002686 name = sources[0].split('/')[-1].split('.')[0]
2687 if type.startswith('timeout=')
2688 timeout = type.split('=')[1].to_int()
2689 type = ''
2690 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002691
2692 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002693 exe = executable(
2694 name,
2695 sources,
2696 include_directories : incs,
2697 link_with : link_with,
2698 dependencies : dependencies,
2699 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002700 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002701 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002702 install : install_tests,
2703 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002704
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002705 if type == 'manual'
2706 message('@0@ is a manual test'.format(name))
2707 elif type == 'unsafe' and want_tests != 'unsafe'
2708 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002709 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 test(name, exe,
2711 env : test_env,
2712 timeout : timeout)
2713 endif
2714 else
2715 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2716 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002717endforeach
2718
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002719exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720 'test-libsystemd-sym',
2721 test_libsystemd_sym_c,
2722 include_directories : includes,
2723 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002724 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 install : install_tests,
2726 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002727if want_tests != 'false'
2728 test('test-libsystemd-sym', exe)
2729endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002730
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002731exe = executable(
2732 'test-libsystemd-static-sym',
2733 test_libsystemd_sym_c,
2734 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002735 link_with : [install_libsystemd_static],
2736 dependencies : [threads], # threads is already included in dependencies on the library,
2737 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002738 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002739 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002740 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002741if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002742 test('test-libsystemd-static-sym', exe)
2743endif
2744
2745exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 'test-libudev-sym',
2747 test_libudev_sym_c,
2748 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002749 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002750 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002751 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002752 install : install_tests,
2753 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002754if want_tests != 'false'
2755 test('test-libudev-sym', exe)
2756endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002757
2758exe = executable(
2759 'test-libudev-static-sym',
2760 test_libudev_sym_c,
2761 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002762 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002763 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002764 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002765 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002766 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002767if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002768 test('test-libudev-static-sym', exe)
2769endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002770
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002771############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002772
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002773fuzzer_exes = []
2774
Michael Olbrich59967402018-11-11 11:27:35 +01002775if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002776foreach tuple : fuzzers
2777 sources = tuple[0]
2778 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2779 dependencies = tuple[2]
2780 defs = tuple.length() >= 4 ? tuple[3] : []
2781 incs = tuple.length() >= 5 ? tuple[4] : includes
2782
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002783 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002784 dependencies += fuzzing_engine
2785 else
2786 sources += 'src/fuzz/fuzz-main.c'
2787 endif
2788
2789 name = sources[0].split('/')[-1].split('.')[0]
2790
2791 fuzzer_exes += executable(
2792 name,
2793 sources,
2794 include_directories : [incs, include_directories('src/fuzz')],
2795 link_with : link_with,
2796 dependencies : dependencies,
2797 c_args : defs,
2798 install : false)
2799endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002800endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002801
2802run_target('fuzzers',
2803 depends : fuzzer_exes,
2804 command : ['true'])
2805
2806############################################################
2807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002808make_directive_index_py = find_program('tools/make-directive-index.py')
2809make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002810xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002811hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002812
2813subdir('units')
2814subdir('sysctl.d')
2815subdir('sysusers.d')
2816subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002817subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002818subdir('hwdb')
2819subdir('network')
2820subdir('man')
2821subdir('shell-completion/bash')
2822subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002823subdir('docs/sysvinit')
2824subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002825
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002826install_subdir('factory/etc',
2827 install_dir : factorydir)
2828
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002829install_data('xorg/50-systemd-user.sh',
2830 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002831install_data('modprobe.d/systemd.conf',
2832 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002833install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002835 'NEWS',
2836 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302837 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002838 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002839 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302840 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002841 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002842 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002843 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002844 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2845 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002846
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002847meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2848meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2849
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002850############################################################
2851
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002852meson_check_help = find_program('tools/meson-check-help.sh')
2853
2854foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002855 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002856 if want_tests != 'false'
2857 test('check-help-' + name,
2858 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002859 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002860 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002861endforeach
2862
2863############################################################
2864
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002865# Enable tests for all supported sanitizers
2866foreach tuple : sanitizers
2867 sanitizer = tuple[0]
2868 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002869
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002870 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002871 prev = ''
2872 foreach p : fuzz_regression_tests
2873 b = p.split('/')[-2]
2874 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002875
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002876 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002877
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002878 if name != prev
2879 if want_tests == 'false'
2880 message('Not compiling @0@ because tests is set to false'.format(name))
2881 elif slow_tests
2882 exe = custom_target(
2883 name,
2884 output : name,
2885 depends : build,
2886 command : [env, 'ln', '-fs',
2887 join_paths(build.full_path(), b),
2888 '@OUTPUT@'],
2889 build_by_default : true)
2890 else
2891 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2892 endif
2893 endif
2894 prev = name
2895
2896 if want_tests != 'false' and slow_tests
2897 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2898 env,
2899 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002900 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002901 endif
2902 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002903 endif
2904endforeach
2905
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002906
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002907############################################################
2908
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002909if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002910 all_files = run_command(
2911 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002912 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002913 'ls-files',
2914 ':/*.[ch]'])
2915 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002916
userwithuide85a6902017-08-09 13:41:44 +00002917 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002918 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002919 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002920 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002921 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002922 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002923 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002924endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002925
2926if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002927 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002928 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002929 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002930 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002931endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002932
2933if git.found()
2934 git_head = run_command(
2935 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002936 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002937 'rev-parse', 'HEAD']).stdout().strip()
2938 git_head_short = run_command(
2939 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002940 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002941 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2942
2943 run_target(
2944 'git-snapshot',
2945 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002946 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002947 git_head_short),
2948 '--prefix', 'systemd-@0@/'.format(git_head),
2949 'HEAD'])
2950endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002951
2952############################################################
2953
Lennart Poettering51b13862017-12-20 12:51:14 +01002954meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2955run_target(
2956 'check-api-docs',
2957 depends : [man, libsystemd, libudev],
2958 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2959
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002960run_target(
2961 'make-index-md',
2962 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2963
Lennart Poettering51b13862017-12-20 12:51:14 +01002964############################################################
2965
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002966status = [
2967 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2968
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002969 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002970 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002971 'prefix directory: @0@'.format(prefixdir),
2972 'rootprefix directory: @0@'.format(rootprefixdir),
2973 'sysconf directory: @0@'.format(sysconfdir),
2974 'include directory: @0@'.format(includedir),
2975 'lib directory: @0@'.format(libdir),
2976 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002977 'SysV init scripts: @0@'.format(sysvinit_path),
2978 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002979 'PAM modules directory: @0@'.format(pamlibdir),
2980 'PAM configuration directory: @0@'.format(pamconfdir),
2981 'RPM macros directory: @0@'.format(rpmmacrosdir),
2982 'modprobe.d directory: @0@'.format(modprobedir),
2983 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2984 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2985 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2986 'bash completions directory: @0@'.format(bashcompletiondir),
2987 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002988 'extra start script: @0@'.format(get_option('rc-local')),
2989 'extra stop script: @0@'.format(get_option('halt-local')),
2990 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2991 get_option('debug-tty')),
2992 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002993 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002994 'maximum system UID: @0@'.format(system_uid_max),
2995 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002996 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2997 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2998 'minimum container UID base: @0@'.format(container_uid_base_min),
2999 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003000 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003001 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003002 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003003 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003004 'nobody user name: @0@'.format(nobody_user),
3005 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003006 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003007 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003008
3009 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003010 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003011 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3012 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3013
3014alt_dns_servers = '\n '.join(dns_servers.split(' '))
3015alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3016status += [
3017 'default DNS servers: @0@'.format(alt_dns_servers),
3018 'default NTP servers: @0@'.format(alt_ntp_servers)]
3019
3020alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3021 '@@0@'.format(time_epoch)).stdout().strip()
3022status += [
3023 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3024
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003025status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003026 'static libsystemd: @0@'.format(static_libsystemd),
3027 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003028
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003029# TODO:
3030# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3031# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3032# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3033
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003034if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003035 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003036
3037 if have_gnu_efi
3038 status += [
3039 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3040 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003041 'EFI lib directory: @0@'.format(efi_libdir),
3042 'EFI lds directory: @0@'.format(efi_ldsdir),
3043 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003044 endif
3045endif
3046
3047found = []
3048missing = []
3049
3050foreach tuple : [
3051 ['libcryptsetup'],
3052 ['PAM'],
3053 ['AUDIT'],
3054 ['IMA'],
3055 ['AppArmor'],
3056 ['SELinux'],
3057 ['SECCOMP'],
3058 ['SMACK'],
3059 ['zlib'],
3060 ['xz'],
3061 ['lz4'],
3062 ['bzip2'],
3063 ['ACL'],
3064 ['gcrypt'],
3065 ['qrencode'],
3066 ['microhttpd'],
3067 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003068 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003069 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003070 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003071 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003072 ['libidn'],
3073 ['libiptc'],
3074 ['elfutils'],
3075 ['binfmt'],
3076 ['vconsole'],
3077 ['quotacheck'],
3078 ['tmpfiles'],
3079 ['environment.d'],
3080 ['sysusers'],
3081 ['firstboot'],
3082 ['randomseed'],
3083 ['backlight'],
3084 ['rfkill'],
3085 ['logind'],
3086 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003087 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 ['importd'],
3089 ['hostnamed'],
3090 ['timedated'],
3091 ['timesyncd'],
3092 ['localed'],
3093 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003094 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003095 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3096 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 ['coredump'],
3098 ['polkit'],
3099 ['legacy pkla', install_polkit_pkla],
3100 ['efi'],
3101 ['gnu-efi', have_gnu_efi],
3102 ['kmod'],
3103 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003104 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003105 ['blkid'],
3106 ['dbus'],
3107 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003108 ['nss-myhostname'],
3109 ['nss-mymachines'],
3110 ['nss-resolve'],
3111 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003112 ['hwdb'],
3113 ['tpm'],
3114 ['man pages', want_man],
3115 ['html pages', want_html],
3116 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 ['SysV compat'],
3118 ['utmp'],
3119 ['ldconfig'],
3120 ['hibernate'],
3121 ['adm group', get_option('adm-group')],
3122 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003123 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003124 ['debug hashmap'],
3125 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003126 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003127 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003128 ['link-udev-shared', get_option('link-udev-shared')],
3129 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003130]
3131
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003132 if tuple.length() >= 2
3133 cond = tuple[1]
3134 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003135 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3136 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003137 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003138 endif
3139 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003140 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003141 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003142 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003143 endif
3144endforeach
3145
3146status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003147 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003148 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003149 '',
3150 'disabled features: @0@'.format(', '.join(missing)),
3151 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003152message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003153
3154if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003155 warning('\n' +
3156 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3157 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3158 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003159endif