blob: ccea9457209b7e82f9f46f135c1109ed82100325 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020030want_ossfuzz = get_option('oss-fuzz')
31want_libfuzzer = get_option('llvm-fuzz')
32if want_ossfuzz and want_libfuzzer
33 error('only one of oss-fuzz and llvm-fuzz can be specified')
34endif
35fuzzer_build = want_ossfuzz or want_libfuzzer
36
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040037#####################################################################
38
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040039# Try to install the git pre-commit hook
40git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
41if git_hook.returncode() == 0
42 message(git_hook.stdout().strip())
43endif
44
45#####################################################################
46
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010047if get_option('split-usr') == 'auto'
48 split_usr = run_command('test', '-L', '/bin').returncode() != 0
49else
50 split_usr = get_option('split-usr') == 'true'
51endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010052conf.set10('HAVE_SPLIT_USR', split_usr,
53 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010054
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055if get_option('split-bin') == 'auto'
56 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
57else
58 split_bin = get_option('split-bin') == 'true'
59endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010060conf.set10('HAVE_SPLIT_BIN', split_bin,
61 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010062
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064# Unusual rootprefixdir values are used by some distros
65# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010066rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067if rootprefixdir == ''
68 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +020078conf.set('HIGH_RLIMIT_NOFILE', 256*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020079
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080# join_paths ignore the preceding arguments if an absolute component is
81# encountered, so this should canonicalize various paths when they are
82# absolute or relative.
83prefixdir = get_option('prefix')
84if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040085 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086endif
87bindir = join_paths(prefixdir, get_option('bindir'))
88libdir = join_paths(prefixdir, get_option('libdir'))
89sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
90includedir = join_paths(prefixdir, get_option('includedir'))
91datadir = join_paths(prefixdir, get_option('datadir'))
92localstatedir = join_paths('/', get_option('localstatedir'))
93
94rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010095rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
97
98rootlibdir = get_option('rootlibdir')
99if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400100 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101endif
102
103# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200104pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
105pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400106polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
107polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
108polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
109varlogdir = join_paths(localstatedir, 'log')
110xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900111rpmmacrosdir = get_option('rpmmacrosdir')
112if rpmmacrosdir != 'no'
113 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
114endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200115modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400116
117# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118pkgdatadir = join_paths(datadir, 'systemd')
119environmentdir = join_paths(prefixdir, 'lib/environment.d')
120pkgsysconfdir = join_paths(sysconfdir, 'systemd')
121userunitdir = join_paths(prefixdir, 'lib/systemd/user')
122userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
123tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
124sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
125sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
126binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
127modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
128networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
129pkgincludedir = join_paths(includedir, 'systemd')
130systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
131usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
132systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
133userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
134systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
135systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
136systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
137systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
138udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
139udevhomedir = udevlibexecdir
140udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
141udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
142catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
143kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
144factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
146testsdir = join_paths(prefixdir, 'lib/systemd/tests')
147systemdstatedir = join_paths(localstatedir, 'lib/systemd')
148catalogstatedir = join_paths(systemdstatedir, 'catalog')
149randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200150profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151
tblume75aaade2018-02-01 22:46:15 +0100152docdir = get_option('docdir')
153if docdir == ''
154 docdir = join_paths(datadir, 'doc/systemd')
155endif
156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157dbuspolicydir = get_option('dbuspolicydir')
158if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162dbussessionservicedir = get_option('dbussessionservicedir')
163if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussystemservicedir = get_option('dbussystemservicedir')
168if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172pamlibdir = get_option('pamlibdir')
173if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamconfdir = get_option('pamconfdir')
178if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100182memory_accounting_default = get_option('memory-accounting-default')
183
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
187conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
188conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
190conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100191
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100192conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100193
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
196conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
198conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
199conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
200conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100201conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100202conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
204conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
205conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
206conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
207conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100208conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400209conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
211conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
213conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
214conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
215conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
216conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
217conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
219conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700220conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700221conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('LIBDIR', libdir)
225conf.set_quoted('ROOTLIBDIR', rootlibdir)
226conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
227conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
229conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
230conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
231conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
232conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
233conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200234conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100235conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('exec_prefix', prefixdir)
239substs.set('libdir', libdir)
240substs.set('rootlibdir', rootlibdir)
241substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('bindir', bindir)
244substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('rootlibexecdir', rootlibexecdir)
246substs.set('systemunitdir', systemunitdir)
247substs.set('userunitdir', userunitdir)
248substs.set('systempresetdir', systempresetdir)
249substs.set('userpresetdir', userpresetdir)
250substs.set('udevhwdbdir', udevhwdbdir)
251substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200253substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('catalogdir', catalogdir)
255substs.set('tmpfilesdir', tmpfilesdir)
256substs.set('sysusersdir', sysusersdir)
257substs.set('sysctldir', sysctldir)
258substs.set('binfmtdir', binfmtdir)
259substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200260substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('systemgeneratordir', systemgeneratordir)
262substs.set('usergeneratordir', usergeneratordir)
263substs.set('systemenvgeneratordir', systemenvgeneratordir)
264substs.set('userenvgeneratordir', userenvgeneratordir)
265substs.set('systemshutdowndir', systemshutdowndir)
266substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('VARLOGDIR', varlogdir)
268substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400269substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
270substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400271substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
272substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
273substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
274substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100275substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200276substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277
278#####################################################################
279
280cc = meson.get_compiler('c')
281pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400282check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100283meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400284
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200285want_tests = get_option('tests')
286slow_tests = want_tests != 'false' and get_option('slow-tests')
287install_tests = get_option('install-tests')
288
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200289cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200290if cxx.found()
291 # Used only for tests
292 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200293 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200294else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200295 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400296endif
297
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500298if want_libfuzzer
299 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200300elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500301 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
302endif
303
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900304possible_cc_flags = [
305 '-Wextra',
306 '-Werror=undef',
307 '-Wlogical-op',
308 '-Wmissing-include-dirs',
309 '-Wold-style-definition',
310 '-Wpointer-arith',
311 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900312 '-Wfloat-equal',
313 '-Wsuggest-attribute=noreturn',
314 '-Werror=missing-prototypes',
315 '-Werror=implicit-function-declaration',
316 '-Werror=missing-declarations',
317 '-Werror=return-type',
318 '-Werror=incompatible-pointer-types',
319 '-Werror=format=2',
320 '-Wstrict-prototypes',
321 '-Wredundant-decls',
322 '-Wmissing-noreturn',
323 '-Wimplicit-fallthrough=5',
324 '-Wshadow',
325 '-Wendif-labels',
326 '-Wstrict-aliasing=2',
327 '-Wwrite-strings',
328 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200329 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200330 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900331 '-Wdate-time',
332 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700333
334 # negative arguments are correctly detected starting with meson 0.46.
335 '-Wno-unused-parameter',
336 '-Wno-missing-field-initializers',
337 '-Wno-unused-result',
338 '-Wno-format-signedness',
339
340 # work-around for gcc 7.1 turning this on on its own.
341 '-Wno-error=nonnull',
342
343 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
344 # optimizations enabled, producing essentially false positives.
345 '-Wno-maybe-uninitialized',
346
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347 '-ffast-math',
348 '-fno-common',
349 '-fdiagnostics-show-option',
350 '-fno-strict-aliasing',
351 '-fvisibility=hidden',
352 '-fstack-protector',
353 '-fstack-protector-strong',
354 '--param=ssp-buffer-size=4',
355]
356
357# --as-needed and --no-undefined are provided by meson by default,
358# run mesonconf to see what is enabled
359possible_link_flags = [
360 '-Wl,-z,relro',
361 '-Wl,-z,now',
362]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400363
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500364# the oss-fuzz fuzzers are not built with -fPIE, so don't
365# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500366if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900367 possible_cc_flags += '-fPIE'
368 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500369endif
370
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900371if cc.get_id() == 'clang'
372 possible_cc_flags += [
373 '-Wno-typedef-redefinition',
374 '-Wno-gnu-variable-sized-type-not-at-end',
375 ]
376endif
377
378if get_option('buildtype') != 'debug'
379 possible_cc_flags += [
380 '-ffunction-sections',
381 '-fdata-sections',
382 ]
383
384 possible_link_flags += '-Wl,--gc-sections'
385endif
386
387add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900388add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900389
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800390if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391 #include <time.h>
392 #include <inttypes.h>
393 typedef uint64_t usec_t;
394 usec_t now(clockid_t clock);
395 int main(void) {
396 struct timespec now;
397 return 0;
398 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800399''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401endif
402
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200403cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405#####################################################################
406# compilation result tests
407
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400408conf.set('_GNU_SOURCE', true)
409conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410
411conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
417conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
418
419decl_headers = '''
420#include <uchar.h>
421#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000422#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100423#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425
426foreach decl : ['char16_t',
427 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000429 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100430 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400431 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400432
433 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200434 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
435
436 if decl == 'struct statx'
437 if have
438 want_linux_stat_h = false
439 else
440 have = cc.sizeof(decl,
441 prefix : decl_headers + '#include <linux/stat.h>',
442 args : '-D_GNU_SOURCE') > 0
443 want_linux_stat_h = have
444 endif
445 endif
446
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200447 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448endforeach
449
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200450conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
453 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
454 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
455 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530456 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400457 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
Tobias Jungel99f68ef2018-11-02 02:31:20 +0100458 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400459 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
460 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530462 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 # if_tunnel.h is buggy and cannot be included on its own
464 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
465 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
466 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
467 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
468 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
469 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
470 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530471 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472 ['NDA_IFINDEX', 'linux/neighbour.h'],
473 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000474 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530476 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Susant Sahani53cb5012018-06-03 12:37:41 +0530477 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
478 ['FOU_CMD_GET', 'linux/fou.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400480 prefix = decl.length() > 2 ? decl[2] : ''
481 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200482 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483endforeach
484
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200486 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487endforeach
488
489foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100491 ['gettid', '''#include <sys/types.h>
492 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100493 ['pivot_root', '''#include <stdlib.h>
494 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 #include <sys/stat.h>
497 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100499 ['renameat2', '''#include <stdio.h>
500 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501 ['kcmp', '''#include <linux/kcmp.h>'''],
502 ['keyctl', '''#include <sys/types.h>
503 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400505 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200506 ['bpf', '''#include <sys/syscall.h>
507 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100508 ['statx', '''#include <sys/types.h>
509 #include <sys/stat.h>
510 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100511 ['explicit_bzero' , '''#include <string.h>'''],
512 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517endforeach
518
Lennart Poettering85db59b2017-12-25 12:01:14 +0100519if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200520 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400522else
523 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200524 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400526endif
527
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528#####################################################################
529
530sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400532m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400534git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100535env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100536perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400538meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400539mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400540test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
541splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
544# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500545progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547 ['kmod', '/usr/bin/kmod' ],
548 ['kexec', '/usr/sbin/kexec' ],
549 ['sulogin', '/usr/sbin/sulogin' ],
550 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
551 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
552 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
553 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
554 ]
555foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400556 path = get_option(prog[0] + '-path')
557 if path != ''
558 message('Using @1@ for @0@'.format(prog[0], path))
559 else
560 exe = find_program(prog[0],
561 '/usr/sbin/' + prog[0],
562 '/sbin/' + prog[0],
563 required: false)
564 path = exe.found() ? exe.path() : prog[1]
565 endif
566 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
567 conf.set_quoted(name, path)
568 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endforeach
570
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500571conf.set_quoted('TELINIT', get_option('telinit-path'))
572
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400573if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100574 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400575endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576
577############################################################
578
579gperf = find_program('gperf')
580
581gperf_test_format = '''
582#include <string.h>
583const char * in_word_set(const char *, @0@);
584@1@
585'''
586gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
587gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
588gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
589if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
593 if cc.compiles(gperf_test)
594 gperf_len_type = 'unsigned'
595 else
596 error('unable to determine gperf len type')
597 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598endif
599message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600conf.set('GPERF_LEN_TYPE', gperf_len_type,
601 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602
603############################################################
604
605if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100608foreach header : ['crypt.h',
609 'linux/btrfs.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900610 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400611 'linux/memfd.h',
612 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200613 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614 'valgrind/memcheck.h',
615 'valgrind/valgrind.h',
616 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200618 conf.set10('HAVE_' + header.underscorify().to_upper(),
619 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620endforeach
621
622############################################################
623
624conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400625conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
626gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627
628default_hierarchy = get_option('default-hierarchy')
629conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
630 description : 'default cgroup hierarchy as string')
631if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400632 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637endif
638
639time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900640if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900642 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644conf.set('TIME_EPOCH', time_epoch)
645
646system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900647if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 system_uid_max = run_command(
649 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800650 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
651 '/etc/login.defs').stdout().strip()
652 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900653 system_uid_max = 999
654 else
655 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800656 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658conf.set('SYSTEM_UID_MAX', system_uid_max)
659substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900662if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 system_gid_max = run_command(
664 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
666 '/etc/login.defs').stdout().strip()
667 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900668 system_gid_max = 999
669 else
670 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400673conf.set('SYSTEM_GID_MAX', system_gid_max)
674substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675
Yu Watanabeac093402018-05-10 16:04:16 +0900676dynamic_uid_min = get_option('dynamic-uid-min')
677dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100678conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
679conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
680substs.set('dynamicuidmin', dynamic_uid_min)
681substs.set('dynamicuidmax', dynamic_uid_max)
682
Yu Watanabeac093402018-05-10 16:04:16 +0900683container_uid_base_min = get_option('container-uid-base-min')
684container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100685conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
686conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
687substs.set('containeruidbasemin', container_uid_base_min)
688substs.set('containeruidbasemax', container_uid_base_max)
689
Lennart Poetteringafde4572017-12-05 11:00:24 +0100690nobody_user = get_option('nobody-user')
691nobody_group = get_option('nobody-group')
692
Chen Qi2484bff2018-07-23 14:53:09 +0800693if not meson.is_cross_build()
694 getent_result = run_command('getent', 'passwd', '65534')
695 if getent_result.returncode() == 0
696 name = getent_result.stdout().split(':')[0]
697 if name != nobody_user
698 warning('\n' +
699 '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) +
700 'Your build will result in an user table setup that is incompatible with the local system.')
701 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100702 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800703 id_result = run_command('id', '-u', nobody_user)
704 if id_result.returncode() == 0
705 id = id_result.stdout().to_int()
706 if id != 65534
707 warning('\n' +
708 '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) +
709 'Your build will result in an user table setup that is incompatible with the local system.')
710 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100711 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100712
Chen Qi2484bff2018-07-23 14:53:09 +0800713 getent_result = run_command('getent', 'group', '65534')
714 if getent_result.returncode() == 0
715 name = getent_result.stdout().split(':')[0]
716 if name != nobody_group
717 warning('\n' +
718 '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) +
719 'Your build will result in an group table setup that is incompatible with the local system.')
720 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800722 id_result = run_command('id', '-g', nobody_group)
723 if id_result.returncode() == 0
724 id = id_result.stdout().to_int()
725 if id != 65534
726 warning('\n' +
727 '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) +
728 'Your build will result in an group table setup that is incompatible with the local system.')
729 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100730 endif
731endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900732if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900733 warning('\n' +
734 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
735 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900736endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100737
738conf.set_quoted('NOBODY_USER_NAME', nobody_user)
739conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900740substs.set('NOBODY_USER_NAME', nobody_user)
741substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100742
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743tty_gid = get_option('tty-gid')
744conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400745substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400746
Ikey Doherty84786b82017-12-03 12:28:23 +0000747# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900748users_gid = get_option('users-gid')
749substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000750
Yu Watanabe348b4432018-05-07 18:17:35 +0900751conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
752conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Michael Bieblace5e312018-07-13 23:36:13 +0200754dev_kvm_mode = get_option('dev-kvm-mode')
755substs.set('DEV_KVM_MODE', dev_kvm_mode)
756conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700757substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400759kill_user_processes = get_option('default-kill-user-processes')
760conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100761conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400762substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400764dns_servers = get_option('dns-servers')
765conf.set_quoted('DNS_SERVERS', dns_servers)
766substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400768ntp_servers = get_option('ntp-servers')
769conf.set_quoted('NTP_SERVERS', ntp_servers)
770substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771
772conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
773
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400774substs.set('SUSHELL', get_option('debug-shell'))
775substs.set('DEBUGTTY', get_option('debug-tty'))
776
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200777enable_debug_hashmap = false
778enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200779foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900780 if name == 'hashmap'
781 enable_debug_hashmap = true
782 elif name == 'mmap-cache'
783 enable_debug_mmap_cache = true
784 else
785 message('unknown debug option "@0@", ignoring'.format(name))
786 endif
787endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200788conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
789conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400790
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200791conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200792conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794#####################################################################
795
796threads = dependency('threads')
797librt = cc.find_library('rt')
798libm = cc.find_library('m')
799libdl = cc.find_library('dl')
800libcrypt = cc.find_library('crypt')
801
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400802libcap = dependency('libcap', required : false)
803if not libcap.found()
804 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
805 libcap = cc.find_library('cap')
806endif
807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100809 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
811want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500812if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400814 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400815 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500824if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libselinux = dependency('libselinux',
826 version : '>= 2.1.9',
827 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libapparmor = dependency('libapparmor',
838 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846smack_run_label = get_option('smack-run-label')
847if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849endif
850
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851want_polkit = get_option('polkit')
852install_polkit = false
853install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500854if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400856
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libpolkit = dependency('polkit-gobject-1',
858 required : false)
859 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
860 message('Old polkit detected, will install pkla files')
861 install_polkit_pkla = true
862 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400865
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400866want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500867if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400872 libacl = []
873endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500877if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885
886want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500887if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libkmod = dependency('libkmod',
899 version : '>= 15',
900 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libpam = cc.find_library('pam', required : want_pam == 'true')
911 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libpam = []
916 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500921if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libmicrohttpd = dependency('libmicrohttpd',
923 version : '>= 0.9.33',
924 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931
932want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500933if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libcryptsetup = dependency('libcryptsetup',
935 version : '>= 1.6.0',
936 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100938 have_sector = cc.has_member(
939 'struct crypt_params_plain',
940 'sector_size',
941 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100944 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100948conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949
950want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500951if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libcurl = dependency('libcurl',
953 version : '>= 7.32.0',
954 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400963want_libidn2 = get_option('libidn2')
964if want_libidn == 'true' and want_libidn2 == 'true'
965 error('libidn and libidn2 cannot be requested simultaneously')
966endif
967
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500968if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libidn = dependency('libidn',
970 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400974 libidn = []
975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500977if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400978 # libidn is used for both libidn and libidn2 objects
979 libidn = dependency('libidn2',
980 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libidn.found()
982else
983 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986
987want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500988if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libiptc = dependency('libiptc',
990 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500999if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libqrencode = dependency('libqrencode',
1001 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001009want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001010if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001011 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1012 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001014else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = false
1016endif
1017if not have
1018 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001019 libgcrypt = []
1020 libgpg_error = []
1021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001023
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001025if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libgnutls = dependency('gnutls',
1027 version : '>= 3.1.4',
1028 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001036want_openssl = get_option('openssl')
1037if want_openssl != 'false' and not fuzzer_build
1038 libopenssl = dependency('openssl',
1039 version : '>= 1.1.0',
1040 required : want_openssl == 'true')
1041 have = libopenssl.found()
1042else
1043 have = false
1044 libopenssl = []
1045endif
1046conf.set10('HAVE_OPENSSL', have)
1047
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001049if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001050 libdw = dependency('libdw',
1051 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058
1059want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001060if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libz = dependency('zlib',
1062 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
1070want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001071if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libbzip2 = cc.find_library('bz2',
1073 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001082if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libxz = dependency('liblzma',
1084 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
1092want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001093if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001095 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001098else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001104want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001105if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106 libxkbcommon = dependency('xkbcommon',
1107 version : '>= 0.3.0',
1108 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112 libxkbcommon = []
1113endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001115
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001116want_pcre2 = get_option('pcre2')
1117if want_pcre2 != 'false'
1118 libpcre2 = dependency('libpcre2-8',
1119 required : want_pcre2 == 'true')
1120 have = libpcre2.found()
1121else
1122 have = false
1123 libpcre2 = []
1124endif
1125conf.set10('HAVE_PCRE2', have)
1126
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001127want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001128if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001129 libglib = dependency('glib-2.0',
1130 version : '>= 2.22.0',
1131 required : want_glib == 'true')
1132 libgobject = dependency('gobject-2.0',
1133 version : '>= 2.22.0',
1134 required : want_glib == 'true')
1135 libgio = dependency('gio-2.0',
1136 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001137 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001138else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001140 libglib = []
1141 libgobject = []
1142 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001143endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001145
1146want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001147if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libdbus = dependency('dbus-1',
1149 version : '>= 1.3.2',
1150 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001152else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001157
Yu Watanabe42303dc2017-06-18 05:22:32 +09001158default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001159if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001160 default_dnssec = 'no'
1161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001163 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1164 default_dnssec = 'no'
1165endif
1166conf.set('DEFAULT_DNSSEC_MODE',
1167 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1168substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1169
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001170dns_over_tls = get_option('dns-over-tls')
1171if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001172 if dns_over_tls == 'openssl'
1173 have_gnutls = false
1174 else
1175 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1176 if dns_over_tls == 'gnutls' and not have_gnutls
1177 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1178 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001179 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001180 if dns_over_tls == 'gnutls' or have_gnutls
1181 have_openssl = false
1182 else
1183 have_openssl = conf.get('HAVE_OPENSSL') == 1
1184 if dns_over_tls != 'auto' and not have_openssl
1185 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1186 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1187 endif
1188 endif
1189 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001190else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001191 have = false
1192 have_gnutls = false
1193 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001194endif
1195conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001196conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1197conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001198
Iwan Timmerc9299be2018-06-13 20:26:24 +02001199default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001200if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001201 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001202endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001203if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1204 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 +02001205 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001206endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001207conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1208 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1209substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001210
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001211want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001212if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213 have = (conf.get('HAVE_LIBCURL') == 1 and
1214 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001215 conf.get('HAVE_XZ') == 1 and
1216 conf.get('HAVE_GCRYPT') == 1)
1217 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 error('importd support was requested, but dependencies are not available')
1219 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001220else
1221 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001222endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001224
1225want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001226if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1228 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1230 # it's possible to build one without the other. Complain only if
1231 # support was explictly requested. The auxiliary files like sysusers
1232 # config should be installed when any of the programs are built.
1233 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1234 error('remote support was requested, but dependencies are not available')
1235 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have = have_deps[0] or have_deps[1]
1237else
1238 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001241
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001242foreach term : ['utmp',
1243 'hibernate',
1244 'environment-d',
1245 'binfmt',
1246 'coredump',
1247 'resolve',
1248 'logind',
1249 'hostnamed',
1250 'localed',
1251 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001252 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001253 'networkd',
1254 'timedated',
1255 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001256 'firstboot',
1257 'randomseed',
1258 'backlight',
1259 'vconsole',
1260 'quotacheck',
1261 'sysusers',
1262 'tmpfiles',
1263 'hwdb',
1264 'rfkill',
1265 'ldconfig',
1266 'efi',
1267 'tpm',
1268 'ima',
1269 'smack',
1270 'gshadow',
1271 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001272 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001273 'nss-systemd']
1274 have = get_option(term)
1275 name = 'ENABLE_' + term.underscorify().to_upper()
1276 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277endforeach
1278
Yu Watanabe08540a92018-07-18 09:25:57 +09001279foreach tuple : [['nss-mymachines', 'machined'],
1280 ['nss-resolve', 'resolve']]
1281 want = get_option(tuple[0])
1282 if want != 'false'
1283 have = get_option(tuple[1])
1284 if want == 'true' and not have
1285 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1286 endif
1287 else
1288 have = false
1289 endif
1290 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1291 conf.set10(name, have)
1292endforeach
1293
1294enable_nss = false
1295foreach term : ['ENABLE_NSS_MYHOSTNAME',
1296 'ENABLE_NSS_MYMACHINES',
1297 'ENABLE_NSS_RESOLVE',
1298 'ENABLE_NSS_SYSTEMD']
1299 if conf.get(term) == 1
1300 enable_nss = true
1301 endif
1302endforeach
1303conf.set10('ENABLE_NSS', enable_nss)
1304
Yu Watanabe348b4432018-05-07 18:17:35 +09001305conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001306
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001307tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001308fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001309
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001310conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001311
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312#####################################################################
1313
1314if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001315 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001316
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001317 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001319 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001320 elif efi_arch == 'x86_64'
1321 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001322 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001323 elif efi_arch == 'arm'
1324 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001325 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 elif efi_arch == 'aarch64'
1327 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001328 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 else
1330 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001331 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001333
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001334 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001336
Yu Watanabeac093402018-05-10 16:04:16 +09001337 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001338else
1339 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001341conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342
1343#####################################################################
1344
1345config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001346 output : 'config.h',
1347 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348
Yu Watanabe348b4432018-05-07 18:17:35 +09001349meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1350
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351includes = include_directories('src/basic',
1352 'src/shared',
1353 'src/systemd',
1354 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001355 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001356 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357 'src/resolve',
1358 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001359 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360 'src/login',
1361 'src/udev',
1362 'src/libudev',
1363 'src/core',
1364 'src/libsystemd/sd-bus',
1365 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001366 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367 'src/libsystemd/sd-hwdb',
1368 'src/libsystemd/sd-id128',
1369 'src/libsystemd/sd-netlink',
1370 'src/libsystemd/sd-network',
1371 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001372 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373
1374add_project_arguments('-include', 'config.h', language : 'c')
1375
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001376subdir('po')
1377subdir('catalog')
1378subdir('src/systemd')
1379subdir('src/basic')
1380subdir('src/libsystemd')
1381subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001384
1385libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 'journal-core',
1387 libjournal_core_sources,
1388 journald_gperf_c,
1389 include_directories : includes,
1390 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001392libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001394 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001395 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001396 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 include_directories : includes,
1398 link_args : ['-shared',
1399 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001400 link_with : [libbasic,
1401 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001402 link_whole : [libsystemd_static,
1403 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 dependencies : [threads,
1405 librt,
1406 libxz,
1407 liblz4],
1408 link_depends : libsystemd_sym,
1409 install : true,
1410 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411
Davide Cavalca70848ec2018-04-09 02:43:35 -07001412static_libsystemd = get_option('static-libsystemd')
1413static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1414
1415install_libsystemd_static = static_library(
1416 'systemd',
1417 libsystemd_sources,
1418 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001419 basic_sources,
1420 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001421 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001422 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001423 build_by_default : static_libsystemd != 'false',
1424 install : static_libsystemd != 'false',
1425 install_dir : rootlibdir,
1426 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1427 dependencies : [threads,
1428 librt,
1429 libxz,
1430 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001431 libcap,
1432 libblkid,
1433 libmount,
1434 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001435 libgcrypt],
1436 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438############################################################
1439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001440# binaries that have --help and are intended for use by humans,
1441# usually, but not always, installed in /bin.
1442public_programs = []
1443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444subdir('src/libudev')
1445subdir('src/shared')
1446subdir('src/core')
1447subdir('src/udev')
1448subdir('src/network')
1449
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001450subdir('src/analyze')
1451subdir('src/journal-remote')
1452subdir('src/coredump')
1453subdir('src/hostname')
1454subdir('src/import')
1455subdir('src/kernel-install')
1456subdir('src/locale')
1457subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001458subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001459subdir('src/nspawn')
1460subdir('src/resolve')
1461subdir('src/timedate')
1462subdir('src/timesync')
1463subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001464subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001465
1466subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001467subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001468subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001469subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001470
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001471############################################################
1472
1473# only static linking apart from libdl, to make sure that the
1474# module is linked to all libraries that it uses.
1475test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 'test-dlopen',
1477 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001478 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001479 include_directories : includes,
1480 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001481 dependencies : [libdl],
1482 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001483
Yu Watanabe08540a92018-07-18 09:25:57 +09001484foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001485 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001486 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1487 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001488
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001489 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 if condition
1491 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001492
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001493 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001494 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001495
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 nss = shared_library(
1497 'nss_' + module,
1498 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001499 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 version : '2',
1501 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001502 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1503 link_args : ['-Wl,-z,nodelete',
1504 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 '-Wl,--version-script=' + version_script_arg,
1506 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001507 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 libbasic],
1509 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001510 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 link_depends : sym,
1512 install : true,
1513 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001514
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001515 # We cannot use shared_module because it does not support version suffix.
1516 # Unfortunately shared_library insists on creating the symlink…
1517 meson.add_install_script('sh', '-c',
1518 'rm $DESTDIR@0@/libnss_@1@.so'
1519 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001520
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001521 if want_tests != 'false'
1522 test('dlopen-nss_' + module,
1523 test_dlopen,
1524 # path to dlopen must include a slash
1525 args : nss.full_path())
1526 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001528endforeach
1529
1530############################################################
1531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532executable('systemd',
1533 systemd_sources,
1534 include_directories : includes,
1535 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001536 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001537 dependencies : [threads,
1538 librt,
1539 libseccomp,
1540 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001541 libmount,
1542 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001543 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001544 install : true,
1545 install_dir : rootlibexecdir)
1546
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001547meson.add_install_script(meson_make_symlink,
1548 join_paths(rootlibexecdir, 'systemd'),
1549 join_paths(rootsbindir, 'init'))
1550
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001551exe = executable('systemd-analyze',
1552 systemd_analyze_sources,
1553 include_directories : includes,
1554 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001555 libshared],
1556 dependencies : [threads,
1557 librt,
1558 libseccomp,
1559 libselinux,
1560 libmount,
1561 libblkid],
1562 install_rpath : rootlibexecdir,
1563 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001564public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001565
1566executable('systemd-journald',
1567 systemd_journald_sources,
1568 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001569 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001570 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571 dependencies : [threads,
1572 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001573 liblz4,
1574 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001575 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001576 install : true,
1577 install_dir : rootlibexecdir)
1578
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579exe = executable('systemd-cat',
1580 systemd_cat_sources,
1581 include_directories : includes,
1582 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001583 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001584 dependencies : [threads],
1585 install_rpath : rootlibexecdir,
1586 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001587public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001588
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589exe = executable('journalctl',
1590 journalctl_sources,
1591 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001592 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001593 dependencies : [threads,
1594 libqrencode,
1595 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001596 liblz4,
1597 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001598 install_rpath : rootlibexecdir,
1599 install : true,
1600 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001601public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602
1603executable('systemd-getty-generator',
1604 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001606 link_with : [libshared],
1607 install_rpath : rootlibexecdir,
1608 install : true,
1609 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610
1611executable('systemd-debug-generator',
1612 'src/debug-generator/debug-generator.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
1619executable('systemd-fstab-generator',
1620 'src/fstab-generator/fstab-generator.c',
1621 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001623 link_with : [libshared],
1624 install_rpath : rootlibexecdir,
1625 install : true,
1626 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001628if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 executable('30-systemd-environment-d-generator',
1630 'src/environment-d-generator/environment-d-generator.c',
1631 include_directories : includes,
1632 link_with : [libshared],
1633 install_rpath : rootlibexecdir,
1634 install : true,
1635 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 meson.add_install_script(meson_make_symlink,
1638 join_paths(sysconfdir, 'environment'),
1639 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640endif
1641
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001642if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 executable('systemd-hibernate-resume-generator',
1644 'src/hibernate-resume/hibernate-resume-generator.c',
1645 include_directories : includes,
1646 link_with : [libshared],
1647 install_rpath : rootlibexecdir,
1648 install : true,
1649 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 executable('systemd-hibernate-resume',
1652 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001653 include_directories : includes,
1654 link_with : [libshared],
1655 install_rpath : rootlibexecdir,
1656 install : true,
1657 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001658endif
1659
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001660if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 executable('systemd-gpt-auto-generator',
1662 'src/gpt-auto-generator/gpt-auto-generator.c',
1663 'src/basic/blkid-util.h',
1664 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001665 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 dependencies : libblkid,
1667 install_rpath : rootlibexecdir,
1668 install : true,
1669 install_dir : systemgeneratordir)
1670
1671 exe = executable('systemd-dissect',
1672 'src/dissect/dissect.c',
1673 include_directories : includes,
1674 link_with : [libshared],
1675 install_rpath : rootlibexecdir,
1676 install : true,
1677 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001678 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001679endif
1680
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001681if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001682 executable('systemd-resolved',
1683 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001684 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001685 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001686 libbasic_gcrypt,
1687 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001688 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001689 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001690 install : true,
1691 install_dir : rootlibexecdir)
1692
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001693 exe = executable('resolvectl',
1694 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001695 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001696 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001697 libbasic_gcrypt,
1698 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001699 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001700 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 libm,
1702 libidn],
1703 install_rpath : rootlibexecdir,
1704 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001705 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001706
1707 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001708 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001709 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001710
1711 meson.add_install_script(meson_make_symlink,
1712 join_paths(bindir, 'resolvectl'),
1713 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714endif
1715
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001716if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 executable('systemd-logind',
1718 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001719 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001720 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001721 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001722 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001724 install_rpath : rootlibexecdir,
1725 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001727
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 exe = executable('loginctl',
1729 loginctl_sources,
1730 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001731 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 dependencies : [threads,
1733 liblz4,
1734 libxz],
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-Szmek5c231282017-04-04 23:03:47 -04001739
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 exe = executable('systemd-inhibit',
1741 'src/login/inhibit.c',
1742 include_directories : includes,
1743 link_with : [libshared],
1744 install_rpath : rootlibexecdir,
1745 install : true,
1746 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001747 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001748
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001750 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 pam_systemd = shared_library(
1752 'pam_systemd',
1753 pam_systemd_c,
1754 name_prefix : '',
1755 include_directories : includes,
1756 link_args : ['-shared',
1757 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001758 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 libshared_static],
1760 dependencies : [threads,
1761 libpam,
1762 libpam_misc],
1763 link_depends : pam_systemd_sym,
1764 install : true,
1765 install_dir : pamlibdir)
1766
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001767 if want_tests != 'false'
1768 test('dlopen-pam_systemd',
1769 test_dlopen,
1770 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001771 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001772 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001775 executable('systemd-user-runtime-dir',
1776 user_runtime_dir_sources,
1777 include_directories : includes,
1778 link_with : [libshared],
1779 install_rpath : rootlibexecdir,
1780 install : true,
1781 install_dir : rootlibexecdir)
1782endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001784if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 executable('systemd-user-sessions',
1786 'src/user-sessions/user-sessions.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792endif
1793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001794if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 exe = executable('bootctl',
1796 'src/boot/bootctl.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 dependencies : [libblkid],
1800 install_rpath : rootlibexecdir,
1801 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001802 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001803
1804 executable('systemd-bless-boot',
1805 'src/boot/bless-boot.c',
1806 include_directories : includes,
1807 link_with : [libshared],
1808 dependencies : [libblkid],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001812
1813 executable('systemd-bless-boot-generator',
1814 'src/boot/bless-boot-generator.c',
1815 include_directories : includes,
1816 link_with : [libshared],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820endif
1821
Lennart Poetteringf876f532018-06-25 16:07:33 +02001822executable('systemd-boot-check-no-failures',
1823 'src/boot/boot-check-no-failures.c',
1824 include_directories : includes,
1825 link_with : [libshared],
1826 dependencies : [libblkid],
1827 install_rpath : rootlibexecdir,
1828 install : true,
1829 install_dir : rootlibexecdir)
1830
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001831exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 dependencies : [threads],
1835 install_rpath : rootlibexecdir,
1836 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001837public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001838
Felipe Satelerf3794362018-05-22 15:08:57 -04001839
1840if get_option('link-systemctl-shared')
1841 systemctl_link_with = [libshared]
1842else
1843 systemctl_link_with = [libsystemd_static,
1844 libshared_static,
1845 libjournal_client,
1846 libbasic_gcrypt]
1847endif
1848
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001849exe = executable('systemctl', 'src/systemctl/systemctl.c',
1850 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001851 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001852 dependencies : [threads,
1853 libcap,
1854 libselinux,
1855 libxz,
1856 liblz4],
1857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001860public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861
Lennart Poettering61d05782018-04-16 21:41:40 +02001862if conf.get('ENABLE_PORTABLED') == 1
1863 executable('systemd-portabled',
1864 systemd_portabled_sources,
1865 include_directories : includes,
1866 link_with : [libshared],
1867 dependencies : [threads],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
1871
1872 exe = executable('portablectl', 'src/portable/portablectl.c',
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [threads],
1876 install_rpath : rootlibexecdir,
1877 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001878 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001879 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001880endif
1881
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001882foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1883 meson.add_install_script(meson_make_symlink,
1884 join_paths(rootbindir, 'systemctl'),
1885 join_paths(rootsbindir, alias))
1886endforeach
1887
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001888if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 executable('systemd-backlight',
1890 'src/backlight/backlight.c',
1891 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001892 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896endif
1897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001898if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 executable('systemd-rfkill',
1900 'src/rfkill/rfkill.c',
1901 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001902 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001906endif
1907
1908executable('systemd-system-update-generator',
1909 'src/system-update-generator/system-update-generator.c',
1910 include_directories : includes,
1911 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001912 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913 install : true,
1914 install_dir : systemgeneratordir)
1915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001916if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 executable('systemd-cryptsetup',
1918 'src/cryptsetup/cryptsetup.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [libcryptsetup],
1922 install_rpath : rootlibexecdir,
1923 install : true,
1924 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001925
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001926 executable('systemd-cryptsetup-generator',
1927 'src/cryptsetup/cryptsetup-generator.c',
1928 include_directories : includes,
1929 link_with : [libshared],
1930 dependencies : [libcryptsetup],
1931 install_rpath : rootlibexecdir,
1932 install : true,
1933 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001934
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 executable('systemd-veritysetup',
1936 'src/veritysetup/veritysetup.c',
1937 include_directories : includes,
1938 link_with : [libshared],
1939 dependencies : [libcryptsetup],
1940 install_rpath : rootlibexecdir,
1941 install : true,
1942 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001943
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001944 executable('systemd-veritysetup-generator',
1945 'src/veritysetup/veritysetup-generator.c',
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [libcryptsetup],
1949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 executable('systemd-sysv-generator',
1956 'src/sysv-generator/sysv-generator.c',
1957 include_directories : includes,
1958 link_with : [libshared],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 executable('systemd-rc-local-generator',
1964 'src/rc-local-generator/rc-local-generator.c',
1965 include_directories : includes,
1966 link_with : [libshared],
1967 install_rpath : rootlibexecdir,
1968 install : true,
1969 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001970endif
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-hostnamed',
1974 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001975 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001976 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001977 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 install : true,
1979 install_dir : rootlibexecdir)
1980
1981 exe = executable('hostnamectl',
1982 'src/hostname/hostnamectl.c',
1983 include_directories : includes,
1984 link_with : [libshared],
1985 install_rpath : rootlibexecdir,
1986 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001987 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001988endif
1989
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001990if conf.get('ENABLE_LOCALED') == 1
1991 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 # logind will load libxkbcommon.so dynamically on its own
1993 deps = [libdl]
1994 else
1995 deps = []
1996 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001997
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 executable('systemd-localed',
1999 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002000 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002001 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002003 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 install : true,
2005 install_dir : rootlibexecdir)
2006
2007 exe = executable('localectl',
2008 localectl_sources,
2009 include_directories : includes,
2010 link_with : [libshared],
2011 install_rpath : rootlibexecdir,
2012 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002013 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014endif
2015
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002016if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 executable('systemd-timedated',
2018 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002020 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 install_rpath : rootlibexecdir,
2022 install : true,
2023 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002024endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025
Yu Watanabe6129ec82018-05-03 18:07:43 +09002026if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 exe = executable('timedatectl',
2028 'src/timedate/timedatectl.c',
2029 include_directories : includes,
2030 install_rpath : rootlibexecdir,
2031 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002032 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002034 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 executable('systemd-timesyncd',
2039 systemd_timesyncd_sources,
2040 include_directories : includes,
2041 link_with : [libshared],
2042 dependencies : [threads,
2043 libm],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002047
2048 executable('systemd-time-wait-sync',
2049 'src/time-wait-sync/time-wait-sync.c',
2050 include_directories : includes,
2051 link_with : [libshared],
2052 install_rpath : rootlibexecdir,
2053 install : true,
2054 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002055endif
2056
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002057if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 executable('systemd-machined',
2059 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002060 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 link_with : [libmachine_core,
2062 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002063 install_rpath : rootlibexecdir,
2064 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002065 install_dir : rootlibexecdir)
2066
2067 exe = executable('machinectl',
2068 'src/machine/machinectl.c',
2069 include_directories : includes,
2070 link_with : [libshared],
2071 dependencies : [threads,
2072 libxz,
2073 liblz4],
2074 install_rpath : rootlibexecdir,
2075 install : true,
2076 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002077 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-importd',
2082 systemd_importd_sources,
2083 include_directories : includes,
2084 link_with : [libshared],
2085 dependencies : [threads],
2086 install_rpath : rootlibexecdir,
2087 install : true,
2088 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002090 systemd_pull = executable('systemd-pull',
2091 systemd_pull_sources,
2092 include_directories : includes,
2093 link_with : [libshared],
2094 dependencies : [libcurl,
2095 libz,
2096 libbzip2,
2097 libxz,
2098 libgcrypt],
2099 install_rpath : rootlibexecdir,
2100 install : true,
2101 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002102
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002103 systemd_import = executable('systemd-import',
2104 systemd_import_sources,
2105 include_directories : includes,
2106 link_with : [libshared],
2107 dependencies : [libcurl,
2108 libz,
2109 libbzip2,
2110 libxz],
2111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 systemd_export = executable('systemd-export',
2116 systemd_export_sources,
2117 include_directories : includes,
2118 link_with : [libshared],
2119 dependencies : [libcurl,
2120 libz,
2121 libbzip2,
2122 libxz],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
2126 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127endif
2128
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002129if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 exe = executable('systemd-journal-upload',
2131 systemd_journal_upload_sources,
2132 include_directories : includes,
2133 link_with : [libshared],
2134 dependencies : [threads,
2135 libcurl,
2136 libgnutls,
2137 libxz,
2138 liblz4],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002142 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143endif
2144
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002145if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 s_j_remote = executable('systemd-journal-remote',
2147 systemd_journal_remote_sources,
2148 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002149 link_with : [libshared,
2150 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002151 dependencies : [threads,
2152 libmicrohttpd,
2153 libgnutls,
2154 libxz,
2155 liblz4],
2156 install_rpath : rootlibexecdir,
2157 install : true,
2158 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 s_j_gatewayd = executable('systemd-journal-gatewayd',
2161 systemd_journal_gatewayd_sources,
2162 include_directories : includes,
2163 link_with : [libshared],
2164 dependencies : [threads,
2165 libmicrohttpd,
2166 libgnutls,
2167 libxz,
2168 liblz4],
2169 install_rpath : rootlibexecdir,
2170 install : true,
2171 install_dir : rootlibexecdir)
2172 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002173endif
2174
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002175if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002176 executable('systemd-coredump',
2177 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002178 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002179 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 libacl,
2182 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183 libxz,
2184 liblz4],
2185 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 install : true,
2187 install_dir : rootlibexecdir)
2188
2189 exe = executable('coredumpctl',
2190 coredumpctl_sources,
2191 include_directories : includes,
2192 link_with : [libshared],
2193 dependencies : [threads,
2194 libxz,
2195 liblz4],
2196 install_rpath : rootlibexecdir,
2197 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002198 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199endif
2200
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002201if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 exe = executable('systemd-binfmt',
2203 'src/binfmt/binfmt.c',
2204 include_directories : includes,
2205 link_with : [libshared],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002209 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210
2211 meson.add_install_script('sh', '-c',
2212 mkdir_p.format(binfmtdir))
2213 meson.add_install_script('sh', '-c',
2214 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2215endif
2216
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002217if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 executable('systemd-vconsole-setup',
2219 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002220 include_directories : includes,
2221 link_with : [libshared],
2222 install_rpath : rootlibexecdir,
2223 install : true,
2224 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225endif
2226
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002227if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 executable('systemd-random-seed',
2229 'src/random-seed/random-seed.c',
2230 include_directories : includes,
2231 link_with : [libshared],
2232 install_rpath : rootlibexecdir,
2233 install : true,
2234 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235endif
2236
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002237if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 executable('systemd-firstboot',
2239 'src/firstboot/firstboot.c',
2240 include_directories : includes,
2241 link_with : [libshared],
2242 dependencies : [libcrypt],
2243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246endif
2247
2248executable('systemd-remount-fs',
2249 'src/remount-fs/remount-fs.c',
2250 'src/core/mount-setup.c',
2251 'src/core/mount-setup.h',
2252 include_directories : includes,
2253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002254 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255 install : true,
2256 install_dir : rootlibexecdir)
2257
2258executable('systemd-machine-id-setup',
2259 'src/machine-id-setup/machine-id-setup-main.c',
2260 'src/core/machine-id-setup.c',
2261 'src/core/machine-id-setup.h',
2262 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002263 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002264 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265 install : true,
2266 install_dir : rootbindir)
2267
2268executable('systemd-fsck',
2269 'src/fsck/fsck.c',
2270 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002271 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002272 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002273 install : true,
2274 install_dir : rootlibexecdir)
2275
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002276executable('systemd-growfs',
2277 'src/partition/growfs.c',
2278 include_directories : includes,
2279 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002280 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002281 install_rpath : rootlibexecdir,
2282 install : true,
2283 install_dir : rootlibexecdir)
2284
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002285executable('systemd-makefs',
2286 'src/partition/makefs.c',
2287 include_directories : includes,
2288 link_with : [libshared],
2289 install_rpath : rootlibexecdir,
2290 install : true,
2291 install_dir : rootlibexecdir)
2292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293executable('systemd-sleep',
2294 'src/sleep/sleep.c',
2295 include_directories : includes,
2296 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002297 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298 install : true,
2299 install_dir : rootlibexecdir)
2300
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002301exe = executable('systemd-sysctl',
2302 'src/sysctl/sysctl.c',
2303 include_directories : includes,
2304 link_with : [libshared],
2305 install_rpath : rootlibexecdir,
2306 install : true,
2307 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002308public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002309
2310executable('systemd-ac-power',
2311 'src/ac-power/ac-power.c',
2312 include_directories : includes,
2313 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002314 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315 install : true,
2316 install_dir : rootlibexecdir)
2317
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002318exe = executable('systemd-detect-virt',
2319 'src/detect-virt/detect-virt.c',
2320 include_directories : includes,
2321 link_with : [libshared],
2322 install_rpath : rootlibexecdir,
2323 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002324public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002326exe = executable('systemd-delta',
2327 'src/delta/delta.c',
2328 include_directories : includes,
2329 link_with : [libshared],
2330 install_rpath : rootlibexecdir,
2331 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002332public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002334exe = executable('systemd-escape',
2335 'src/escape/escape.c',
2336 include_directories : includes,
2337 link_with : [libshared],
2338 install_rpath : rootlibexecdir,
2339 install : true,
2340 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002341public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343exe = executable('systemd-notify',
2344 'src/notify/notify.c',
2345 include_directories : includes,
2346 link_with : [libshared],
2347 install_rpath : rootlibexecdir,
2348 install : true,
2349 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002350public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351
2352executable('systemd-volatile-root',
2353 'src/volatile-root/volatile-root.c',
2354 include_directories : includes,
2355 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002356 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357 install : true,
2358 install_dir : rootlibexecdir)
2359
2360executable('systemd-cgroups-agent',
2361 'src/cgroups-agent/cgroups-agent.c',
2362 include_directories : includes,
2363 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002364 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365 install : true,
2366 install_dir : rootlibexecdir)
2367
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002368exe = executable('systemd-id128',
2369 'src/id128/id128.c',
2370 include_directories : includes,
2371 link_with : [libshared],
2372 install_rpath : rootlibexecdir,
2373 install : true)
2374public_programs += exe
2375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('systemd-path',
2377 'src/path/path.c',
2378 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002379 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380 install_rpath : rootlibexecdir,
2381 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002382public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384exe = executable('systemd-ask-password',
2385 'src/ask-password/ask-password.c',
2386 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002387 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002391public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
2393executable('systemd-reply-password',
2394 'src/reply-password/reply-password.c',
2395 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002396 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002397 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398 install : true,
2399 install_dir : rootlibexecdir)
2400
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002401exe = executable('systemd-tty-ask-password-agent',
2402 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2403 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405 install_rpath : rootlibexecdir,
2406 install : true,
2407 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002408public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002409
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410exe = executable('systemd-cgls',
2411 'src/cgls/cgls.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-cgtop',
2419 'src/cgtop/cgtop.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
2426executable('systemd-initctl',
2427 'src/initctl/initctl.c',
2428 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002429 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002430 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431 install : true,
2432 install_dir : rootlibexecdir)
2433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('systemd-mount',
2435 'src/mount/mount-tool.c',
2436 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002437 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002438 install_rpath : rootlibexecdir,
2439 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002442meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002443 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002444
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445exe = executable('systemd-run',
2446 'src/run/run.c',
2447 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002449 install_rpath : rootlibexecdir,
2450 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002451public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002453exe = executable('systemd-stdio-bridge',
2454 'src/stdio-bridge/stdio-bridge.c',
2455 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002456 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457 install_rpath : rootlibexecdir,
2458 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002459public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461exe = executable('busctl',
2462 'src/busctl/busctl.c',
2463 'src/busctl/busctl-introspect.c',
2464 'src/busctl/busctl-introspect.h',
2465 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002466 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467 install_rpath : rootlibexecdir,
2468 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002469public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002471if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 exe = executable('systemd-sysusers',
2473 'src/sysusers/sysusers.c',
2474 include_directories : includes,
2475 link_with : [libshared],
2476 install_rpath : rootlibexecdir,
2477 install : true,
2478 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002479 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480endif
2481
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002482if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002483 exe = executable('systemd-tmpfiles',
2484 'src/tmpfiles/tmpfiles.c',
2485 include_directories : includes,
2486 link_with : [libshared],
2487 dependencies : [libacl],
2488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002491 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002492
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002493 if want_tests != 'false'
2494 test('test-systemd-tmpfiles',
2495 test_systemd_tmpfiles_py,
2496 # https://github.com/mesonbuild/meson/issues/2681
2497 args : exe.full_path())
2498 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002499endif
2500
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002501if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002502 exe = executable('systemd-hwdb',
2503 'src/hwdb/hwdb.c',
2504 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002506 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002507 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 install : true,
2509 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002510 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511endif
2512
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002513if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 executable('systemd-quotacheck',
2515 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002517 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002518 install_rpath : rootlibexecdir,
2519 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002520 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002521endif
2522
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523exe = executable('systemd-socket-proxyd',
2524 'src/socket-proxy/socket-proxyd.c',
2525 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002526 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527 dependencies : [threads],
2528 install_rpath : rootlibexecdir,
2529 install : true,
2530 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002531public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533exe = executable('systemd-udevd',
2534 systemd_udevd_sources,
2535 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002536 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002537 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002539 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002540 dependencies : [threads,
2541 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002543 libacl,
2544 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002545 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546 install : true,
2547 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002548public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550exe = executable('udevadm',
2551 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002552 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002553 include_directories : includes,
2554 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002555 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002556 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002557 dependencies : [threads,
2558 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002559 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002560 libacl,
2561 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002562 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563 install : true,
2564 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002565public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002566
2567executable('systemd-shutdown',
2568 systemd_shutdown_sources,
2569 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002570 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002571 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002572 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573 install : true,
2574 install_dir : rootlibexecdir)
2575
2576executable('systemd-update-done',
2577 'src/update-done/update-done.c',
2578 include_directories : includes,
2579 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002580 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581 install : true,
2582 install_dir : rootlibexecdir)
2583
2584executable('systemd-update-utmp',
2585 'src/update-utmp/update-utmp.c',
2586 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002587 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002588 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002589 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590 install : true,
2591 install_dir : rootlibexecdir)
2592
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002593if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594 executable('systemd-modules-load',
2595 'src/modules-load/modules-load.c',
2596 include_directories : includes,
2597 link_with : [libshared],
2598 dependencies : [libkmod],
2599 install_rpath : rootlibexecdir,
2600 install : true,
2601 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002602
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002603 meson.add_install_script('sh', '-c',
2604 mkdir_p.format(modulesloaddir))
2605 meson.add_install_script('sh', '-c',
2606 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002607endif
2608
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002609exe = executable('systemd-nspawn',
2610 systemd_nspawn_sources,
2611 'src/core/mount-setup.c', # FIXME: use a variable?
2612 'src/core/mount-setup.h',
2613 'src/core/loopback-setup.c',
2614 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002615 include_directories : includes,
2616 link_with : [libnspawn_core,
2617 libshared],
2618 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002619 install_rpath : rootlibexecdir,
2620 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002623if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002624 executable('systemd-networkd',
2625 systemd_networkd_sources,
2626 include_directories : includes,
2627 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002628 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002629 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002630 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002631 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002632 install_rpath : rootlibexecdir,
2633 install : true,
2634 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002636 executable('systemd-networkd-wait-online',
2637 systemd_networkd_wait_online_sources,
2638 include_directories : includes,
2639 link_with : [libnetworkd_core,
2640 libshared],
2641 install_rpath : rootlibexecdir,
2642 install : true,
2643 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002644
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002645 exe = executable('networkctl',
2646 networkctl_sources,
2647 include_directories : includes,
2648 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002649 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002650 install_rpath : rootlibexecdir,
2651 install : true,
2652 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002653 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002654endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002655
2656executable('systemd-sulogin-shell',
2657 ['src/sulogin-shell/sulogin-shell.c'],
2658 include_directories : includes,
2659 link_with : [libshared],
2660 install_rpath : rootlibexecdir,
2661 install : true,
2662 install_dir : rootlibexecdir)
2663
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002664############################################################
2665
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002666custom_target(
2667 'systemd-runtest.env',
2668 output : 'systemd-runtest.env',
2669 command : ['sh', '-c', '{ ' +
2670 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002671 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002672 '} >@OUTPUT@'],
2673 build_by_default : true)
2674
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002675foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002676 sources = tuple[0]
2677 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2678 dependencies = tuple[2]
2679 condition = tuple.length() >= 4 ? tuple[3] : ''
2680 type = tuple.length() >= 5 ? tuple[4] : ''
2681 defs = tuple.length() >= 6 ? tuple[5] : []
2682 incs = tuple.length() >= 7 ? tuple[6] : includes
2683 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002684
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002685 name = sources[0].split('/')[-1].split('.')[0]
2686 if type.startswith('timeout=')
2687 timeout = type.split('=')[1].to_int()
2688 type = ''
2689 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002690
2691 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 exe = executable(
2693 name,
2694 sources,
2695 include_directories : incs,
2696 link_with : link_with,
2697 dependencies : dependencies,
2698 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002699 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002700 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002701 install : install_tests,
2702 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002703
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002704 if type == 'manual'
2705 message('@0@ is a manual test'.format(name))
2706 elif type == 'unsafe' and want_tests != 'unsafe'
2707 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002708 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 test(name, exe,
2710 env : test_env,
2711 timeout : timeout)
2712 endif
2713 else
2714 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2715 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002716endforeach
2717
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002718exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 'test-libsystemd-sym',
2720 test_libsystemd_sym_c,
2721 include_directories : includes,
2722 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002723 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002724 install : install_tests,
2725 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002726if want_tests != 'false'
2727 test('test-libsystemd-sym', exe)
2728endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002729
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002730exe = executable(
2731 'test-libsystemd-static-sym',
2732 test_libsystemd_sym_c,
2733 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002734 link_with : [install_libsystemd_static],
2735 dependencies : [threads], # threads is already included in dependencies on the library,
2736 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002737 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002738 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002739 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002740if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002741 test('test-libsystemd-static-sym', exe)
2742endif
2743
2744exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 'test-libudev-sym',
2746 test_libudev_sym_c,
2747 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002748 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002750 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002751 install : install_tests,
2752 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002753if want_tests != 'false'
2754 test('test-libudev-sym', exe)
2755endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002756
2757exe = executable(
2758 'test-libudev-static-sym',
2759 test_libudev_sym_c,
2760 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002761 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002762 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002763 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002764 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002765 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002766if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002767 test('test-libudev-static-sym', exe)
2768endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002769
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002770############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002771
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002772fuzzer_exes = []
2773
Michael Olbrich59967402018-11-11 11:27:35 +01002774if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002775foreach tuple : fuzzers
2776 sources = tuple[0]
2777 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2778 dependencies = tuple[2]
2779 defs = tuple.length() >= 4 ? tuple[3] : []
2780 incs = tuple.length() >= 5 ? tuple[4] : includes
2781
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002782 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002783 dependencies += fuzzing_engine
2784 else
2785 sources += 'src/fuzz/fuzz-main.c'
2786 endif
2787
2788 name = sources[0].split('/')[-1].split('.')[0]
2789
2790 fuzzer_exes += executable(
2791 name,
2792 sources,
2793 include_directories : [incs, include_directories('src/fuzz')],
2794 link_with : link_with,
2795 dependencies : dependencies,
2796 c_args : defs,
2797 install : false)
2798endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002799endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002800
2801run_target('fuzzers',
2802 depends : fuzzer_exes,
2803 command : ['true'])
2804
2805############################################################
2806
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002807make_directive_index_py = find_program('tools/make-directive-index.py')
2808make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002809xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002810hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002811
2812subdir('units')
2813subdir('sysctl.d')
2814subdir('sysusers.d')
2815subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002816subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002817subdir('hwdb')
2818subdir('network')
2819subdir('man')
2820subdir('shell-completion/bash')
2821subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002822subdir('docs/sysvinit')
2823subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002824
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002825install_subdir('factory/etc',
2826 install_dir : factorydir)
2827
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002828install_data('xorg/50-systemd-user.sh',
2829 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002830install_data('modprobe.d/systemd.conf',
2831 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002832install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002833 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002834 'NEWS',
2835 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302836 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002837 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002838 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302839 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002840 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002841 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002842 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002843 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2844 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002845
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002846meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2847meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2848
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002849############################################################
2850
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002851meson_check_help = find_program('tools/meson-check-help.sh')
2852
2853foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002854 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002855 if want_tests != 'false'
2856 test('check-help-' + name,
2857 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002858 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002859 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002860endforeach
2861
2862############################################################
2863
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002864# Enable tests for all supported sanitizers
2865foreach tuple : sanitizers
2866 sanitizer = tuple[0]
2867 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002868
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002869 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002870 prev = ''
2871 foreach p : fuzz_regression_tests
2872 b = p.split('/')[-2]
2873 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002874
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002875 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002876
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002877 if name != prev
2878 if want_tests == 'false'
2879 message('Not compiling @0@ because tests is set to false'.format(name))
2880 elif slow_tests
2881 exe = custom_target(
2882 name,
2883 output : name,
2884 depends : build,
2885 command : [env, 'ln', '-fs',
2886 join_paths(build.full_path(), b),
2887 '@OUTPUT@'],
2888 build_by_default : true)
2889 else
2890 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2891 endif
2892 endif
2893 prev = name
2894
2895 if want_tests != 'false' and slow_tests
2896 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2897 env,
2898 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002899 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002900 endif
2901 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002902 endif
2903endforeach
2904
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002905
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002906############################################################
2907
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002908if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002909 all_files = run_command(
2910 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002911 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002912 'ls-files',
2913 ':/*.[ch]'])
2914 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002915
userwithuide85a6902017-08-09 13:41:44 +00002916 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002917 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002918 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002919 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002920 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002921 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002922 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002923endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002924
2925if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002926 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002927 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002928 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002929 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002930endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002931
2932if git.found()
2933 git_head = run_command(
2934 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002935 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002936 'rev-parse', 'HEAD']).stdout().strip()
2937 git_head_short = run_command(
2938 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002939 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002940 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2941
2942 run_target(
2943 'git-snapshot',
2944 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002945 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002946 git_head_short),
2947 '--prefix', 'systemd-@0@/'.format(git_head),
2948 'HEAD'])
2949endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002950
2951############################################################
2952
Lennart Poettering51b13862017-12-20 12:51:14 +01002953meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2954run_target(
2955 'check-api-docs',
2956 depends : [man, libsystemd, libudev],
2957 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2958
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002959run_target(
2960 'make-index-md',
2961 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2962
Lennart Poettering51b13862017-12-20 12:51:14 +01002963############################################################
2964
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002965status = [
2966 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2967
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002968 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002969 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002970 'prefix directory: @0@'.format(prefixdir),
2971 'rootprefix directory: @0@'.format(rootprefixdir),
2972 'sysconf directory: @0@'.format(sysconfdir),
2973 'include directory: @0@'.format(includedir),
2974 'lib directory: @0@'.format(libdir),
2975 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002976 'SysV init scripts: @0@'.format(sysvinit_path),
2977 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002978 'PAM modules directory: @0@'.format(pamlibdir),
2979 'PAM configuration directory: @0@'.format(pamconfdir),
2980 'RPM macros directory: @0@'.format(rpmmacrosdir),
2981 'modprobe.d directory: @0@'.format(modprobedir),
2982 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2983 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2984 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2985 'bash completions directory: @0@'.format(bashcompletiondir),
2986 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002987 'extra start script: @0@'.format(get_option('rc-local')),
2988 'extra stop script: @0@'.format(get_option('halt-local')),
2989 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2990 get_option('debug-tty')),
2991 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002992 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002993 'maximum system UID: @0@'.format(system_uid_max),
2994 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002995 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2996 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2997 'minimum container UID base: @0@'.format(container_uid_base_min),
2998 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003000 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003001 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003002 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003003 'nobody user name: @0@'.format(nobody_user),
3004 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003005 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003006 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003007
3008 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003009 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003010 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3011 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3012
3013alt_dns_servers = '\n '.join(dns_servers.split(' '))
3014alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3015status += [
3016 'default DNS servers: @0@'.format(alt_dns_servers),
3017 'default NTP servers: @0@'.format(alt_ntp_servers)]
3018
3019alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3020 '@@0@'.format(time_epoch)).stdout().strip()
3021status += [
3022 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3023
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003024status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003025 'static libsystemd: @0@'.format(static_libsystemd),
3026 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003027
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003028# TODO:
3029# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3030# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3031# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3032
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003033if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003034 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003035
3036 if have_gnu_efi
3037 status += [
3038 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3039 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003040 'EFI lib directory: @0@'.format(efi_libdir),
3041 'EFI lds directory: @0@'.format(efi_ldsdir),
3042 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003043 endif
3044endif
3045
3046found = []
3047missing = []
3048
3049foreach tuple : [
3050 ['libcryptsetup'],
3051 ['PAM'],
3052 ['AUDIT'],
3053 ['IMA'],
3054 ['AppArmor'],
3055 ['SELinux'],
3056 ['SECCOMP'],
3057 ['SMACK'],
3058 ['zlib'],
3059 ['xz'],
3060 ['lz4'],
3061 ['bzip2'],
3062 ['ACL'],
3063 ['gcrypt'],
3064 ['qrencode'],
3065 ['microhttpd'],
3066 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003067 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003068 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003069 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003070 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003071 ['libidn'],
3072 ['libiptc'],
3073 ['elfutils'],
3074 ['binfmt'],
3075 ['vconsole'],
3076 ['quotacheck'],
3077 ['tmpfiles'],
3078 ['environment.d'],
3079 ['sysusers'],
3080 ['firstboot'],
3081 ['randomseed'],
3082 ['backlight'],
3083 ['rfkill'],
3084 ['logind'],
3085 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003086 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003087 ['importd'],
3088 ['hostnamed'],
3089 ['timedated'],
3090 ['timesyncd'],
3091 ['localed'],
3092 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003093 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003094 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3095 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003096 ['coredump'],
3097 ['polkit'],
3098 ['legacy pkla', install_polkit_pkla],
3099 ['efi'],
3100 ['gnu-efi', have_gnu_efi],
3101 ['kmod'],
3102 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003103 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104 ['blkid'],
3105 ['dbus'],
3106 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003107 ['nss-myhostname'],
3108 ['nss-mymachines'],
3109 ['nss-resolve'],
3110 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003111 ['hwdb'],
3112 ['tpm'],
3113 ['man pages', want_man],
3114 ['html pages', want_html],
3115 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116 ['SysV compat'],
3117 ['utmp'],
3118 ['ldconfig'],
3119 ['hibernate'],
3120 ['adm group', get_option('adm-group')],
3121 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003122 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003123 ['debug hashmap'],
3124 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003125 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003126 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003127 ['link-udev-shared', get_option('link-udev-shared')],
3128 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129]
3130
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003131 if tuple.length() >= 2
3132 cond = tuple[1]
3133 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3135 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003136 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003137 endif
3138 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003139 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003141 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003142 endif
3143endforeach
3144
3145status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003146 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003147 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003148 '',
3149 'disabled features: @0@'.format(', '.join(missing)),
3150 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003151message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003152
3153if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003154 warning('\n' +
3155 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3156 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3157 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003158endif