blob: 8766e7b01829a3b6fc0466a97e042be40ee93c23 [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
76# join_paths ignore the preceding arguments if an absolute component is
77# encountered, so this should canonicalize various paths when they are
78# absolute or relative.
79prefixdir = get_option('prefix')
80if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040081 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040082endif
83bindir = join_paths(prefixdir, get_option('bindir'))
84libdir = join_paths(prefixdir, get_option('libdir'))
85sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
86includedir = join_paths(prefixdir, get_option('includedir'))
87datadir = join_paths(prefixdir, get_option('datadir'))
88localstatedir = join_paths('/', get_option('localstatedir'))
89
90rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010091rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
93
94rootlibdir = get_option('rootlibdir')
95if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040096 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040097endif
98
99# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200100pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
101pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400102polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
103polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
104polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
105varlogdir = join_paths(localstatedir, 'log')
106xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900107rpmmacrosdir = get_option('rpmmacrosdir')
108if rpmmacrosdir != 'no'
109 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
110endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200111modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400112
113# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400114pkgdatadir = join_paths(datadir, 'systemd')
115environmentdir = join_paths(prefixdir, 'lib/environment.d')
116pkgsysconfdir = join_paths(sysconfdir, 'systemd')
117userunitdir = join_paths(prefixdir, 'lib/systemd/user')
118userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
119tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
120sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
121sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
122binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
123modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
124networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
125pkgincludedir = join_paths(includedir, 'systemd')
126systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
127usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
128systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
129userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
130systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
131systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
132systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
133systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
134udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
135udevhomedir = udevlibexecdir
136udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
137udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
138catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
139kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
140factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400141bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
142testsdir = join_paths(prefixdir, 'lib/systemd/tests')
143systemdstatedir = join_paths(localstatedir, 'lib/systemd')
144catalogstatedir = join_paths(systemdstatedir, 'catalog')
145randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200146profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400147
tblume75aaade2018-02-01 22:46:15 +0100148docdir = get_option('docdir')
149if docdir == ''
150 docdir = join_paths(datadir, 'doc/systemd')
151endif
152
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400153dbuspolicydir = get_option('dbuspolicydir')
154if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400155 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156endif
157
158dbussessionservicedir = get_option('dbussessionservicedir')
159if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400160 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400161endif
162
163dbussystemservicedir = get_option('dbussystemservicedir')
164if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400165 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166endif
167
168pamlibdir = get_option('pamlibdir')
169if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
173pamconfdir = get_option('pamconfdir')
174if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400175 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176endif
177
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100178memory_accounting_default = get_option('memory-accounting-default')
179
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400181conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
183conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
184conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400185conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
186conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100187
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100188conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100189
Michael Bieble17e5ba2017-04-13 10:30:56 -0400190conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400191conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
192conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
194conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
195conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
196conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100197conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100198conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400199conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
200conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
201conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
202conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
203conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100204conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400205conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400206conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
207conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400208conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
209conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
210conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
211conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
212conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
213conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400214conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
215conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700216conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700217conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400218conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400220conf.set_quoted('LIBDIR', libdir)
221conf.set_quoted('ROOTLIBDIR', rootlibdir)
222conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
223conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400224conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
225conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
226conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
227conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
228conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
229conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100230conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100231conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400232
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('exec_prefix', prefixdir)
235substs.set('libdir', libdir)
236substs.set('rootlibdir', rootlibdir)
237substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('bindir', bindir)
240substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241substs.set('rootlibexecdir', rootlibexecdir)
242substs.set('systemunitdir', systemunitdir)
243substs.set('userunitdir', userunitdir)
244substs.set('systempresetdir', systempresetdir)
245substs.set('userpresetdir', userpresetdir)
246substs.set('udevhwdbdir', udevhwdbdir)
247substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400248substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200249substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400250substs.set('catalogdir', catalogdir)
251substs.set('tmpfilesdir', tmpfilesdir)
252substs.set('sysusersdir', sysusersdir)
253substs.set('sysctldir', sysctldir)
254substs.set('binfmtdir', binfmtdir)
255substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200256substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400257substs.set('systemgeneratordir', systemgeneratordir)
258substs.set('usergeneratordir', usergeneratordir)
259substs.set('systemenvgeneratordir', systemenvgeneratordir)
260substs.set('userenvgeneratordir', userenvgeneratordir)
261substs.set('systemshutdowndir', systemshutdowndir)
262substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400263substs.set('VARLOGDIR', varlogdir)
264substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400265substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
266substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
268substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
269substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
270substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100271substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
273#####################################################################
274
275cc = meson.get_compiler('c')
276pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400277check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100278meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400279
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200280want_tests = get_option('tests')
281slow_tests = want_tests != 'false' and get_option('slow-tests')
282install_tests = get_option('install-tests')
283
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200284cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200285if cxx.found()
286 # Used only for tests
287 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200288 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200289else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200290 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400291endif
292
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500293if want_libfuzzer
294 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200295elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500296 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
297endif
298
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900299possible_cc_flags = [
300 '-Wextra',
301 '-Werror=undef',
302 '-Wlogical-op',
303 '-Wmissing-include-dirs',
304 '-Wold-style-definition',
305 '-Wpointer-arith',
306 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900307 '-Wfloat-equal',
308 '-Wsuggest-attribute=noreturn',
309 '-Werror=missing-prototypes',
310 '-Werror=implicit-function-declaration',
311 '-Werror=missing-declarations',
312 '-Werror=return-type',
313 '-Werror=incompatible-pointer-types',
314 '-Werror=format=2',
315 '-Wstrict-prototypes',
316 '-Wredundant-decls',
317 '-Wmissing-noreturn',
318 '-Wimplicit-fallthrough=5',
319 '-Wshadow',
320 '-Wendif-labels',
321 '-Wstrict-aliasing=2',
322 '-Wwrite-strings',
323 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200324 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200325 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900326 '-Wdate-time',
327 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700328
329 # negative arguments are correctly detected starting with meson 0.46.
330 '-Wno-unused-parameter',
331 '-Wno-missing-field-initializers',
332 '-Wno-unused-result',
333 '-Wno-format-signedness',
334
335 # work-around for gcc 7.1 turning this on on its own.
336 '-Wno-error=nonnull',
337
338 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
339 # optimizations enabled, producing essentially false positives.
340 '-Wno-maybe-uninitialized',
341
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900342 '-ffast-math',
343 '-fno-common',
344 '-fdiagnostics-show-option',
345 '-fno-strict-aliasing',
346 '-fvisibility=hidden',
347 '-fstack-protector',
348 '-fstack-protector-strong',
349 '--param=ssp-buffer-size=4',
350]
351
352# --as-needed and --no-undefined are provided by meson by default,
353# run mesonconf to see what is enabled
354possible_link_flags = [
355 '-Wl,-z,relro',
356 '-Wl,-z,now',
357]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400358
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500359# the oss-fuzz fuzzers are not built with -fPIE, so don't
360# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500361if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900362 possible_cc_flags += '-fPIE'
363 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500364endif
365
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900366if cc.get_id() == 'clang'
367 possible_cc_flags += [
368 '-Wno-typedef-redefinition',
369 '-Wno-gnu-variable-sized-type-not-at-end',
370 ]
371endif
372
373if get_option('buildtype') != 'debug'
374 possible_cc_flags += [
375 '-ffunction-sections',
376 '-fdata-sections',
377 ]
378
379 possible_link_flags += '-Wl,--gc-sections'
380endif
381
382add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900383add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900384
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800385if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386 #include <time.h>
387 #include <inttypes.h>
388 typedef uint64_t usec_t;
389 usec_t now(clockid_t clock);
390 int main(void) {
391 struct timespec now;
392 return 0;
393 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800394''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400395 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400396endif
397
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200398cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400399
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400#####################################################################
401# compilation result tests
402
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400403conf.set('_GNU_SOURCE', true)
404conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405
406conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
412conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
413
414decl_headers = '''
415#include <uchar.h>
416#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000417#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100418#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400420
421foreach decl : ['char16_t',
422 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000424 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100425 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400427
428 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200429 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
430
431 if decl == 'struct statx'
432 if have
433 want_linux_stat_h = false
434 else
435 have = cc.sizeof(decl,
436 prefix : decl_headers + '#include <linux/stat.h>',
437 args : '-D_GNU_SOURCE') > 0
438 want_linux_stat_h = have
439 endif
440 endif
441
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200442 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400443endforeach
444
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200445conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700446
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
448 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
449 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
450 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530451 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
453 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
454 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
455 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
456 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530457 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400458 # if_tunnel.h is buggy and cannot be included on its own
459 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
460 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
461 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
462 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
463 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
464 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
465 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530466 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ['NDA_IFINDEX', 'linux/neighbour.h'],
468 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000469 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400470 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530471 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530472 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
473 ['FOU_CMD_GET', 'linux/fou.h'],
474 ['FOU_ENCAP_GUE', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400476 prefix = decl.length() > 2 ? decl[2] : ''
477 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200478 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479endforeach
480
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400481foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483endforeach
484
485foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100487 ['gettid', '''#include <sys/types.h>
488 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100489 ['pivot_root', '''#include <stdlib.h>
490 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100491 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400492 #include <sys/stat.h>
493 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100494 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100495 ['renameat2', '''#include <stdio.h>
496 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400497 ['kcmp', '''#include <linux/kcmp.h>'''],
498 ['keyctl', '''#include <sys/types.h>
499 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200502 ['bpf', '''#include <sys/syscall.h>
503 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100504 ['statx', '''#include <sys/types.h>
505 #include <sys/stat.h>
506 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100507 ['explicit_bzero' , '''#include <string.h>'''],
508 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400509]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400510
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200512 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400513endforeach
514
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200516 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200517 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400518else
519 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200520 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400522endif
523
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524#####################################################################
525
526sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400528m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400530git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100531env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100532perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400534meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400535mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400536test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
537splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400538
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
540# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500541progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543 ['kmod', '/usr/bin/kmod' ],
544 ['kexec', '/usr/sbin/kexec' ],
545 ['sulogin', '/usr/sbin/sulogin' ],
546 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
547 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
548 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
549 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
550 ]
551foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 path = get_option(prog[0] + '-path')
553 if path != ''
554 message('Using @1@ for @0@'.format(prog[0], path))
555 else
556 exe = find_program(prog[0],
557 '/usr/sbin/' + prog[0],
558 '/sbin/' + prog[0],
559 required: false)
560 path = exe.found() ? exe.path() : prog[1]
561 endif
562 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
563 conf.set_quoted(name, path)
564 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565endforeach
566
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500567conf.set_quoted('TELINIT', get_option('telinit-path'))
568
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400569if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100570 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400571endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572
573############################################################
574
575gperf = find_program('gperf')
576
577gperf_test_format = '''
578#include <string.h>
579const char * in_word_set(const char *, @0@);
580@1@
581'''
582gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
583gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
584gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
585if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400586 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
589 if cc.compiles(gperf_test)
590 gperf_len_type = 'unsigned'
591 else
592 error('unable to determine gperf len type')
593 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594endif
595message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596conf.set('GPERF_LEN_TYPE', gperf_len_type,
597 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598
599############################################################
600
601if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400602 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100604foreach header : ['crypt.h',
605 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 'linux/memfd.h',
607 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200608 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609 'valgrind/memcheck.h',
610 'valgrind/valgrind.h',
611 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200613 conf.set10('HAVE_' + header.underscorify().to_upper(),
614 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615endforeach
616
617############################################################
618
619conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400620conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
621gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622
623default_hierarchy = get_option('default-hierarchy')
624conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
625 description : 'default cgroup hierarchy as string')
626if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400627 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400629 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632endif
633
634time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900635if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900637 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639conf.set('TIME_EPOCH', time_epoch)
640
641system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900642if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 system_uid_max = run_command(
644 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800645 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
646 '/etc/login.defs').stdout().strip()
647 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900648 system_uid_max = 999
649 else
650 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800651 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653conf.set('SYSTEM_UID_MAX', system_uid_max)
654substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900657if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400658 system_gid_max = run_command(
659 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800660 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
661 '/etc/login.defs').stdout().strip()
662 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900663 system_gid_max = 999
664 else
665 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800666 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668conf.set('SYSTEM_GID_MAX', system_gid_max)
669substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670
Yu Watanabeac093402018-05-10 16:04:16 +0900671dynamic_uid_min = get_option('dynamic-uid-min')
672dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100673conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
674conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
675substs.set('dynamicuidmin', dynamic_uid_min)
676substs.set('dynamicuidmax', dynamic_uid_max)
677
Yu Watanabeac093402018-05-10 16:04:16 +0900678container_uid_base_min = get_option('container-uid-base-min')
679container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100680conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
681conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
682substs.set('containeruidbasemin', container_uid_base_min)
683substs.set('containeruidbasemax', container_uid_base_max)
684
Lennart Poetteringafde4572017-12-05 11:00:24 +0100685nobody_user = get_option('nobody-user')
686nobody_group = get_option('nobody-group')
687
Chen Qi2484bff2018-07-23 14:53:09 +0800688if not meson.is_cross_build()
689 getent_result = run_command('getent', 'passwd', '65534')
690 if getent_result.returncode() == 0
691 name = getent_result.stdout().split(':')[0]
692 if name != nobody_user
693 warning('\n' +
694 '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) +
695 'Your build will result in an user table setup that is incompatible with the local system.')
696 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100697 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800698 id_result = run_command('id', '-u', nobody_user)
699 if id_result.returncode() == 0
700 id = id_result.stdout().to_int()
701 if id != 65534
702 warning('\n' +
703 '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) +
704 'Your build will result in an user table setup that is incompatible with the local system.')
705 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100706 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100707
Chen Qi2484bff2018-07-23 14:53:09 +0800708 getent_result = run_command('getent', 'group', '65534')
709 if getent_result.returncode() == 0
710 name = getent_result.stdout().split(':')[0]
711 if name != nobody_group
712 warning('\n' +
713 '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) +
714 'Your build will result in an group table setup that is incompatible with the local system.')
715 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100716 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800717 id_result = run_command('id', '-g', nobody_group)
718 if id_result.returncode() == 0
719 id = id_result.stdout().to_int()
720 if id != 65534
721 warning('\n' +
722 '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) +
723 'Your build will result in an group table setup that is incompatible with the local system.')
724 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100725 endif
726endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900727if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900728 warning('\n' +
729 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
730 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900731endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100732
733conf.set_quoted('NOBODY_USER_NAME', nobody_user)
734conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900735substs.set('NOBODY_USER_NAME', nobody_user)
736substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100737
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738tty_gid = get_option('tty-gid')
739conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400740substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741
Ikey Doherty84786b82017-12-03 12:28:23 +0000742# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900743users_gid = get_option('users-gid')
744substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000745
Yu Watanabe348b4432018-05-07 18:17:35 +0900746conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
747conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400748
Michael Bieblace5e312018-07-13 23:36:13 +0200749dev_kvm_mode = get_option('dev-kvm-mode')
750substs.set('DEV_KVM_MODE', dev_kvm_mode)
751conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700752substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400754kill_user_processes = get_option('default-kill-user-processes')
755conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100756conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400757substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400759dns_servers = get_option('dns-servers')
760conf.set_quoted('DNS_SERVERS', dns_servers)
761substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400762
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400763ntp_servers = get_option('ntp-servers')
764conf.set_quoted('NTP_SERVERS', ntp_servers)
765substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400766
767conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
768
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400769substs.set('SUSHELL', get_option('debug-shell'))
770substs.set('DEBUGTTY', get_option('debug-tty'))
771
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200772enable_debug_hashmap = false
773enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200774foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900775 if name == 'hashmap'
776 enable_debug_hashmap = true
777 elif name == 'mmap-cache'
778 enable_debug_mmap_cache = true
779 else
780 message('unknown debug option "@0@", ignoring'.format(name))
781 endif
782endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
784conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400785
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200786conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200787conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200788
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400789#####################################################################
790
791threads = dependency('threads')
792librt = cc.find_library('rt')
793libm = cc.find_library('m')
794libdl = cc.find_library('dl')
795libcrypt = cc.find_library('crypt')
796
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400797libcap = dependency('libcap', required : false)
798if not libcap.found()
799 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
800 libcap = cc.find_library('cap')
801endif
802
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100804 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
806want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500807if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400809 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400810 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200813 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817
818want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500819if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libselinux = dependency('libselinux',
821 version : '>= 2.1.9',
822 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200823 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400826 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829
830want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500831if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400832 libapparmor = dependency('libapparmor',
833 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400841smack_run_label = get_option('smack-run-label')
842if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844endif
845
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400846want_polkit = get_option('polkit')
847install_polkit = false
848install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500849if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400850 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libpolkit = dependency('polkit-gobject-1',
853 required : false)
854 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
855 message('Old polkit detected, will install pkla files')
856 install_polkit_pkla = true
857 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400860
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500862if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400863 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400865else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400867 libacl = []
868endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500872if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880
881want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890
891want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libkmod = dependency('libkmod',
894 version : '>= 15',
895 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902
903want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500904if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libpam = cc.find_library('pam', required : want_pam == 'true')
906 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libpam = []
911 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500916if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libmicrohttpd = dependency('libmicrohttpd',
918 version : '>= 0.9.33',
919 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
927want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500928if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libcryptsetup = dependency('libcryptsetup',
930 version : '>= 1.6.0',
931 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100933 have_sector = cc.has_member(
934 'struct crypt_params_plain',
935 'sector_size',
936 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100939 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100943conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944
945want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500946if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libcurl = dependency('libcurl',
948 version : '>= 7.32.0',
949 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400953 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956
957want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400958want_libidn2 = get_option('libidn2')
959if want_libidn == 'true' and want_libidn2 == 'true'
960 error('libidn and libidn2 cannot be requested simultaneously')
961endif
962
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500963if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libidn = dependency('libidn',
965 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400967else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400969 libidn = []
970endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500972if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400973 # libidn is used for both libidn and libidn2 objects
974 libidn = dependency('libidn2',
975 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = libidn.found()
977else
978 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400981
982want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500983if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libiptc = dependency('libiptc',
985 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500994if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libqrencode = dependency('libqrencode',
996 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001004want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001005if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001006 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1007 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
1011endif
1012if not have
1013 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001014 libgcrypt = []
1015 libgpg_error = []
1016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001018
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001020if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libgnutls = dependency('gnutls',
1022 version : '>= 3.1.4',
1023 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001031want_openssl = get_option('openssl')
1032if want_openssl != 'false' and not fuzzer_build
1033 libopenssl = dependency('openssl',
1034 version : '>= 1.1.0',
1035 required : want_openssl == 'true')
1036 have = libopenssl.found()
1037else
1038 have = false
1039 libopenssl = []
1040endif
1041conf.set10('HAVE_OPENSSL', have)
1042
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001044if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libdw = dependency('libdw',
1046 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001050 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053
1054want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libz = dependency('zlib',
1057 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libbzip2 = cc.find_library('bz2',
1068 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libxz = dependency('liblzma',
1079 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
1087want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 liblz4 = dependency('liblz4',
1090 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001098want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001099if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001100 libxkbcommon = dependency('xkbcommon',
1101 version : '>= 0.3.0',
1102 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106 libxkbcommon = []
1107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001109
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001110want_pcre2 = get_option('pcre2')
1111if want_pcre2 != 'false'
1112 libpcre2 = dependency('libpcre2-8',
1113 required : want_pcre2 == 'true')
1114 have = libpcre2.found()
1115else
1116 have = false
1117 libpcre2 = []
1118endif
1119conf.set10('HAVE_PCRE2', have)
1120
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001121want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001122if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001123 libglib = dependency('glib-2.0',
1124 version : '>= 2.22.0',
1125 required : want_glib == 'true')
1126 libgobject = dependency('gobject-2.0',
1127 version : '>= 2.22.0',
1128 required : want_glib == 'true')
1129 libgio = dependency('gio-2.0',
1130 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001131 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001132else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001134 libglib = []
1135 libgobject = []
1136 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001137endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001139
1140want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001141if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libdbus = dependency('dbus-1',
1143 version : '>= 1.3.2',
1144 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001151
Yu Watanabe42303dc2017-06-18 05:22:32 +09001152default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001153if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001154 default_dnssec = 'no'
1155endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001157 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1158 default_dnssec = 'no'
1159endif
1160conf.set('DEFAULT_DNSSEC_MODE',
1161 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1162substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1163
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001164dns_over_tls = get_option('dns-over-tls')
1165if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001166 if dns_over_tls == 'openssl'
1167 have_gnutls = false
1168 else
1169 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1170 if dns_over_tls == 'gnutls' and not have_gnutls
1171 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1172 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001173 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001174 if dns_over_tls == 'gnutls' or have_gnutls
1175 have_openssl = false
1176 else
1177 have_openssl = conf.get('HAVE_OPENSSL') == 1
1178 if dns_over_tls != 'auto' and not have_openssl
1179 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1180 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1181 endif
1182 endif
1183 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001184else
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001185 have = have_gnutls = have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001186endif
1187conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001188conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1189conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001190
Iwan Timmerc9299be2018-06-13 20:26:24 +02001191default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001192if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001193 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001194endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001195if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1196 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 +02001197 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001198endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001199conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1200 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1201substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001202
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001204if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have = (conf.get('HAVE_LIBCURL') == 1 and
1206 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001207 conf.get('HAVE_XZ') == 1 and
1208 conf.get('HAVE_GCRYPT') == 1)
1209 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001210 error('importd support was requested, but dependencies are not available')
1211 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212else
1213 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001216
1217want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001218if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1220 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001221 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1222 # it's possible to build one without the other. Complain only if
1223 # support was explictly requested. The auxiliary files like sysusers
1224 # config should be installed when any of the programs are built.
1225 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1226 error('remote support was requested, but dependencies are not available')
1227 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228 have = have_deps[0] or have_deps[1]
1229else
1230 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001231endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001232conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001233
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001234foreach term : ['utmp',
1235 'hibernate',
1236 'environment-d',
1237 'binfmt',
1238 'coredump',
1239 'resolve',
1240 'logind',
1241 'hostnamed',
1242 'localed',
1243 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001244 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001245 'networkd',
1246 'timedated',
1247 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001248 'firstboot',
1249 'randomseed',
1250 'backlight',
1251 'vconsole',
1252 'quotacheck',
1253 'sysusers',
1254 'tmpfiles',
1255 'hwdb',
1256 'rfkill',
1257 'ldconfig',
1258 'efi',
1259 'tpm',
1260 'ima',
1261 'smack',
1262 'gshadow',
1263 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001264 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001265 'nss-systemd']
1266 have = get_option(term)
1267 name = 'ENABLE_' + term.underscorify().to_upper()
1268 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001269endforeach
1270
Yu Watanabe08540a92018-07-18 09:25:57 +09001271foreach tuple : [['nss-mymachines', 'machined'],
1272 ['nss-resolve', 'resolve']]
1273 want = get_option(tuple[0])
1274 if want != 'false'
1275 have = get_option(tuple[1])
1276 if want == 'true' and not have
1277 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1278 endif
1279 else
1280 have = false
1281 endif
1282 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1283 conf.set10(name, have)
1284endforeach
1285
1286enable_nss = false
1287foreach term : ['ENABLE_NSS_MYHOSTNAME',
1288 'ENABLE_NSS_MYMACHINES',
1289 'ENABLE_NSS_RESOLVE',
1290 'ENABLE_NSS_SYSTEMD']
1291 if conf.get(term) == 1
1292 enable_nss = true
1293 endif
1294endforeach
1295conf.set10('ENABLE_NSS', enable_nss)
1296
Yu Watanabe348b4432018-05-07 18:17:35 +09001297conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001298
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001299tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001300fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001301
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001302conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001303
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304#####################################################################
1305
1306if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001308
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001309 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001310 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001311 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 elif efi_arch == 'x86_64'
1313 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001314 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001315 elif efi_arch == 'arm'
1316 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001317 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 elif efi_arch == 'aarch64'
1319 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001320 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 else
1322 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001323 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001326 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001327 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001328
Yu Watanabeac093402018-05-10 16:04:16 +09001329 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001330else
1331 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001333conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334
1335#####################################################################
1336
1337config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 output : 'config.h',
1339 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340
Yu Watanabe348b4432018-05-07 18:17:35 +09001341meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1342
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343includes = include_directories('src/basic',
1344 'src/shared',
1345 'src/systemd',
1346 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001347 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001348 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001349 'src/resolve',
1350 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001351 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352 'src/login',
1353 'src/udev',
1354 'src/libudev',
1355 'src/core',
1356 'src/libsystemd/sd-bus',
1357 'src/libsystemd/sd-device',
1358 'src/libsystemd/sd-hwdb',
1359 'src/libsystemd/sd-id128',
1360 'src/libsystemd/sd-netlink',
1361 'src/libsystemd/sd-network',
1362 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001363 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001364
1365add_project_arguments('-include', 'config.h', language : 'c')
1366
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367subdir('po')
1368subdir('catalog')
1369subdir('src/systemd')
1370subdir('src/basic')
1371subdir('src/libsystemd')
1372subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001374subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375
1376libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001377 'journal-core',
1378 libjournal_core_sources,
1379 journald_gperf_c,
1380 include_directories : includes,
1381 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001383libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001386 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001387 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 include_directories : includes,
1389 link_args : ['-shared',
1390 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001391 link_with : [libbasic,
1392 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001393 link_whole : [libsystemd_static,
1394 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 dependencies : [threads,
1396 librt,
1397 libxz,
1398 liblz4],
1399 link_depends : libsystemd_sym,
1400 install : true,
1401 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402
Davide Cavalca70848ec2018-04-09 02:43:35 -07001403static_libsystemd = get_option('static-libsystemd')
1404static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1405
1406install_libsystemd_static = static_library(
1407 'systemd',
1408 libsystemd_sources,
1409 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001410 basic_sources,
1411 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001412 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001413 build_by_default : static_libsystemd != 'false',
1414 install : static_libsystemd != 'false',
1415 install_dir : rootlibdir,
1416 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1417 dependencies : [threads,
1418 librt,
1419 libxz,
1420 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001421 libcap,
1422 libblkid,
1423 libmount,
1424 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001425 libgcrypt],
1426 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1427
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428############################################################
1429
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001430# binaries that have --help and are intended for use by humans,
1431# usually, but not always, installed in /bin.
1432public_programs = []
1433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434subdir('src/libudev')
1435subdir('src/shared')
1436subdir('src/core')
1437subdir('src/udev')
1438subdir('src/network')
1439
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001440subdir('src/analyze')
1441subdir('src/journal-remote')
1442subdir('src/coredump')
1443subdir('src/hostname')
1444subdir('src/import')
1445subdir('src/kernel-install')
1446subdir('src/locale')
1447subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001448subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001449subdir('src/nspawn')
1450subdir('src/resolve')
1451subdir('src/timedate')
1452subdir('src/timesync')
1453subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001454subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001455
1456subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001457subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001458subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001459subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001460
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001461############################################################
1462
1463# only static linking apart from libdl, to make sure that the
1464# module is linked to all libraries that it uses.
1465test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 'test-dlopen',
1467 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001468 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 include_directories : includes,
1470 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001471 dependencies : [libdl],
1472 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001473
Yu Watanabe08540a92018-07-18 09:25:57 +09001474foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001475 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001476 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1477 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001478
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001479 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 if condition
1481 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001482
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001484 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001485
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001486 nss = shared_library(
1487 'nss_' + module,
1488 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001489 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 version : '2',
1491 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001492 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1493 link_args : ['-Wl,-z,nodelete',
1494 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001495 '-Wl,--version-script=' + version_script_arg,
1496 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001497 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001498 libbasic],
1499 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001500 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001501 link_depends : sym,
1502 install : true,
1503 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001504
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 # We cannot use shared_module because it does not support version suffix.
1506 # Unfortunately shared_library insists on creating the symlink…
1507 meson.add_install_script('sh', '-c',
1508 'rm $DESTDIR@0@/libnss_@1@.so'
1509 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001510
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001511 if want_tests != 'false'
1512 test('dlopen-nss_' + module,
1513 test_dlopen,
1514 # path to dlopen must include a slash
1515 args : nss.full_path())
1516 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001518endforeach
1519
1520############################################################
1521
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522executable('systemd',
1523 systemd_sources,
1524 include_directories : includes,
1525 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001526 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001527 dependencies : [threads,
1528 librt,
1529 libseccomp,
1530 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001531 libmount,
1532 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001533 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534 install : true,
1535 install_dir : rootlibexecdir)
1536
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001537meson.add_install_script(meson_make_symlink,
1538 join_paths(rootlibexecdir, 'systemd'),
1539 join_paths(rootsbindir, 'init'))
1540
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001541exe = executable('systemd-analyze',
1542 systemd_analyze_sources,
1543 include_directories : includes,
1544 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545 libshared],
1546 dependencies : [threads,
1547 librt,
1548 libseccomp,
1549 libselinux,
1550 libmount,
1551 libblkid],
1552 install_rpath : rootlibexecdir,
1553 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001554public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001555
1556executable('systemd-journald',
1557 systemd_journald_sources,
1558 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001559 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001560 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001561 dependencies : [threads,
1562 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001563 liblz4,
1564 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001565 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001566 install : true,
1567 install_dir : rootlibexecdir)
1568
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001569exe = executable('systemd-cat',
1570 systemd_cat_sources,
1571 include_directories : includes,
1572 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001573 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001574 dependencies : [threads],
1575 install_rpath : rootlibexecdir,
1576 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001577public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001578
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579exe = executable('journalctl',
1580 journalctl_sources,
1581 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001582 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001583 dependencies : [threads,
1584 libqrencode,
1585 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001586 liblz4,
1587 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588 install_rpath : rootlibexecdir,
1589 install : true,
1590 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001591public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001592
1593executable('systemd-getty-generator',
1594 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001595 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001596 link_with : [libshared],
1597 install_rpath : rootlibexecdir,
1598 install : true,
1599 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600
1601executable('systemd-debug-generator',
1602 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001604 link_with : [libshared],
1605 install_rpath : rootlibexecdir,
1606 install : true,
1607 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608
1609executable('systemd-fstab-generator',
1610 'src/fstab-generator/fstab-generator.c',
1611 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001613 link_with : [libshared],
1614 install_rpath : rootlibexecdir,
1615 install : true,
1616 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001618if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 executable('30-systemd-environment-d-generator',
1620 'src/environment-d-generator/environment-d-generator.c',
1621 include_directories : includes,
1622 link_with : [libshared],
1623 install_rpath : rootlibexecdir,
1624 install : true,
1625 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001626
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 meson.add_install_script(meson_make_symlink,
1628 join_paths(sysconfdir, 'environment'),
1629 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630endif
1631
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001632if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 executable('systemd-hibernate-resume-generator',
1634 'src/hibernate-resume/hibernate-resume-generator.c',
1635 include_directories : includes,
1636 link_with : [libshared],
1637 install_rpath : rootlibexecdir,
1638 install : true,
1639 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 executable('systemd-hibernate-resume',
1642 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001643 include_directories : includes,
1644 link_with : [libshared],
1645 install_rpath : rootlibexecdir,
1646 install : true,
1647 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648endif
1649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001650if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 executable('systemd-gpt-auto-generator',
1652 'src/gpt-auto-generator/gpt-auto-generator.c',
1653 'src/basic/blkid-util.h',
1654 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001655 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001656 dependencies : libblkid,
1657 install_rpath : rootlibexecdir,
1658 install : true,
1659 install_dir : systemgeneratordir)
1660
1661 exe = executable('systemd-dissect',
1662 'src/dissect/dissect.c',
1663 include_directories : includes,
1664 link_with : [libshared],
1665 install_rpath : rootlibexecdir,
1666 install : true,
1667 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001668 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001669endif
1670
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001671if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 executable('systemd-resolved',
1673 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001675 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001676 libbasic_gcrypt,
1677 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001678 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001679 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001680 install : true,
1681 install_dir : rootlibexecdir)
1682
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001683 exe = executable('resolvectl',
1684 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -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],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001690 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 libm,
1692 libidn],
1693 install_rpath : rootlibexecdir,
1694 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001695 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001696
1697 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001698 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001699 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001700
1701 meson.add_install_script(meson_make_symlink,
1702 join_paths(bindir, 'resolvectl'),
1703 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704endif
1705
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001706if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 executable('systemd-logind',
1708 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001709 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001711 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001712 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001714 install_rpath : rootlibexecdir,
1715 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 exe = executable('loginctl',
1719 loginctl_sources,
1720 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001721 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 dependencies : [threads,
1723 liblz4,
1724 libxz],
1725 install_rpath : rootlibexecdir,
1726 install : true,
1727 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001728 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 exe = executable('systemd-inhibit',
1731 'src/login/inhibit.c',
1732 include_directories : includes,
1733 link_with : [libshared],
1734 install_rpath : rootlibexecdir,
1735 install : true,
1736 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001737 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001740 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 pam_systemd = shared_library(
1742 'pam_systemd',
1743 pam_systemd_c,
1744 name_prefix : '',
1745 include_directories : includes,
1746 link_args : ['-shared',
1747 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001748 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 libshared_static],
1750 dependencies : [threads,
1751 libpam,
1752 libpam_misc],
1753 link_depends : pam_systemd_sym,
1754 install : true,
1755 install_dir : pamlibdir)
1756
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001757 if want_tests != 'false'
1758 test('dlopen-pam_systemd',
1759 test_dlopen,
1760 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001761 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001762 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764endif
1765
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001766executable('systemd-user-runtime-dir',
1767 user_runtime_dir_sources,
1768 include_directories : includes,
1769 link_with : [libshared, liblogind_core],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootlibexecdir)
1773
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001774if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 executable('systemd-user-sessions',
1776 'src/user-sessions/user-sessions.c',
1777 include_directories : includes,
1778 link_with : [libshared],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001782endif
1783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001784if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 exe = executable('bootctl',
1786 'src/boot/bootctl.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 dependencies : [libblkid],
1790 install_rpath : rootlibexecdir,
1791 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001792 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001795exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1796 include_directories : includes,
1797 link_with : [libshared],
1798 dependencies : [threads],
1799 install_rpath : rootlibexecdir,
1800 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001801public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802
Felipe Satelerf3794362018-05-22 15:08:57 -04001803
1804if get_option('link-systemctl-shared')
1805 systemctl_link_with = [libshared]
1806else
1807 systemctl_link_with = [libsystemd_static,
1808 libshared_static,
1809 libjournal_client,
1810 libbasic_gcrypt]
1811endif
1812
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001813exe = executable('systemctl', 'src/systemctl/systemctl.c',
1814 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001815 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001816 dependencies : [threads,
1817 libcap,
1818 libselinux,
1819 libxz,
1820 liblz4],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001824public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825
Lennart Poettering61d05782018-04-16 21:41:40 +02001826if conf.get('ENABLE_PORTABLED') == 1
1827 executable('systemd-portabled',
1828 systemd_portabled_sources,
1829 include_directories : includes,
1830 link_with : [libshared],
1831 dependencies : [threads],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootlibexecdir)
1835
1836 exe = executable('portablectl', 'src/portable/portablectl.c',
1837 include_directories : includes,
1838 link_with : [libshared],
1839 dependencies : [threads],
1840 install_rpath : rootlibexecdir,
1841 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001842 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001843 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001844endif
1845
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001846foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1847 meson.add_install_script(meson_make_symlink,
1848 join_paths(rootbindir, 'systemctl'),
1849 join_paths(rootsbindir, alias))
1850endforeach
1851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001852if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 executable('systemd-backlight',
1854 'src/backlight/backlight.c',
1855 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001856 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001860endif
1861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001862if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 executable('systemd-rfkill',
1864 'src/rfkill/rfkill.c',
1865 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001866 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870endif
1871
1872executable('systemd-system-update-generator',
1873 'src/system-update-generator/system-update-generator.c',
1874 include_directories : includes,
1875 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001876 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001877 install : true,
1878 install_dir : systemgeneratordir)
1879
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001880if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001881 executable('systemd-cryptsetup',
1882 'src/cryptsetup/cryptsetup.c',
1883 include_directories : includes,
1884 link_with : [libshared],
1885 dependencies : [libcryptsetup],
1886 install_rpath : rootlibexecdir,
1887 install : true,
1888 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001889
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 executable('systemd-cryptsetup-generator',
1891 'src/cryptsetup/cryptsetup-generator.c',
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [libcryptsetup],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001898
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 executable('systemd-veritysetup',
1900 'src/veritysetup/veritysetup.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [libcryptsetup],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001907
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 executable('systemd-veritysetup-generator',
1909 'src/veritysetup/veritysetup-generator.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [libcryptsetup],
1913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001916endif
1917
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001918if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001919 executable('systemd-sysv-generator',
1920 'src/sysv-generator/sysv-generator.c',
1921 include_directories : includes,
1922 link_with : [libshared],
1923 install_rpath : rootlibexecdir,
1924 install : true,
1925 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-rc-local-generator',
1928 'src/rc-local-generator/rc-local-generator.c',
1929 include_directories : includes,
1930 link_with : [libshared],
1931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934endif
1935
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001936if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001937 executable('systemd-hostnamed',
1938 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001939 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001940 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001941 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001942 install : true,
1943 install_dir : rootlibexecdir)
1944
1945 exe = executable('hostnamectl',
1946 'src/hostname/hostnamectl.c',
1947 include_directories : includes,
1948 link_with : [libshared],
1949 install_rpath : rootlibexecdir,
1950 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001951 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('ENABLE_LOCALED') == 1
1955 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001956 # logind will load libxkbcommon.so dynamically on its own
1957 deps = [libdl]
1958 else
1959 deps = []
1960 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001961
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001962 executable('systemd-localed',
1963 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001964 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001965 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001967 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001968 install : true,
1969 install_dir : rootlibexecdir)
1970
1971 exe = executable('localectl',
1972 localectl_sources,
1973 include_directories : includes,
1974 link_with : [libshared],
1975 install_rpath : rootlibexecdir,
1976 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001977 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001978endif
1979
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001980if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 executable('systemd-timedated',
1982 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001983 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001984 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001988endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989
Yu Watanabe6129ec82018-05-03 18:07:43 +09001990if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 exe = executable('timedatectl',
1992 'src/timedate/timedatectl.c',
1993 include_directories : includes,
1994 install_rpath : rootlibexecdir,
1995 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001996 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001998 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001999endif
2000
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002001if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 executable('systemd-timesyncd',
2003 systemd_timesyncd_sources,
2004 include_directories : includes,
2005 link_with : [libshared],
2006 dependencies : [threads,
2007 libm],
2008 install_rpath : rootlibexecdir,
2009 install : true,
2010 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002011
2012 executable('systemd-time-wait-sync',
2013 'src/time-wait-sync/time-wait-sync.c',
2014 include_directories : includes,
2015 link_with : [libshared],
2016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019endif
2020
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002021if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 executable('systemd-machined',
2023 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002024 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 link_with : [libmachine_core,
2026 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002027 install_rpath : rootlibexecdir,
2028 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002029 install_dir : rootlibexecdir)
2030
2031 exe = executable('machinectl',
2032 'src/machine/machinectl.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 dependencies : [threads,
2036 libxz,
2037 liblz4],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002041 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042endif
2043
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002044if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 executable('systemd-importd',
2046 systemd_importd_sources,
2047 include_directories : includes,
2048 link_with : [libshared],
2049 dependencies : [threads],
2050 install_rpath : rootlibexecdir,
2051 install : true,
2052 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002053
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 systemd_pull = executable('systemd-pull',
2055 systemd_pull_sources,
2056 include_directories : includes,
2057 link_with : [libshared],
2058 dependencies : [libcurl,
2059 libz,
2060 libbzip2,
2061 libxz,
2062 libgcrypt],
2063 install_rpath : rootlibexecdir,
2064 install : true,
2065 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 systemd_import = executable('systemd-import',
2068 systemd_import_sources,
2069 include_directories : includes,
2070 link_with : [libshared],
2071 dependencies : [libcurl,
2072 libz,
2073 libbzip2,
2074 libxz],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002079 systemd_export = executable('systemd-export',
2080 systemd_export_sources,
2081 include_directories : includes,
2082 link_with : [libshared],
2083 dependencies : [libcurl,
2084 libz,
2085 libbzip2,
2086 libxz],
2087 install_rpath : rootlibexecdir,
2088 install : true,
2089 install_dir : rootlibexecdir)
2090 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091endif
2092
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002093if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 exe = executable('systemd-journal-upload',
2095 systemd_journal_upload_sources,
2096 include_directories : includes,
2097 link_with : [libshared],
2098 dependencies : [threads,
2099 libcurl,
2100 libgnutls,
2101 libxz,
2102 liblz4],
2103 install_rpath : rootlibexecdir,
2104 install : true,
2105 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002106 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107endif
2108
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002109if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002110 s_j_remote = executable('systemd-journal-remote',
2111 systemd_journal_remote_sources,
2112 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002113 link_with : [libshared,
2114 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 dependencies : [threads,
2116 libmicrohttpd,
2117 libgnutls,
2118 libxz,
2119 liblz4],
2120 install_rpath : rootlibexecdir,
2121 install : true,
2122 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002123
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002124 s_j_gatewayd = executable('systemd-journal-gatewayd',
2125 systemd_journal_gatewayd_sources,
2126 include_directories : includes,
2127 link_with : [libshared],
2128 dependencies : [threads,
2129 libmicrohttpd,
2130 libgnutls,
2131 libxz,
2132 liblz4],
2133 install_rpath : rootlibexecdir,
2134 install : true,
2135 install_dir : rootlibexecdir)
2136 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137endif
2138
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002139if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 executable('systemd-coredump',
2141 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002143 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 libacl,
2146 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002147 libxz,
2148 liblz4],
2149 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002150 install : true,
2151 install_dir : rootlibexecdir)
2152
2153 exe = executable('coredumpctl',
2154 coredumpctl_sources,
2155 include_directories : includes,
2156 link_with : [libshared],
2157 dependencies : [threads,
2158 libxz,
2159 liblz4],
2160 install_rpath : rootlibexecdir,
2161 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002162 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002163endif
2164
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002165if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166 exe = executable('systemd-binfmt',
2167 'src/binfmt/binfmt.c',
2168 include_directories : includes,
2169 link_with : [libshared],
2170 install_rpath : rootlibexecdir,
2171 install : true,
2172 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002173 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174
2175 meson.add_install_script('sh', '-c',
2176 mkdir_p.format(binfmtdir))
2177 meson.add_install_script('sh', '-c',
2178 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2179endif
2180
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002181if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-vconsole-setup',
2183 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184 include_directories : includes,
2185 link_with : [libshared],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189endif
2190
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002191if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 executable('systemd-random-seed',
2193 'src/random-seed/random-seed.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199endif
2200
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002201if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 executable('systemd-firstboot',
2203 'src/firstboot/firstboot.c',
2204 include_directories : includes,
2205 link_with : [libshared],
2206 dependencies : [libcrypt],
2207 install_rpath : rootlibexecdir,
2208 install : true,
2209 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210endif
2211
2212executable('systemd-remount-fs',
2213 'src/remount-fs/remount-fs.c',
2214 'src/core/mount-setup.c',
2215 'src/core/mount-setup.h',
2216 include_directories : includes,
2217 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002218 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219 install : true,
2220 install_dir : rootlibexecdir)
2221
2222executable('systemd-machine-id-setup',
2223 'src/machine-id-setup/machine-id-setup-main.c',
2224 'src/core/machine-id-setup.c',
2225 'src/core/machine-id-setup.h',
2226 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002227 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002228 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002229 install : true,
2230 install_dir : rootbindir)
2231
2232executable('systemd-fsck',
2233 'src/fsck/fsck.c',
2234 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002235 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002236 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237 install : true,
2238 install_dir : rootlibexecdir)
2239
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002240executable('systemd-growfs',
2241 'src/partition/growfs.c',
2242 include_directories : includes,
2243 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002244 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootlibexecdir)
2248
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002249executable('systemd-makefs',
2250 'src/partition/makefs.c',
2251 include_directories : includes,
2252 link_with : [libshared],
2253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootlibexecdir)
2256
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257executable('systemd-sleep',
2258 'src/sleep/sleep.c',
2259 include_directories : includes,
2260 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002261 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262 install : true,
2263 install_dir : rootlibexecdir)
2264
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265exe = executable('systemd-sysctl',
2266 'src/sysctl/sysctl.c',
2267 include_directories : includes,
2268 link_with : [libshared],
2269 install_rpath : rootlibexecdir,
2270 install : true,
2271 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002272public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273
2274executable('systemd-ac-power',
2275 'src/ac-power/ac-power.c',
2276 include_directories : includes,
2277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002278 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279 install : true,
2280 install_dir : rootlibexecdir)
2281
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002282exe = executable('systemd-detect-virt',
2283 'src/detect-virt/detect-virt.c',
2284 include_directories : includes,
2285 link_with : [libshared],
2286 install_rpath : rootlibexecdir,
2287 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002288public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290exe = executable('systemd-delta',
2291 'src/delta/delta.c',
2292 include_directories : includes,
2293 link_with : [libshared],
2294 install_rpath : rootlibexecdir,
2295 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002296public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298exe = executable('systemd-escape',
2299 'src/escape/escape.c',
2300 include_directories : includes,
2301 link_with : [libshared],
2302 install_rpath : rootlibexecdir,
2303 install : true,
2304 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002305public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307exe = executable('systemd-notify',
2308 'src/notify/notify.c',
2309 include_directories : includes,
2310 link_with : [libshared],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002314public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315
2316executable('systemd-volatile-root',
2317 'src/volatile-root/volatile-root.c',
2318 include_directories : includes,
2319 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002320 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321 install : true,
2322 install_dir : rootlibexecdir)
2323
2324executable('systemd-cgroups-agent',
2325 'src/cgroups-agent/cgroups-agent.c',
2326 include_directories : includes,
2327 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002328 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002329 install : true,
2330 install_dir : rootlibexecdir)
2331
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002332exe = executable('systemd-id128',
2333 'src/id128/id128.c',
2334 include_directories : includes,
2335 link_with : [libshared],
2336 install_rpath : rootlibexecdir,
2337 install : true)
2338public_programs += exe
2339
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340exe = executable('systemd-path',
2341 'src/path/path.c',
2342 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344 install_rpath : rootlibexecdir,
2345 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002346public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002348exe = executable('systemd-ask-password',
2349 'src/ask-password/ask-password.c',
2350 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002355public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356
2357executable('systemd-reply-password',
2358 'src/reply-password/reply-password.c',
2359 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002360 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002361 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362 install : true,
2363 install_dir : rootlibexecdir)
2364
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002365exe = executable('systemd-tty-ask-password-agent',
2366 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2367 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002368 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369 install_rpath : rootlibexecdir,
2370 install : true,
2371 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002372public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374exe = executable('systemd-cgls',
2375 'src/cgls/cgls.c',
2376 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002377 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378 install_rpath : rootlibexecdir,
2379 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002380public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382exe = executable('systemd-cgtop',
2383 'src/cgtop/cgtop.c',
2384 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002385 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386 install_rpath : rootlibexecdir,
2387 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002388public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389
2390executable('systemd-initctl',
2391 'src/initctl/initctl.c',
2392 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002393 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002394 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395 install : true,
2396 install_dir : rootlibexecdir)
2397
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398exe = executable('systemd-mount',
2399 'src/mount/mount-tool.c',
2400 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402 install_rpath : rootlibexecdir,
2403 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002404public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002406meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002407 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002408
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002409exe = executable('systemd-run',
2410 'src/run/run.c',
2411 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413 install_rpath : rootlibexecdir,
2414 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002415public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002417exe = executable('systemd-stdio-bridge',
2418 'src/stdio-bridge/stdio-bridge.c',
2419 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002420 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002421 install_rpath : rootlibexecdir,
2422 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002423public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002424
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002425exe = executable('busctl',
2426 'src/busctl/busctl.c',
2427 'src/busctl/busctl-introspect.c',
2428 'src/busctl/busctl-introspect.h',
2429 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002430 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431 install_rpath : rootlibexecdir,
2432 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002433public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002435if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002436 exe = executable('systemd-sysusers',
2437 'src/sysusers/sysusers.c',
2438 include_directories : includes,
2439 link_with : [libshared],
2440 install_rpath : rootlibexecdir,
2441 install : true,
2442 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002443 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444endif
2445
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002446if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002447 exe = executable('systemd-tmpfiles',
2448 'src/tmpfiles/tmpfiles.c',
2449 include_directories : includes,
2450 link_with : [libshared],
2451 dependencies : [libacl],
2452 install_rpath : rootlibexecdir,
2453 install : true,
2454 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002455 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002456
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002457 if want_tests != 'false'
2458 test('test-systemd-tmpfiles',
2459 test_systemd_tmpfiles_py,
2460 # https://github.com/mesonbuild/meson/issues/2681
2461 args : exe.full_path())
2462 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463endif
2464
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002465if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002466 exe = executable('systemd-hwdb',
2467 'src/hwdb/hwdb.c',
2468 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2469 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002470 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002471 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 install : true,
2473 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002474 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002475endif
2476
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002477if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002478 executable('systemd-quotacheck',
2479 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002481 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002482 install_rpath : rootlibexecdir,
2483 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002484 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485endif
2486
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002487exe = executable('systemd-socket-proxyd',
2488 'src/socket-proxy/socket-proxyd.c',
2489 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002490 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491 dependencies : [threads],
2492 install_rpath : rootlibexecdir,
2493 install : true,
2494 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002495public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497exe = executable('systemd-udevd',
2498 systemd_udevd_sources,
2499 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002500 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002503 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002504 dependencies : [threads,
2505 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002507 libacl,
2508 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002509 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 install : true,
2511 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002512public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514exe = executable('udevadm',
2515 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002516 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002517 include_directories : includes,
2518 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002520 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002521 dependencies : [threads,
2522 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002524 libacl,
2525 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002526 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527 install : true,
2528 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002529public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530
2531executable('systemd-shutdown',
2532 systemd_shutdown_sources,
2533 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002534 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002535 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002536 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537 install : true,
2538 install_dir : rootlibexecdir)
2539
2540executable('systemd-update-done',
2541 'src/update-done/update-done.c',
2542 include_directories : includes,
2543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002544 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545 install : true,
2546 install_dir : rootlibexecdir)
2547
2548executable('systemd-update-utmp',
2549 'src/update-utmp/update-utmp.c',
2550 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002553 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002554 install : true,
2555 install_dir : rootlibexecdir)
2556
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002557if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002558 executable('systemd-modules-load',
2559 'src/modules-load/modules-load.c',
2560 include_directories : includes,
2561 link_with : [libshared],
2562 dependencies : [libkmod],
2563 install_rpath : rootlibexecdir,
2564 install : true,
2565 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002566
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002567 meson.add_install_script('sh', '-c',
2568 mkdir_p.format(modulesloaddir))
2569 meson.add_install_script('sh', '-c',
2570 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571endif
2572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('systemd-nspawn',
2574 systemd_nspawn_sources,
2575 'src/core/mount-setup.c', # FIXME: use a variable?
2576 'src/core/mount-setup.h',
2577 'src/core/loopback-setup.c',
2578 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002579 include_directories : includes,
2580 link_with : [libnspawn_core,
2581 libshared],
2582 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002583 install_rpath : rootlibexecdir,
2584 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002585public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002587if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588 executable('systemd-networkd',
2589 systemd_networkd_sources,
2590 include_directories : includes,
2591 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002592 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002593 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002595 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002596 install_rpath : rootlibexecdir,
2597 install : true,
2598 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600 executable('systemd-networkd-wait-online',
2601 systemd_networkd_wait_online_sources,
2602 include_directories : includes,
2603 link_with : [libnetworkd_core,
2604 libshared],
2605 install_rpath : rootlibexecdir,
2606 install : true,
2607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002609 exe = executable('networkctl',
2610 networkctl_sources,
2611 include_directories : includes,
2612 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002613 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002614 install_rpath : rootlibexecdir,
2615 install : true,
2616 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002617 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002618endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002619
2620executable('systemd-sulogin-shell',
2621 ['src/sulogin-shell/sulogin-shell.c'],
2622 include_directories : includes,
2623 link_with : [libshared],
2624 install_rpath : rootlibexecdir,
2625 install : true,
2626 install_dir : rootlibexecdir)
2627
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002628############################################################
2629
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002630custom_target(
2631 'systemd-runtest.env',
2632 output : 'systemd-runtest.env',
2633 command : ['sh', '-c', '{ ' +
2634 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002635 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002636 '} >@OUTPUT@'],
2637 build_by_default : true)
2638
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002639foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002640 sources = tuple[0]
2641 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2642 dependencies = tuple[2]
2643 condition = tuple.length() >= 4 ? tuple[3] : ''
2644 type = tuple.length() >= 5 ? tuple[4] : ''
2645 defs = tuple.length() >= 6 ? tuple[5] : []
2646 incs = tuple.length() >= 7 ? tuple[6] : includes
2647 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002648
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002649 name = sources[0].split('/')[-1].split('.')[0]
2650 if type.startswith('timeout=')
2651 timeout = type.split('=')[1].to_int()
2652 type = ''
2653 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002654
2655 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002656 exe = executable(
2657 name,
2658 sources,
2659 include_directories : incs,
2660 link_with : link_with,
2661 dependencies : dependencies,
2662 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002663 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002664 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002665 install : install_tests,
2666 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002667
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002668 if type == 'manual'
2669 message('@0@ is a manual test'.format(name))
2670 elif type == 'unsafe' and want_tests != 'unsafe'
2671 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002672 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002673 test(name, exe,
2674 env : test_env,
2675 timeout : timeout)
2676 endif
2677 else
2678 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2679 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002680endforeach
2681
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002682exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 'test-libsystemd-sym',
2684 test_libsystemd_sym_c,
2685 include_directories : includes,
2686 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002687 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002688 install : install_tests,
2689 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002690if want_tests != 'false'
2691 test('test-libsystemd-sym', exe)
2692endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002693
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002694exe = executable(
2695 'test-libsystemd-static-sym',
2696 test_libsystemd_sym_c,
2697 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002698 link_with : [install_libsystemd_static],
2699 dependencies : [threads], # threads is already included in dependencies on the library,
2700 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002701 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002702 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002703 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002704if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002705 test('test-libsystemd-static-sym', exe)
2706endif
2707
2708exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 'test-libudev-sym',
2710 test_libudev_sym_c,
2711 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002712 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002714 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 install : install_tests,
2716 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002717if want_tests != 'false'
2718 test('test-libudev-sym', exe)
2719endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002720
2721exe = executable(
2722 'test-libudev-static-sym',
2723 test_libudev_sym_c,
2724 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002725 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002726 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002727 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002728 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002729 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002730if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002731 test('test-libudev-static-sym', exe)
2732endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002733
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002734############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002735
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002736fuzzer_exes = []
2737
2738foreach tuple : fuzzers
2739 sources = tuple[0]
2740 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2741 dependencies = tuple[2]
2742 defs = tuple.length() >= 4 ? tuple[3] : []
2743 incs = tuple.length() >= 5 ? tuple[4] : includes
2744
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002745 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002746 dependencies += fuzzing_engine
2747 else
2748 sources += 'src/fuzz/fuzz-main.c'
2749 endif
2750
2751 name = sources[0].split('/')[-1].split('.')[0]
2752
2753 fuzzer_exes += executable(
2754 name,
2755 sources,
2756 include_directories : [incs, include_directories('src/fuzz')],
2757 link_with : link_with,
2758 dependencies : dependencies,
2759 c_args : defs,
2760 install : false)
2761endforeach
2762
2763run_target('fuzzers',
2764 depends : fuzzer_exes,
2765 command : ['true'])
2766
2767############################################################
2768
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002769make_directive_index_py = find_program('tools/make-directive-index.py')
2770make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002771xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002772hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002773
2774subdir('units')
2775subdir('sysctl.d')
2776subdir('sysusers.d')
2777subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002778subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002779subdir('hwdb')
2780subdir('network')
2781subdir('man')
2782subdir('shell-completion/bash')
2783subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002784subdir('docs/sysvinit')
2785subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002786
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002787install_subdir('factory/etc',
2788 install_dir : factorydir)
2789
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002790install_data('xorg/50-systemd-user.sh',
2791 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002792install_data('modprobe.d/systemd.conf',
2793 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002794install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002795 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002796 'NEWS',
2797 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002798 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002799 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002800 'docs/ENVIRONMENT.md',
2801 'docs/HACKING',
2802 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002803 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002804 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002805 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2806 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002807
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002808meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2809meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2810
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002811############################################################
2812
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002813meson_check_help = find_program('tools/meson-check-help.sh')
2814
2815foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002817 if want_tests != 'false'
2818 test('check-help-' + name,
2819 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002820 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002821 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002822endforeach
2823
2824############################################################
2825
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002826# Enable tests for all supported sanitizers
2827foreach tuple : sanitizers
2828 sanitizer = tuple[0]
2829 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002830
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002831 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002832 prev = ''
2833 foreach p : fuzz_regression_tests
2834 b = p.split('/')[-2]
2835 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002836
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002837 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002838
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002839 if name != prev
2840 if want_tests == 'false'
2841 message('Not compiling @0@ because tests is set to false'.format(name))
2842 elif slow_tests
2843 exe = custom_target(
2844 name,
2845 output : name,
2846 depends : build,
2847 command : [env, 'ln', '-fs',
2848 join_paths(build.full_path(), b),
2849 '@OUTPUT@'],
2850 build_by_default : true)
2851 else
2852 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2853 endif
2854 endif
2855 prev = name
2856
2857 if want_tests != 'false' and slow_tests
2858 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2859 env,
2860 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002861 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002862 endif
2863 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002864 endif
2865endforeach
2866
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002867
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002868############################################################
2869
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002870if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002871 all_files = run_command(
2872 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002873 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002874 'ls-files',
2875 ':/*.[ch]'])
2876 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002877
userwithuide85a6902017-08-09 13:41:44 +00002878 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002879 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002880 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002881 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002882 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002883 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002884 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002885endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002886
2887if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002888 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002889 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002890 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002891 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002892endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002893
2894if git.found()
2895 git_head = run_command(
2896 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002897 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002898 'rev-parse', 'HEAD']).stdout().strip()
2899 git_head_short = run_command(
2900 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002901 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002902 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2903
2904 run_target(
2905 'git-snapshot',
2906 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002907 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002908 git_head_short),
2909 '--prefix', 'systemd-@0@/'.format(git_head),
2910 'HEAD'])
2911endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002912
2913############################################################
2914
Lennart Poettering51b13862017-12-20 12:51:14 +01002915meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2916run_target(
2917 'check-api-docs',
2918 depends : [man, libsystemd, libudev],
2919 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2920
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002921run_target(
2922 'make-index-md',
2923 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2924
Lennart Poettering51b13862017-12-20 12:51:14 +01002925############################################################
2926
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002927status = [
2928 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2929
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002930 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002931 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002932 'prefix directory: @0@'.format(prefixdir),
2933 'rootprefix directory: @0@'.format(rootprefixdir),
2934 'sysconf directory: @0@'.format(sysconfdir),
2935 'include directory: @0@'.format(includedir),
2936 'lib directory: @0@'.format(libdir),
2937 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002938 'SysV init scripts: @0@'.format(sysvinit_path),
2939 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002940 'PAM modules directory: @0@'.format(pamlibdir),
2941 'PAM configuration directory: @0@'.format(pamconfdir),
2942 'RPM macros directory: @0@'.format(rpmmacrosdir),
2943 'modprobe.d directory: @0@'.format(modprobedir),
2944 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2945 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2946 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2947 'bash completions directory: @0@'.format(bashcompletiondir),
2948 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002949 'extra start script: @0@'.format(get_option('rc-local')),
2950 'extra stop script: @0@'.format(get_option('halt-local')),
2951 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2952 get_option('debug-tty')),
2953 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002954 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002955 'maximum system UID: @0@'.format(system_uid_max),
2956 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002957 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2958 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2959 'minimum container UID base: @0@'.format(container_uid_base_min),
2960 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002961 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002962 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002963 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002964 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002965 'nobody user name: @0@'.format(nobody_user),
2966 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002967 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002968 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002969
2970 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002971 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002972 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2973 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2974
2975alt_dns_servers = '\n '.join(dns_servers.split(' '))
2976alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2977status += [
2978 'default DNS servers: @0@'.format(alt_dns_servers),
2979 'default NTP servers: @0@'.format(alt_ntp_servers)]
2980
2981alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2982 '@@0@'.format(time_epoch)).stdout().strip()
2983status += [
2984 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2985
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002986status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02002987 'static libsystemd: @0@'.format(static_libsystemd),
2988 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002989
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002990# TODO:
2991# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2992# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2993# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002995if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002996 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002997
2998 if have_gnu_efi
2999 status += [
3000 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3001 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003002 'EFI lib directory: @0@'.format(efi_libdir),
3003 'EFI lds directory: @0@'.format(efi_ldsdir),
3004 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003005 endif
3006endif
3007
3008found = []
3009missing = []
3010
3011foreach tuple : [
3012 ['libcryptsetup'],
3013 ['PAM'],
3014 ['AUDIT'],
3015 ['IMA'],
3016 ['AppArmor'],
3017 ['SELinux'],
3018 ['SECCOMP'],
3019 ['SMACK'],
3020 ['zlib'],
3021 ['xz'],
3022 ['lz4'],
3023 ['bzip2'],
3024 ['ACL'],
3025 ['gcrypt'],
3026 ['qrencode'],
3027 ['microhttpd'],
3028 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003029 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003030 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003031 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003032 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003033 ['libidn'],
3034 ['libiptc'],
3035 ['elfutils'],
3036 ['binfmt'],
3037 ['vconsole'],
3038 ['quotacheck'],
3039 ['tmpfiles'],
3040 ['environment.d'],
3041 ['sysusers'],
3042 ['firstboot'],
3043 ['randomseed'],
3044 ['backlight'],
3045 ['rfkill'],
3046 ['logind'],
3047 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003048 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049 ['importd'],
3050 ['hostnamed'],
3051 ['timedated'],
3052 ['timesyncd'],
3053 ['localed'],
3054 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003055 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003056 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3057 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058 ['coredump'],
3059 ['polkit'],
3060 ['legacy pkla', install_polkit_pkla],
3061 ['efi'],
3062 ['gnu-efi', have_gnu_efi],
3063 ['kmod'],
3064 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003065 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003066 ['blkid'],
3067 ['dbus'],
3068 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003069 ['nss-myhostname'],
3070 ['nss-mymachines'],
3071 ['nss-resolve'],
3072 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003073 ['hwdb'],
3074 ['tpm'],
3075 ['man pages', want_man],
3076 ['html pages', want_html],
3077 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078 ['SysV compat'],
3079 ['utmp'],
3080 ['ldconfig'],
3081 ['hibernate'],
3082 ['adm group', get_option('adm-group')],
3083 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003084 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003085 ['debug hashmap'],
3086 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003087 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003088 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003089 ['link-udev-shared', get_option('link-udev-shared')],
3090 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091]
3092
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003093 if tuple.length() >= 2
3094 cond = tuple[1]
3095 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003096 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3097 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003098 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099 endif
3100 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003101 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003103 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 endif
3105endforeach
3106
3107status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003108 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003110 '',
3111 'disabled features: @0@'.format(', '.join(missing)),
3112 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003114
3115if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003116 warning('\n' +
3117 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3118 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3119 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003120endif