blob: 39c427cd26e2df2d8f6ab9e5145c87c9665dd99a [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,
Yu Watanabebe44b572018-10-12 11:59:55 +09001412 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001413 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001414 build_by_default : static_libsystemd != 'false',
1415 install : static_libsystemd != 'false',
1416 install_dir : rootlibdir,
1417 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1418 dependencies : [threads,
1419 librt,
1420 libxz,
1421 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001422 libcap,
1423 libblkid,
1424 libmount,
1425 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001426 libgcrypt],
1427 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1428
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429############################################################
1430
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001431# binaries that have --help and are intended for use by humans,
1432# usually, but not always, installed in /bin.
1433public_programs = []
1434
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435subdir('src/libudev')
1436subdir('src/shared')
1437subdir('src/core')
1438subdir('src/udev')
1439subdir('src/network')
1440
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001441subdir('src/analyze')
1442subdir('src/journal-remote')
1443subdir('src/coredump')
1444subdir('src/hostname')
1445subdir('src/import')
1446subdir('src/kernel-install')
1447subdir('src/locale')
1448subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001449subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001450subdir('src/nspawn')
1451subdir('src/resolve')
1452subdir('src/timedate')
1453subdir('src/timesync')
1454subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001455subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001456
1457subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001458subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001459subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001460subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001461
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001462############################################################
1463
1464# only static linking apart from libdl, to make sure that the
1465# module is linked to all libraries that it uses.
1466test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 'test-dlopen',
1468 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001469 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 include_directories : includes,
1471 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001472 dependencies : [libdl],
1473 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001474
Yu Watanabe08540a92018-07-18 09:25:57 +09001475foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001476 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001477 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1478 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001479
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001480 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 if condition
1482 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001483
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001485 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001486
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001487 nss = shared_library(
1488 'nss_' + module,
1489 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001490 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 version : '2',
1492 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001493 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1494 link_args : ['-Wl,-z,nodelete',
1495 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 '-Wl,--version-script=' + version_script_arg,
1497 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001498 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 libbasic],
1500 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001501 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 link_depends : sym,
1503 install : true,
1504 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001505
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 # We cannot use shared_module because it does not support version suffix.
1507 # Unfortunately shared_library insists on creating the symlink…
1508 meson.add_install_script('sh', '-c',
1509 'rm $DESTDIR@0@/libnss_@1@.so'
1510 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001511
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001512 if want_tests != 'false'
1513 test('dlopen-nss_' + module,
1514 test_dlopen,
1515 # path to dlopen must include a slash
1516 args : nss.full_path())
1517 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001519endforeach
1520
1521############################################################
1522
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523executable('systemd',
1524 systemd_sources,
1525 include_directories : includes,
1526 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001527 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528 dependencies : [threads,
1529 librt,
1530 libseccomp,
1531 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001532 libmount,
1533 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001534 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535 install : true,
1536 install_dir : rootlibexecdir)
1537
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001538meson.add_install_script(meson_make_symlink,
1539 join_paths(rootlibexecdir, 'systemd'),
1540 join_paths(rootsbindir, 'init'))
1541
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542exe = executable('systemd-analyze',
1543 systemd_analyze_sources,
1544 include_directories : includes,
1545 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001546 libshared],
1547 dependencies : [threads,
1548 librt,
1549 libseccomp,
1550 libselinux,
1551 libmount,
1552 libblkid],
1553 install_rpath : rootlibexecdir,
1554 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001555public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001556
1557executable('systemd-journald',
1558 systemd_journald_sources,
1559 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001560 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001561 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001562 dependencies : [threads,
1563 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001564 liblz4,
1565 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001566 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001567 install : true,
1568 install_dir : rootlibexecdir)
1569
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001570exe = executable('systemd-cat',
1571 systemd_cat_sources,
1572 include_directories : includes,
1573 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001574 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575 dependencies : [threads],
1576 install_rpath : rootlibexecdir,
1577 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001578public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001579
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580exe = executable('journalctl',
1581 journalctl_sources,
1582 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001583 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 dependencies : [threads,
1585 libqrencode,
1586 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001587 liblz4,
1588 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589 install_rpath : rootlibexecdir,
1590 install : true,
1591 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001592public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001593
1594executable('systemd-getty-generator',
1595 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001596 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001597 link_with : [libshared],
1598 install_rpath : rootlibexecdir,
1599 install : true,
1600 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001601
1602executable('systemd-debug-generator',
1603 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001605 link_with : [libshared],
1606 install_rpath : rootlibexecdir,
1607 install : true,
1608 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609
1610executable('systemd-fstab-generator',
1611 'src/fstab-generator/fstab-generator.c',
1612 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001614 link_with : [libshared],
1615 install_rpath : rootlibexecdir,
1616 install : true,
1617 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001618
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001619if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 executable('30-systemd-environment-d-generator',
1621 'src/environment-d-generator/environment-d-generator.c',
1622 include_directories : includes,
1623 link_with : [libshared],
1624 install_rpath : rootlibexecdir,
1625 install : true,
1626 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001627
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 meson.add_install_script(meson_make_symlink,
1629 join_paths(sysconfdir, 'environment'),
1630 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631endif
1632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001633if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 executable('systemd-hibernate-resume-generator',
1635 'src/hibernate-resume/hibernate-resume-generator.c',
1636 include_directories : includes,
1637 link_with : [libshared],
1638 install_rpath : rootlibexecdir,
1639 install : true,
1640 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 executable('systemd-hibernate-resume',
1643 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 include_directories : includes,
1645 link_with : [libshared],
1646 install_rpath : rootlibexecdir,
1647 install : true,
1648 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649endif
1650
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001651if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 executable('systemd-gpt-auto-generator',
1653 'src/gpt-auto-generator/gpt-auto-generator.c',
1654 'src/basic/blkid-util.h',
1655 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001656 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 dependencies : libblkid,
1658 install_rpath : rootlibexecdir,
1659 install : true,
1660 install_dir : systemgeneratordir)
1661
1662 exe = executable('systemd-dissect',
1663 'src/dissect/dissect.c',
1664 include_directories : includes,
1665 link_with : [libshared],
1666 install_rpath : rootlibexecdir,
1667 install : true,
1668 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001669 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670endif
1671
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001672if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001673 executable('systemd-resolved',
1674 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001676 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001677 libbasic_gcrypt,
1678 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001679 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681 install : true,
1682 install_dir : rootlibexecdir)
1683
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001684 exe = executable('resolvectl',
1685 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001687 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001688 libbasic_gcrypt,
1689 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001691 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 libm,
1693 libidn],
1694 install_rpath : rootlibexecdir,
1695 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001696 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001697
1698 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001699 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001700 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001701
1702 meson.add_install_script(meson_make_symlink,
1703 join_paths(bindir, 'resolvectl'),
1704 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705endif
1706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 executable('systemd-logind',
1709 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001710 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001712 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001713 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001715 install_rpath : rootlibexecdir,
1716 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 exe = executable('loginctl',
1720 loginctl_sources,
1721 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001722 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 dependencies : [threads,
1724 liblz4,
1725 libxz],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001729 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 exe = executable('systemd-inhibit',
1732 'src/login/inhibit.c',
1733 include_directories : includes,
1734 link_with : [libshared],
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001738 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001740 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001741 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 pam_systemd = shared_library(
1743 'pam_systemd',
1744 pam_systemd_c,
1745 name_prefix : '',
1746 include_directories : includes,
1747 link_args : ['-shared',
1748 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001749 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 libshared_static],
1751 dependencies : [threads,
1752 libpam,
1753 libpam_misc],
1754 link_depends : pam_systemd_sym,
1755 install : true,
1756 install_dir : pamlibdir)
1757
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001758 if want_tests != 'false'
1759 test('dlopen-pam_systemd',
1760 test_dlopen,
1761 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001762 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001763 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001765endif
1766
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001767executable('systemd-user-runtime-dir',
1768 user_runtime_dir_sources,
1769 include_directories : includes,
1770 link_with : [libshared, liblogind_core],
1771 install_rpath : rootlibexecdir,
1772 install : true,
1773 install_dir : rootlibexecdir)
1774
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001775if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 executable('systemd-user-sessions',
1777 'src/user-sessions/user-sessions.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 install_rpath : rootlibexecdir,
1781 install : true,
1782 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783endif
1784
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001785if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001786 exe = executable('bootctl',
1787 'src/boot/bootctl.c',
1788 include_directories : includes,
1789 link_with : [libshared],
1790 dependencies : [libblkid],
1791 install_rpath : rootlibexecdir,
1792 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001793 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794endif
1795
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001796exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 dependencies : [threads],
1800 install_rpath : rootlibexecdir,
1801 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001802public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Felipe Satelerf3794362018-05-22 15:08:57 -04001804
1805if get_option('link-systemctl-shared')
1806 systemctl_link_with = [libshared]
1807else
1808 systemctl_link_with = [libsystemd_static,
1809 libshared_static,
1810 libjournal_client,
1811 libbasic_gcrypt]
1812endif
1813
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001814exe = executable('systemctl', 'src/systemctl/systemctl.c',
1815 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001816 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 dependencies : [threads,
1818 libcap,
1819 libselinux,
1820 libxz,
1821 liblz4],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001825public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826
Lennart Poettering61d05782018-04-16 21:41:40 +02001827if conf.get('ENABLE_PORTABLED') == 1
1828 executable('systemd-portabled',
1829 systemd_portabled_sources,
1830 include_directories : includes,
1831 link_with : [libshared],
1832 dependencies : [threads],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootlibexecdir)
1836
1837 exe = executable('portablectl', 'src/portable/portablectl.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 dependencies : [threads],
1841 install_rpath : rootlibexecdir,
1842 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001843 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001844 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001845endif
1846
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001847foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1848 meson.add_install_script(meson_make_symlink,
1849 join_paths(rootbindir, 'systemctl'),
1850 join_paths(rootsbindir, alias))
1851endforeach
1852
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001853if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 executable('systemd-backlight',
1855 'src/backlight/backlight.c',
1856 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001857 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861endif
1862
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001863if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 executable('systemd-rfkill',
1865 'src/rfkill/rfkill.c',
1866 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001867 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871endif
1872
1873executable('systemd-system-update-generator',
1874 'src/system-update-generator/system-update-generator.c',
1875 include_directories : includes,
1876 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001877 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001878 install : true,
1879 install_dir : systemgeneratordir)
1880
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001881if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 executable('systemd-cryptsetup',
1883 'src/cryptsetup/cryptsetup.c',
1884 include_directories : includes,
1885 link_with : [libshared],
1886 dependencies : [libcryptsetup],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891 executable('systemd-cryptsetup-generator',
1892 'src/cryptsetup/cryptsetup-generator.c',
1893 include_directories : includes,
1894 link_with : [libshared],
1895 dependencies : [libcryptsetup],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 executable('systemd-veritysetup',
1901 'src/veritysetup/veritysetup.c',
1902 include_directories : includes,
1903 link_with : [libshared],
1904 dependencies : [libcryptsetup],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001908
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 executable('systemd-veritysetup-generator',
1910 'src/veritysetup/veritysetup-generator.c',
1911 include_directories : includes,
1912 link_with : [libshared],
1913 dependencies : [libcryptsetup],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917endif
1918
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001919if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001920 executable('systemd-sysv-generator',
1921 'src/sysv-generator/sysv-generator.c',
1922 include_directories : includes,
1923 link_with : [libshared],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001928 executable('systemd-rc-local-generator',
1929 'src/rc-local-generator/rc-local-generator.c',
1930 include_directories : includes,
1931 link_with : [libshared],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935endif
1936
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001937if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 executable('systemd-hostnamed',
1939 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001940 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001941 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001942 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 install : true,
1944 install_dir : rootlibexecdir)
1945
1946 exe = executable('hostnamectl',
1947 'src/hostname/hostnamectl.c',
1948 include_directories : includes,
1949 link_with : [libshared],
1950 install_rpath : rootlibexecdir,
1951 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001952 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001953endif
1954
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001955if conf.get('ENABLE_LOCALED') == 1
1956 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 # logind will load libxkbcommon.so dynamically on its own
1958 deps = [libdl]
1959 else
1960 deps = []
1961 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001962
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 executable('systemd-localed',
1964 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001965 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001966 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001968 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 install : true,
1970 install_dir : rootlibexecdir)
1971
1972 exe = executable('localectl',
1973 localectl_sources,
1974 include_directories : includes,
1975 link_with : [libshared],
1976 install_rpath : rootlibexecdir,
1977 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001978 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979endif
1980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 executable('systemd-timedated',
1983 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001984 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001985 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001989endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990
Yu Watanabe6129ec82018-05-03 18:07:43 +09001991if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 exe = executable('timedatectl',
1993 'src/timedate/timedatectl.c',
1994 include_directories : includes,
1995 install_rpath : rootlibexecdir,
1996 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001997 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001999 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000endif
2001
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002002if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002003 executable('systemd-timesyncd',
2004 systemd_timesyncd_sources,
2005 include_directories : includes,
2006 link_with : [libshared],
2007 dependencies : [threads,
2008 libm],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002012
2013 executable('systemd-time-wait-sync',
2014 'src/time-wait-sync/time-wait-sync.c',
2015 include_directories : includes,
2016 link_with : [libshared],
2017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020endif
2021
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002022if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 executable('systemd-machined',
2024 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002025 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 link_with : [libmachine_core,
2027 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002028 install_rpath : rootlibexecdir,
2029 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 install_dir : rootlibexecdir)
2031
2032 exe = executable('machinectl',
2033 'src/machine/machinectl.c',
2034 include_directories : includes,
2035 link_with : [libshared],
2036 dependencies : [threads,
2037 libxz,
2038 liblz4],
2039 install_rpath : rootlibexecdir,
2040 install : true,
2041 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002042 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043endif
2044
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002045if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002046 executable('systemd-importd',
2047 systemd_importd_sources,
2048 include_directories : includes,
2049 link_with : [libshared],
2050 dependencies : [threads],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002054
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002055 systemd_pull = executable('systemd-pull',
2056 systemd_pull_sources,
2057 include_directories : includes,
2058 link_with : [libshared],
2059 dependencies : [libcurl,
2060 libz,
2061 libbzip2,
2062 libxz,
2063 libgcrypt],
2064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 systemd_import = executable('systemd-import',
2069 systemd_import_sources,
2070 include_directories : includes,
2071 link_with : [libshared],
2072 dependencies : [libcurl,
2073 libz,
2074 libbzip2,
2075 libxz],
2076 install_rpath : rootlibexecdir,
2077 install : true,
2078 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 systemd_export = executable('systemd-export',
2081 systemd_export_sources,
2082 include_directories : includes,
2083 link_with : [libshared],
2084 dependencies : [libcurl,
2085 libz,
2086 libbzip2,
2087 libxz],
2088 install_rpath : rootlibexecdir,
2089 install : true,
2090 install_dir : rootlibexecdir)
2091 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002092endif
2093
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002094if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002095 exe = executable('systemd-journal-upload',
2096 systemd_journal_upload_sources,
2097 include_directories : includes,
2098 link_with : [libshared],
2099 dependencies : [threads,
2100 libcurl,
2101 libgnutls,
2102 libxz,
2103 liblz4],
2104 install_rpath : rootlibexecdir,
2105 install : true,
2106 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002107 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108endif
2109
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002110if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 s_j_remote = executable('systemd-journal-remote',
2112 systemd_journal_remote_sources,
2113 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002114 link_with : [libshared,
2115 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 dependencies : [threads,
2117 libmicrohttpd,
2118 libgnutls,
2119 libxz,
2120 liblz4],
2121 install_rpath : rootlibexecdir,
2122 install : true,
2123 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 s_j_gatewayd = executable('systemd-journal-gatewayd',
2126 systemd_journal_gatewayd_sources,
2127 include_directories : includes,
2128 link_with : [libshared],
2129 dependencies : [threads,
2130 libmicrohttpd,
2131 libgnutls,
2132 libxz,
2133 liblz4],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
2137 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002138endif
2139
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002140if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 executable('systemd-coredump',
2142 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002144 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002145 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 libacl,
2147 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002148 libxz,
2149 liblz4],
2150 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002151 install : true,
2152 install_dir : rootlibexecdir)
2153
2154 exe = executable('coredumpctl',
2155 coredumpctl_sources,
2156 include_directories : includes,
2157 link_with : [libshared],
2158 dependencies : [threads,
2159 libxz,
2160 liblz4],
2161 install_rpath : rootlibexecdir,
2162 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002163 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164endif
2165
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002166if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002167 exe = executable('systemd-binfmt',
2168 'src/binfmt/binfmt.c',
2169 include_directories : includes,
2170 link_with : [libshared],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002174 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002175
2176 meson.add_install_script('sh', '-c',
2177 mkdir_p.format(binfmtdir))
2178 meson.add_install_script('sh', '-c',
2179 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2180endif
2181
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002182if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 executable('systemd-vconsole-setup',
2184 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002185 include_directories : includes,
2186 link_with : [libshared],
2187 install_rpath : rootlibexecdir,
2188 install : true,
2189 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190endif
2191
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002192if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002193 executable('systemd-random-seed',
2194 'src/random-seed/random-seed.c',
2195 include_directories : includes,
2196 link_with : [libshared],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200endif
2201
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002202if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 executable('systemd-firstboot',
2204 'src/firstboot/firstboot.c',
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [libcrypt],
2208 install_rpath : rootlibexecdir,
2209 install : true,
2210 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002211endif
2212
2213executable('systemd-remount-fs',
2214 'src/remount-fs/remount-fs.c',
2215 'src/core/mount-setup.c',
2216 'src/core/mount-setup.h',
2217 include_directories : includes,
2218 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002219 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220 install : true,
2221 install_dir : rootlibexecdir)
2222
2223executable('systemd-machine-id-setup',
2224 'src/machine-id-setup/machine-id-setup-main.c',
2225 'src/core/machine-id-setup.c',
2226 'src/core/machine-id-setup.h',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002229 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230 install : true,
2231 install_dir : rootbindir)
2232
2233executable('systemd-fsck',
2234 'src/fsck/fsck.c',
2235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002236 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002237 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002238 install : true,
2239 install_dir : rootlibexecdir)
2240
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002241executable('systemd-growfs',
2242 'src/partition/growfs.c',
2243 include_directories : includes,
2244 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002245 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002246 install_rpath : rootlibexecdir,
2247 install : true,
2248 install_dir : rootlibexecdir)
2249
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002250executable('systemd-makefs',
2251 'src/partition/makefs.c',
2252 include_directories : includes,
2253 link_with : [libshared],
2254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : rootlibexecdir)
2257
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258executable('systemd-sleep',
2259 'src/sleep/sleep.c',
2260 include_directories : includes,
2261 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002262 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263 install : true,
2264 install_dir : rootlibexecdir)
2265
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266exe = executable('systemd-sysctl',
2267 'src/sysctl/sysctl.c',
2268 include_directories : includes,
2269 link_with : [libshared],
2270 install_rpath : rootlibexecdir,
2271 install : true,
2272 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002273public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274
2275executable('systemd-ac-power',
2276 'src/ac-power/ac-power.c',
2277 include_directories : includes,
2278 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002279 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280 install : true,
2281 install_dir : rootlibexecdir)
2282
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283exe = executable('systemd-detect-virt',
2284 'src/detect-virt/detect-virt.c',
2285 include_directories : includes,
2286 link_with : [libshared],
2287 install_rpath : rootlibexecdir,
2288 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002289public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002290
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291exe = executable('systemd-delta',
2292 'src/delta/delta.c',
2293 include_directories : includes,
2294 link_with : [libshared],
2295 install_rpath : rootlibexecdir,
2296 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002297public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299exe = executable('systemd-escape',
2300 'src/escape/escape.c',
2301 include_directories : includes,
2302 link_with : [libshared],
2303 install_rpath : rootlibexecdir,
2304 install : true,
2305 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002306public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308exe = executable('systemd-notify',
2309 'src/notify/notify.c',
2310 include_directories : includes,
2311 link_with : [libshared],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002315public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316
2317executable('systemd-volatile-root',
2318 'src/volatile-root/volatile-root.c',
2319 include_directories : includes,
2320 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002321 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002322 install : true,
2323 install_dir : rootlibexecdir)
2324
2325executable('systemd-cgroups-agent',
2326 'src/cgroups-agent/cgroups-agent.c',
2327 include_directories : includes,
2328 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002329 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330 install : true,
2331 install_dir : rootlibexecdir)
2332
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002333exe = executable('systemd-id128',
2334 'src/id128/id128.c',
2335 include_directories : includes,
2336 link_with : [libshared],
2337 install_rpath : rootlibexecdir,
2338 install : true)
2339public_programs += exe
2340
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341exe = executable('systemd-path',
2342 'src/path/path.c',
2343 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002344 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345 install_rpath : rootlibexecdir,
2346 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002347public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-ask-password',
2350 'src/ask-password/ask-password.c',
2351 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002352 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353 install_rpath : rootlibexecdir,
2354 install : true,
2355 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002356public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
2358executable('systemd-reply-password',
2359 'src/reply-password/reply-password.c',
2360 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-tty-ask-password-agent',
2367 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 install_rpath : rootlibexecdir,
2371 install : true,
2372 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002373public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375exe = executable('systemd-cgls',
2376 'src/cgls/cgls.c',
2377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 install_rpath : rootlibexecdir,
2380 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002381public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383exe = executable('systemd-cgtop',
2384 'src/cgtop/cgtop.c',
2385 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387 install_rpath : rootlibexecdir,
2388 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002389public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
2391executable('systemd-initctl',
2392 'src/initctl/initctl.c',
2393 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002394 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002395 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396 install : true,
2397 install_dir : rootlibexecdir)
2398
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399exe = executable('systemd-mount',
2400 'src/mount/mount-tool.c',
2401 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403 install_rpath : rootlibexecdir,
2404 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002405public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002407meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002408 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002409
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410exe = executable('systemd-run',
2411 'src/run/run.c',
2412 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002413 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414 install_rpath : rootlibexecdir,
2415 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002416public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002417
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002418exe = executable('systemd-stdio-bridge',
2419 'src/stdio-bridge/stdio-bridge.c',
2420 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002421 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422 install_rpath : rootlibexecdir,
2423 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002424public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002426exe = executable('busctl',
2427 'src/busctl/busctl.c',
2428 'src/busctl/busctl-introspect.c',
2429 'src/busctl/busctl-introspect.h',
2430 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432 install_rpath : rootlibexecdir,
2433 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002434public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002436if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002437 exe = executable('systemd-sysusers',
2438 'src/sysusers/sysusers.c',
2439 include_directories : includes,
2440 link_with : [libshared],
2441 install_rpath : rootlibexecdir,
2442 install : true,
2443 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002444 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002445endif
2446
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002447if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002448 exe = executable('systemd-tmpfiles',
2449 'src/tmpfiles/tmpfiles.c',
2450 include_directories : includes,
2451 link_with : [libshared],
2452 dependencies : [libacl],
2453 install_rpath : rootlibexecdir,
2454 install : true,
2455 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002456 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002457
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002458 if want_tests != 'false'
2459 test('test-systemd-tmpfiles',
2460 test_systemd_tmpfiles_py,
2461 # https://github.com/mesonbuild/meson/issues/2681
2462 args : exe.full_path())
2463 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464endif
2465
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002466if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002467 exe = executable('systemd-hwdb',
2468 'src/hwdb/hwdb.c',
2469 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2470 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002471 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002472 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 install : true,
2474 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002476endif
2477
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002478if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002479 executable('systemd-quotacheck',
2480 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002482 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002483 install_rpath : rootlibexecdir,
2484 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002485 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486endif
2487
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488exe = executable('systemd-socket-proxyd',
2489 'src/socket-proxy/socket-proxyd.c',
2490 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492 dependencies : [threads],
2493 install_rpath : rootlibexecdir,
2494 install : true,
2495 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002496public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498exe = executable('systemd-udevd',
2499 systemd_udevd_sources,
2500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002501 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002504 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002505 dependencies : [threads,
2506 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002508 libacl,
2509 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002510 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 install : true,
2512 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002513public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002514
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515exe = executable('udevadm',
2516 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002517 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002518 include_directories : includes,
2519 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002521 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002522 dependencies : [threads,
2523 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002525 libacl,
2526 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002527 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 install : true,
2529 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002530public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531
2532executable('systemd-shutdown',
2533 systemd_shutdown_sources,
2534 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002536 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002537 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002538 install : true,
2539 install_dir : rootlibexecdir)
2540
2541executable('systemd-update-done',
2542 'src/update-done/update-done.c',
2543 include_directories : includes,
2544 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002545 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002546 install : true,
2547 install_dir : rootlibexecdir)
2548
2549executable('systemd-update-utmp',
2550 'src/update-utmp/update-utmp.c',
2551 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002552 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002554 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002555 install : true,
2556 install_dir : rootlibexecdir)
2557
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002558if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002559 executable('systemd-modules-load',
2560 'src/modules-load/modules-load.c',
2561 include_directories : includes,
2562 link_with : [libshared],
2563 dependencies : [libkmod],
2564 install_rpath : rootlibexecdir,
2565 install : true,
2566 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002567
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002568 meson.add_install_script('sh', '-c',
2569 mkdir_p.format(modulesloaddir))
2570 meson.add_install_script('sh', '-c',
2571 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572endif
2573
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002574exe = executable('systemd-nspawn',
2575 systemd_nspawn_sources,
2576 'src/core/mount-setup.c', # FIXME: use a variable?
2577 'src/core/mount-setup.h',
2578 'src/core/loopback-setup.c',
2579 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002580 include_directories : includes,
2581 link_with : [libnspawn_core,
2582 libshared],
2583 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002584 install_rpath : rootlibexecdir,
2585 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002586public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002588if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 executable('systemd-networkd',
2590 systemd_networkd_sources,
2591 include_directories : includes,
2592 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002593 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002594 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002596 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 install_rpath : rootlibexecdir,
2598 install : true,
2599 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002600
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 executable('systemd-networkd-wait-online',
2602 systemd_networkd_wait_online_sources,
2603 include_directories : includes,
2604 link_with : [libnetworkd_core,
2605 libshared],
2606 install_rpath : rootlibexecdir,
2607 install : true,
2608 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002610 exe = executable('networkctl',
2611 networkctl_sources,
2612 include_directories : includes,
2613 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002614 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002615 install_rpath : rootlibexecdir,
2616 install : true,
2617 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002618 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002619endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002620
2621executable('systemd-sulogin-shell',
2622 ['src/sulogin-shell/sulogin-shell.c'],
2623 include_directories : includes,
2624 link_with : [libshared],
2625 install_rpath : rootlibexecdir,
2626 install : true,
2627 install_dir : rootlibexecdir)
2628
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002629############################################################
2630
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002631custom_target(
2632 'systemd-runtest.env',
2633 output : 'systemd-runtest.env',
2634 command : ['sh', '-c', '{ ' +
2635 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002636 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002637 '} >@OUTPUT@'],
2638 build_by_default : true)
2639
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002640foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002641 sources = tuple[0]
2642 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2643 dependencies = tuple[2]
2644 condition = tuple.length() >= 4 ? tuple[3] : ''
2645 type = tuple.length() >= 5 ? tuple[4] : ''
2646 defs = tuple.length() >= 6 ? tuple[5] : []
2647 incs = tuple.length() >= 7 ? tuple[6] : includes
2648 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002649
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002650 name = sources[0].split('/')[-1].split('.')[0]
2651 if type.startswith('timeout=')
2652 timeout = type.split('=')[1].to_int()
2653 type = ''
2654 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002655
2656 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002657 exe = executable(
2658 name,
2659 sources,
2660 include_directories : incs,
2661 link_with : link_with,
2662 dependencies : dependencies,
2663 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002664 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002665 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002666 install : install_tests,
2667 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002668
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002669 if type == 'manual'
2670 message('@0@ is a manual test'.format(name))
2671 elif type == 'unsafe' and want_tests != 'unsafe'
2672 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002673 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002674 test(name, exe,
2675 env : test_env,
2676 timeout : timeout)
2677 endif
2678 else
2679 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2680 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002681endforeach
2682
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002683exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002684 'test-libsystemd-sym',
2685 test_libsystemd_sym_c,
2686 include_directories : includes,
2687 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002688 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002689 install : install_tests,
2690 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002691if want_tests != 'false'
2692 test('test-libsystemd-sym', exe)
2693endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002694
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002695exe = executable(
2696 'test-libsystemd-static-sym',
2697 test_libsystemd_sym_c,
2698 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002699 link_with : [install_libsystemd_static],
2700 dependencies : [threads], # threads is already included in dependencies on the library,
2701 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002702 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002703 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002704 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002705if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002706 test('test-libsystemd-static-sym', exe)
2707endif
2708
2709exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 'test-libudev-sym',
2711 test_libudev_sym_c,
2712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002713 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002715 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 install : install_tests,
2717 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002718if want_tests != 'false'
2719 test('test-libudev-sym', exe)
2720endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002721
2722exe = executable(
2723 'test-libudev-static-sym',
2724 test_libudev_sym_c,
2725 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002726 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002727 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002728 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002729 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002730 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002731if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002732 test('test-libudev-static-sym', exe)
2733endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002734
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002735############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002736
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002737fuzzer_exes = []
2738
2739foreach tuple : fuzzers
2740 sources = tuple[0]
2741 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2742 dependencies = tuple[2]
2743 defs = tuple.length() >= 4 ? tuple[3] : []
2744 incs = tuple.length() >= 5 ? tuple[4] : includes
2745
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002746 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002747 dependencies += fuzzing_engine
2748 else
2749 sources += 'src/fuzz/fuzz-main.c'
2750 endif
2751
2752 name = sources[0].split('/')[-1].split('.')[0]
2753
2754 fuzzer_exes += executable(
2755 name,
2756 sources,
2757 include_directories : [incs, include_directories('src/fuzz')],
2758 link_with : link_with,
2759 dependencies : dependencies,
2760 c_args : defs,
2761 install : false)
2762endforeach
2763
2764run_target('fuzzers',
2765 depends : fuzzer_exes,
2766 command : ['true'])
2767
2768############################################################
2769
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002770make_directive_index_py = find_program('tools/make-directive-index.py')
2771make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002772xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002773hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002774
2775subdir('units')
2776subdir('sysctl.d')
2777subdir('sysusers.d')
2778subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002779subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002780subdir('hwdb')
2781subdir('network')
2782subdir('man')
2783subdir('shell-completion/bash')
2784subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002785subdir('docs/sysvinit')
2786subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002787
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002788install_subdir('factory/etc',
2789 install_dir : factorydir)
2790
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002791install_data('xorg/50-systemd-user.sh',
2792 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002793install_data('modprobe.d/systemd.conf',
2794 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002795install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002796 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002797 'NEWS',
2798 'README',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002799 'docs/CODING_STYLE',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002800 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002801 'docs/ENVIRONMENT.md',
2802 'docs/HACKING',
2803 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002804 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002805 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002806 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2807 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002808
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002809meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2810meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2811
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002812############################################################
2813
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002814meson_check_help = find_program('tools/meson-check-help.sh')
2815
2816foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002818 if want_tests != 'false'
2819 test('check-help-' + name,
2820 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002821 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002822 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002823endforeach
2824
2825############################################################
2826
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002827# Enable tests for all supported sanitizers
2828foreach tuple : sanitizers
2829 sanitizer = tuple[0]
2830 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002831
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002832 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002833 prev = ''
2834 foreach p : fuzz_regression_tests
2835 b = p.split('/')[-2]
2836 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002837
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002838 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002839
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002840 if name != prev
2841 if want_tests == 'false'
2842 message('Not compiling @0@ because tests is set to false'.format(name))
2843 elif slow_tests
2844 exe = custom_target(
2845 name,
2846 output : name,
2847 depends : build,
2848 command : [env, 'ln', '-fs',
2849 join_paths(build.full_path(), b),
2850 '@OUTPUT@'],
2851 build_by_default : true)
2852 else
2853 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2854 endif
2855 endif
2856 prev = name
2857
2858 if want_tests != 'false' and slow_tests
2859 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2860 env,
2861 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002862 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002863 endif
2864 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002865 endif
2866endforeach
2867
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002868
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002869############################################################
2870
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002871if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002872 all_files = run_command(
2873 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002874 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002875 'ls-files',
2876 ':/*.[ch]'])
2877 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002878
userwithuide85a6902017-08-09 13:41:44 +00002879 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002880 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002881 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002882 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002883 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002884 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002885 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002886endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002887
2888if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002889 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002890 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002891 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002892 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002893endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002894
2895if git.found()
2896 git_head = run_command(
2897 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002898 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002899 'rev-parse', 'HEAD']).stdout().strip()
2900 git_head_short = run_command(
2901 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002902 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002903 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2904
2905 run_target(
2906 'git-snapshot',
2907 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002908 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002909 git_head_short),
2910 '--prefix', 'systemd-@0@/'.format(git_head),
2911 'HEAD'])
2912endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002913
2914############################################################
2915
Lennart Poettering51b13862017-12-20 12:51:14 +01002916meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2917run_target(
2918 'check-api-docs',
2919 depends : [man, libsystemd, libudev],
2920 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2921
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002922run_target(
2923 'make-index-md',
2924 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2925
Lennart Poettering51b13862017-12-20 12:51:14 +01002926############################################################
2927
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002928status = [
2929 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2930
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002931 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002932 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002933 'prefix directory: @0@'.format(prefixdir),
2934 'rootprefix directory: @0@'.format(rootprefixdir),
2935 'sysconf directory: @0@'.format(sysconfdir),
2936 'include directory: @0@'.format(includedir),
2937 'lib directory: @0@'.format(libdir),
2938 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 'SysV init scripts: @0@'.format(sysvinit_path),
2940 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002941 'PAM modules directory: @0@'.format(pamlibdir),
2942 'PAM configuration directory: @0@'.format(pamconfdir),
2943 'RPM macros directory: @0@'.format(rpmmacrosdir),
2944 'modprobe.d directory: @0@'.format(modprobedir),
2945 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2946 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2947 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2948 'bash completions directory: @0@'.format(bashcompletiondir),
2949 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002950 'extra start script: @0@'.format(get_option('rc-local')),
2951 'extra stop script: @0@'.format(get_option('halt-local')),
2952 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2953 get_option('debug-tty')),
2954 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002955 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002956 'maximum system UID: @0@'.format(system_uid_max),
2957 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002958 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2959 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2960 'minimum container UID base: @0@'.format(container_uid_base_min),
2961 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002962 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002963 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002964 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002965 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002966 'nobody user name: @0@'.format(nobody_user),
2967 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002968 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002969 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002970
2971 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02002972 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002973 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2974 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2975
2976alt_dns_servers = '\n '.join(dns_servers.split(' '))
2977alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2978status += [
2979 'default DNS servers: @0@'.format(alt_dns_servers),
2980 'default NTP servers: @0@'.format(alt_ntp_servers)]
2981
2982alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2983 '@@0@'.format(time_epoch)).stdout().strip()
2984status += [
2985 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2986
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002987status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02002988 'static libsystemd: @0@'.format(static_libsystemd),
2989 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02002990
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002991# TODO:
2992# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2993# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2994# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2995
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002996if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002997 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002998
2999 if have_gnu_efi
3000 status += [
3001 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3002 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003003 'EFI lib directory: @0@'.format(efi_libdir),
3004 'EFI lds directory: @0@'.format(efi_ldsdir),
3005 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003006 endif
3007endif
3008
3009found = []
3010missing = []
3011
3012foreach tuple : [
3013 ['libcryptsetup'],
3014 ['PAM'],
3015 ['AUDIT'],
3016 ['IMA'],
3017 ['AppArmor'],
3018 ['SELinux'],
3019 ['SECCOMP'],
3020 ['SMACK'],
3021 ['zlib'],
3022 ['xz'],
3023 ['lz4'],
3024 ['bzip2'],
3025 ['ACL'],
3026 ['gcrypt'],
3027 ['qrencode'],
3028 ['microhttpd'],
3029 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003030 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003031 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003032 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003033 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003034 ['libidn'],
3035 ['libiptc'],
3036 ['elfutils'],
3037 ['binfmt'],
3038 ['vconsole'],
3039 ['quotacheck'],
3040 ['tmpfiles'],
3041 ['environment.d'],
3042 ['sysusers'],
3043 ['firstboot'],
3044 ['randomseed'],
3045 ['backlight'],
3046 ['rfkill'],
3047 ['logind'],
3048 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003049 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003050 ['importd'],
3051 ['hostnamed'],
3052 ['timedated'],
3053 ['timesyncd'],
3054 ['localed'],
3055 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003056 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003057 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3058 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003059 ['coredump'],
3060 ['polkit'],
3061 ['legacy pkla', install_polkit_pkla],
3062 ['efi'],
3063 ['gnu-efi', have_gnu_efi],
3064 ['kmod'],
3065 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003066 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067 ['blkid'],
3068 ['dbus'],
3069 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003070 ['nss-myhostname'],
3071 ['nss-mymachines'],
3072 ['nss-resolve'],
3073 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 ['hwdb'],
3075 ['tpm'],
3076 ['man pages', want_man],
3077 ['html pages', want_html],
3078 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003079 ['SysV compat'],
3080 ['utmp'],
3081 ['ldconfig'],
3082 ['hibernate'],
3083 ['adm group', get_option('adm-group')],
3084 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003085 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003086 ['debug hashmap'],
3087 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003088 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003089 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003090 ['link-udev-shared', get_option('link-udev-shared')],
3091 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092]
3093
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003094 if tuple.length() >= 2
3095 cond = tuple[1]
3096 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3098 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003099 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100 endif
3101 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003102 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003104 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003105 endif
3106endforeach
3107
3108status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003109 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003111 '',
3112 'disabled features: @0@'.format(', '.join(missing)),
3113 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003115
3116if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003117 warning('\n' +
3118 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3119 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3120 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003121endif