blob: c746776208da1c585d0398e5d74f1a9272eedebc [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
Yu Watanabe8a716f22018-11-17 23:42:27 +0900452foreach 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'],
456 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
457 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
458 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
459 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
460 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
462 ['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
Yu Watanabe8a716f22018-11-17 23:42:27 +0900464 ['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'],
471 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
472 ['NDA_IFINDEX', 'linux/neighbour.h'],
473 ['IFA_FLAGS', 'linux/if_addr.h'],
474 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
475 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
476 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
477 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
478 ['FOU_CMD_GET', 'linux/fou.h'],
479 ['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
480 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
481 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
482 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
483 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
484 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400486 prefix = decl.length() > 2 ? decl[2] : ''
487 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200488 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489endforeach
490
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400491foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200492 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400493endforeach
494
495foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100496 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100497 ['gettid', '''#include <sys/types.h>
498 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100499 ['pivot_root', '''#include <stdlib.h>
500 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400502 #include <sys/stat.h>
503 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100505 ['renameat2', '''#include <stdio.h>
506 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 ['kcmp', '''#include <linux/kcmp.h>'''],
508 ['keyctl', '''#include <sys/types.h>
509 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100510 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400511 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200512 ['bpf', '''#include <sys/syscall.h>
513 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100514 ['statx', '''#include <sys/types.h>
515 #include <sys/stat.h>
516 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100517 ['explicit_bzero' , '''#include <string.h>'''],
518 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400519]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520
Lennart Poettering85db59b2017-12-25 12:01:14 +0100521 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200522 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523endforeach
524
Lennart Poettering85db59b2017-12-25 12:01:14 +0100525if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200526 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200527 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400528else
529 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200530 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200531 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400532endif
533
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534#####################################################################
535
536sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400538m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400540git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100541env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100542perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400544meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400545mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400546test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
547splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400548
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400549# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
550# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500551progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400552 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553 ['kmod', '/usr/bin/kmod' ],
554 ['kexec', '/usr/sbin/kexec' ],
555 ['sulogin', '/usr/sbin/sulogin' ],
556 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
557 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
558 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
559 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
560 ]
561foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562 path = get_option(prog[0] + '-path')
563 if path != ''
564 message('Using @1@ for @0@'.format(prog[0], path))
565 else
566 exe = find_program(prog[0],
567 '/usr/sbin/' + prog[0],
568 '/sbin/' + prog[0],
569 required: false)
570 path = exe.found() ? exe.path() : prog[1]
571 endif
572 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
573 conf.set_quoted(name, path)
574 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575endforeach
576
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500577conf.set_quoted('TELINIT', get_option('telinit-path'))
578
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400579if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100580 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400581endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400582
583############################################################
584
585gperf = find_program('gperf')
586
587gperf_test_format = '''
588#include <string.h>
589const char * in_word_set(const char *, @0@);
590@1@
591'''
592gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
593gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
594gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
595if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400596 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400598 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
599 if cc.compiles(gperf_test)
600 gperf_len_type = 'unsigned'
601 else
602 error('unable to determine gperf len type')
603 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604endif
605message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606conf.set('GPERF_LEN_TYPE', gperf_len_type,
607 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608
609############################################################
610
611if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400612 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100614foreach header : ['crypt.h',
615 'linux/btrfs.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900616 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400617 'linux/memfd.h',
618 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200619 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620 'valgrind/memcheck.h',
621 'valgrind/valgrind.h',
622 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200624 conf.set10('HAVE_' + header.underscorify().to_upper(),
625 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endforeach
627
628############################################################
629
630conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400631conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
632gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634default_hierarchy = get_option('default-hierarchy')
635conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
636 description : 'default cgroup hierarchy as string')
637if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400638 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400639elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400642 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endif
644
645time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900646if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900648 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650conf.set('TIME_EPOCH', time_epoch)
651
652system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900653if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400654 system_uid_max = run_command(
655 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800656 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
657 '/etc/login.defs').stdout().strip()
658 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900659 system_uid_max = 999
660 else
661 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800662 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664conf.set('SYSTEM_UID_MAX', system_uid_max)
665substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900668if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400669 system_gid_max = run_command(
670 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800671 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
672 '/etc/login.defs').stdout().strip()
673 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900674 system_gid_max = 999
675 else
676 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800677 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679conf.set('SYSTEM_GID_MAX', system_gid_max)
680substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681
Yu Watanabeac093402018-05-10 16:04:16 +0900682dynamic_uid_min = get_option('dynamic-uid-min')
683dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100684conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
685conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
686substs.set('dynamicuidmin', dynamic_uid_min)
687substs.set('dynamicuidmax', dynamic_uid_max)
688
Yu Watanabeac093402018-05-10 16:04:16 +0900689container_uid_base_min = get_option('container-uid-base-min')
690container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100691conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
692conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
693substs.set('containeruidbasemin', container_uid_base_min)
694substs.set('containeruidbasemax', container_uid_base_max)
695
Lennart Poetteringafde4572017-12-05 11:00:24 +0100696nobody_user = get_option('nobody-user')
697nobody_group = get_option('nobody-group')
698
Chen Qi2484bff2018-07-23 14:53:09 +0800699if not meson.is_cross_build()
700 getent_result = run_command('getent', 'passwd', '65534')
701 if getent_result.returncode() == 0
702 name = getent_result.stdout().split(':')[0]
703 if name != nobody_user
704 warning('\n' +
705 '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) +
706 'Your build will result in an user table setup that is incompatible with the local system.')
707 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100708 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800709 id_result = run_command('id', '-u', nobody_user)
710 if id_result.returncode() == 0
711 id = id_result.stdout().to_int()
712 if id != 65534
713 warning('\n' +
714 '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) +
715 'Your build will result in an user table setup that is incompatible with the local system.')
716 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100717 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100718
Chen Qi2484bff2018-07-23 14:53:09 +0800719 getent_result = run_command('getent', 'group', '65534')
720 if getent_result.returncode() == 0
721 name = getent_result.stdout().split(':')[0]
722 if name != nobody_group
723 warning('\n' +
724 '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) +
725 'Your build will result in an group table setup that is incompatible with the local system.')
726 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100727 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800728 id_result = run_command('id', '-g', nobody_group)
729 if id_result.returncode() == 0
730 id = id_result.stdout().to_int()
731 if id != 65534
732 warning('\n' +
733 '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) +
734 'Your build will result in an group table setup that is incompatible with the local system.')
735 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100736 endif
737endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900738if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900739 warning('\n' +
740 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
741 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900742endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743
744conf.set_quoted('NOBODY_USER_NAME', nobody_user)
745conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900746substs.set('NOBODY_USER_NAME', nobody_user)
747substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100748
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749tty_gid = get_option('tty-gid')
750conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400751substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
Ikey Doherty84786b82017-12-03 12:28:23 +0000753# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900754users_gid = get_option('users-gid')
755substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000756
Yu Watanabe348b4432018-05-07 18:17:35 +0900757conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
758conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
Michael Bieblace5e312018-07-13 23:36:13 +0200760dev_kvm_mode = get_option('dev-kvm-mode')
761substs.set('DEV_KVM_MODE', dev_kvm_mode)
762conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700763substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400764
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400765kill_user_processes = get_option('default-kill-user-processes')
766conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100767conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400768substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400769
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400770dns_servers = get_option('dns-servers')
771conf.set_quoted('DNS_SERVERS', dns_servers)
772substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400773
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400774ntp_servers = get_option('ntp-servers')
775conf.set_quoted('NTP_SERVERS', ntp_servers)
776substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777
778conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
779
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400780substs.set('SUSHELL', get_option('debug-shell'))
781substs.set('DEBUGTTY', get_option('debug-tty'))
782
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783enable_debug_hashmap = false
784enable_debug_mmap_cache = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900785enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200786foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900787 if name == 'hashmap'
788 enable_debug_hashmap = true
789 elif name == 'mmap-cache'
790 enable_debug_mmap_cache = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900791 elif name == 'udev'
792 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900793 else
794 message('unknown debug option "@0@", ignoring'.format(name))
795 endif
796endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200797conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
798conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900799conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400800
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200801conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200802conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200803
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804#####################################################################
805
806threads = dependency('threads')
807librt = cc.find_library('rt')
808libm = cc.find_library('m')
809libdl = cc.find_library('dl')
810libcrypt = cc.find_library('crypt')
811
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400812libcap = dependency('libcap', required : false)
813if not libcap.found()
814 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
815 libcap = cc.find_library('cap')
816endif
817
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100819 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500822if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400824 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500834if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 libselinux = dependency('libselinux',
836 version : '>= 2.1.9',
837 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400839else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200840 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844
845want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500846if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400847 libapparmor = dependency('libapparmor',
848 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400850else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400853endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400856smack_run_label = get_option('smack-run-label')
857if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400858 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859endif
860
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400861want_polkit = get_option('polkit')
862install_polkit = false
863install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500864if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libpolkit = dependency('polkit-gobject-1',
868 required : false)
869 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
870 message('Old polkit detected, will install pkla files')
871 install_polkit_pkla = true
872 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400873endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400875
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400876want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500877if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400878 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400882 libacl = []
883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500887if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libaudit.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 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libkmod = dependency('libkmod',
909 version : '>= 15',
910 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libpam = cc.find_library('pam', required : want_pam == 'true')
921 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libpam = []
926 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500931if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libmicrohttpd = dependency('libmicrohttpd',
933 version : '>= 0.9.33',
934 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libcryptsetup = dependency('libcryptsetup',
945 version : '>= 1.6.0',
946 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100948 have_sector = cc.has_member(
949 'struct crypt_params_plain',
950 'sector_size',
951 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100954 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100958conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959
960want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500961if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libcurl = dependency('libcurl',
963 version : '>= 7.32.0',
964 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971
972want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400973want_libidn2 = get_option('libidn2')
974if want_libidn == 'true' and want_libidn2 == 'true'
975 error('libidn and libidn2 cannot be requested simultaneously')
976endif
977
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libidn = dependency('libidn',
980 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400984 libidn = []
985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500987if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400988 # libidn is used for both libidn and libidn2 objects
989 libidn = dependency('libidn2',
990 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libidn.found()
992else
993 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400994endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996
997want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500998if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libiptc = dependency('libiptc',
1000 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007
1008want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001009if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libqrencode = dependency('libqrencode',
1011 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001019want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001020if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001021 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1022 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
1026endif
1027if not have
1028 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001029 libgcrypt = []
1030 libgpg_error = []
1031endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001033
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001035if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libgnutls = dependency('gnutls',
1037 version : '>= 3.1.4',
1038 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001046want_openssl = get_option('openssl')
1047if want_openssl != 'false' and not fuzzer_build
1048 libopenssl = dependency('openssl',
1049 version : '>= 1.1.0',
1050 required : want_openssl == 'true')
1051 have = libopenssl.found()
1052else
1053 have = false
1054 libopenssl = []
1055endif
1056conf.set10('HAVE_OPENSSL', have)
1057
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001059if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 libdw = dependency('libdw',
1061 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001070if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libz = dependency('zlib',
1072 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001081if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libbzip2 = cc.find_library('bz2',
1083 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
1091want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001092if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libxz = dependency('liblzma',
1094 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101
1102want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001103if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001105 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001114want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001115if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001116 libxkbcommon = dependency('xkbcommon',
1117 version : '>= 0.3.0',
1118 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001120else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001122 libxkbcommon = []
1123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001126want_pcre2 = get_option('pcre2')
1127if want_pcre2 != 'false'
1128 libpcre2 = dependency('libpcre2-8',
1129 required : want_pcre2 == 'true')
1130 have = libpcre2.found()
1131else
1132 have = false
1133 libpcre2 = []
1134endif
1135conf.set10('HAVE_PCRE2', have)
1136
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001137want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libglib = dependency('glib-2.0',
1140 version : '>= 2.22.0',
1141 required : want_glib == 'true')
1142 libgobject = dependency('gobject-2.0',
1143 version : '>= 2.22.0',
1144 required : want_glib == 'true')
1145 libgio = dependency('gio-2.0',
1146 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001147 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001148else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libglib = []
1151 libgobject = []
1152 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001153endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001155
1156want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001157if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001158 libdbus = dependency('dbus-1',
1159 version : '>= 1.3.2',
1160 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001162else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001165endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167
Yu Watanabe42303dc2017-06-18 05:22:32 +09001168default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001169if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001170 default_dnssec = 'no'
1171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001173 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1174 default_dnssec = 'no'
1175endif
1176conf.set('DEFAULT_DNSSEC_MODE',
1177 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1178substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1179
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001180dns_over_tls = get_option('dns-over-tls')
1181if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001182 if dns_over_tls == 'openssl'
1183 have_gnutls = false
1184 else
1185 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1186 if dns_over_tls == 'gnutls' and not have_gnutls
1187 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1188 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001189 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001190 if dns_over_tls == 'gnutls' or have_gnutls
1191 have_openssl = false
1192 else
1193 have_openssl = conf.get('HAVE_OPENSSL') == 1
1194 if dns_over_tls != 'auto' and not have_openssl
1195 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1196 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1197 endif
1198 endif
1199 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001200else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001201 have = false
1202 have_gnutls = false
1203 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001204endif
1205conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001206conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1207conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001208
Iwan Timmerc9299be2018-06-13 20:26:24 +02001209default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001210if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001211 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001212endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001213if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1214 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 +02001215 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001216endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001217conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1218 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1219substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001220
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001221want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001222if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = (conf.get('HAVE_LIBCURL') == 1 and
1224 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001225 conf.get('HAVE_XZ') == 1 and
1226 conf.get('HAVE_GCRYPT') == 1)
1227 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001228 error('importd support was requested, but dependencies are not available')
1229 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230else
1231 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001232endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001234
1235want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001236if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001237 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1238 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001239 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1240 # it's possible to build one without the other. Complain only if
1241 # support was explictly requested. The auxiliary files like sysusers
1242 # config should be installed when any of the programs are built.
1243 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1244 error('remote support was requested, but dependencies are not available')
1245 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246 have = have_deps[0] or have_deps[1]
1247else
1248 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001249endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001252foreach term : ['utmp',
1253 'hibernate',
1254 'environment-d',
1255 'binfmt',
1256 'coredump',
1257 'resolve',
1258 'logind',
1259 'hostnamed',
1260 'localed',
1261 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001262 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001263 'networkd',
1264 'timedated',
1265 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001266 'firstboot',
1267 'randomseed',
1268 'backlight',
1269 'vconsole',
1270 'quotacheck',
1271 'sysusers',
1272 'tmpfiles',
1273 'hwdb',
1274 'rfkill',
1275 'ldconfig',
1276 'efi',
1277 'tpm',
1278 'ima',
1279 'smack',
1280 'gshadow',
1281 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001282 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001283 'nss-systemd']
1284 have = get_option(term)
1285 name = 'ENABLE_' + term.underscorify().to_upper()
1286 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001287endforeach
1288
Yu Watanabe08540a92018-07-18 09:25:57 +09001289foreach tuple : [['nss-mymachines', 'machined'],
1290 ['nss-resolve', 'resolve']]
1291 want = get_option(tuple[0])
1292 if want != 'false'
1293 have = get_option(tuple[1])
1294 if want == 'true' and not have
1295 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1296 endif
1297 else
1298 have = false
1299 endif
1300 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1301 conf.set10(name, have)
1302endforeach
1303
1304enable_nss = false
1305foreach term : ['ENABLE_NSS_MYHOSTNAME',
1306 'ENABLE_NSS_MYMACHINES',
1307 'ENABLE_NSS_RESOLVE',
1308 'ENABLE_NSS_SYSTEMD']
1309 if conf.get(term) == 1
1310 enable_nss = true
1311 endif
1312endforeach
1313conf.set10('ENABLE_NSS', enable_nss)
1314
Yu Watanabe348b4432018-05-07 18:17:35 +09001315conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001316
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001317tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001318fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001319
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001320conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001321
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322#####################################################################
1323
1324if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001325 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001326
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001327 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001328 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001329 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 elif efi_arch == 'x86_64'
1331 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001332 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 elif efi_arch == 'arm'
1334 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001335 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001336 elif efi_arch == 'aarch64'
1337 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001338 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001339 else
1340 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001341 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001342 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001344 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001345 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001346
Yu Watanabeac093402018-05-10 16:04:16 +09001347 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001348else
1349 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001351conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001352
1353#####################################################################
1354
1355config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001356 output : 'config.h',
1357 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001358
Yu Watanabe348b4432018-05-07 18:17:35 +09001359meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1360
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001361includes = include_directories('src/basic',
1362 'src/shared',
1363 'src/systemd',
1364 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001365 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001366 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001367 'src/resolve',
1368 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001369 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001370 'src/login',
1371 'src/udev',
1372 'src/libudev',
1373 'src/core',
1374 'src/libsystemd/sd-bus',
1375 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001376 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001377 'src/libsystemd/sd-hwdb',
1378 'src/libsystemd/sd-id128',
1379 'src/libsystemd/sd-netlink',
1380 'src/libsystemd/sd-network',
1381 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001382 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001383
1384add_project_arguments('-include', 'config.h', language : 'c')
1385
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001386subdir('po')
1387subdir('catalog')
1388subdir('src/systemd')
1389subdir('src/basic')
1390subdir('src/libsystemd')
1391subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001393subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394
1395libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 'journal-core',
1397 libjournal_core_sources,
1398 journald_gperf_c,
1399 include_directories : includes,
1400 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001401
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001402libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001405 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001406 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 include_directories : includes,
1408 link_args : ['-shared',
1409 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001410 link_with : [libbasic,
1411 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001412 link_whole : [libsystemd_static,
1413 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 dependencies : [threads,
1415 librt,
1416 libxz,
1417 liblz4],
1418 link_depends : libsystemd_sym,
1419 install : true,
1420 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421
Davide Cavalca70848ec2018-04-09 02:43:35 -07001422static_libsystemd = get_option('static-libsystemd')
1423static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1424
1425install_libsystemd_static = static_library(
1426 'systemd',
1427 libsystemd_sources,
1428 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001429 basic_sources,
1430 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001431 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001432 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001433 build_by_default : static_libsystemd != 'false',
1434 install : static_libsystemd != 'false',
1435 install_dir : rootlibdir,
1436 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1437 dependencies : [threads,
1438 librt,
1439 libxz,
1440 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001441 libcap,
1442 libblkid,
1443 libmount,
1444 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001445 libgcrypt],
1446 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1447
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448############################################################
1449
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001450# binaries that have --help and are intended for use by humans,
1451# usually, but not always, installed in /bin.
1452public_programs = []
1453
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454subdir('src/libudev')
1455subdir('src/shared')
1456subdir('src/core')
1457subdir('src/udev')
1458subdir('src/network')
1459
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001460subdir('src/analyze')
1461subdir('src/journal-remote')
1462subdir('src/coredump')
1463subdir('src/hostname')
1464subdir('src/import')
1465subdir('src/kernel-install')
1466subdir('src/locale')
1467subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001468subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001469subdir('src/nspawn')
1470subdir('src/resolve')
1471subdir('src/timedate')
1472subdir('src/timesync')
1473subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001474subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001475
1476subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001477subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001478subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001479subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001480
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001481############################################################
1482
1483# only static linking apart from libdl, to make sure that the
1484# module is linked to all libraries that it uses.
1485test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001486 'test-dlopen',
1487 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001488 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001489 include_directories : includes,
1490 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001491 dependencies : [libdl],
1492 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001493
Yu Watanabe08540a92018-07-18 09:25:57 +09001494foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001495 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001496 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1497 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001499 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001500 if condition
1501 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001502
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001503 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001504 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001505
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 nss = shared_library(
1507 'nss_' + module,
1508 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001509 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 version : '2',
1511 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001512 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1513 link_args : ['-Wl,-z,nodelete',
1514 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001515 '-Wl,--version-script=' + version_script_arg,
1516 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001517 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 libbasic],
1519 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001520 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 link_depends : sym,
1522 install : true,
1523 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001524
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001525 # We cannot use shared_module because it does not support version suffix.
1526 # Unfortunately shared_library insists on creating the symlink…
1527 meson.add_install_script('sh', '-c',
1528 'rm $DESTDIR@0@/libnss_@1@.so'
1529 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001530
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001531 if want_tests != 'false'
1532 test('dlopen-nss_' + module,
1533 test_dlopen,
1534 # path to dlopen must include a slash
1535 args : nss.full_path())
1536 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001537 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001538endforeach
1539
1540############################################################
1541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542executable('systemd',
1543 systemd_sources,
1544 include_directories : includes,
1545 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001546 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547 dependencies : [threads,
1548 librt,
1549 libseccomp,
1550 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001551 libmount,
1552 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001553 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001554 install : true,
1555 install_dir : rootlibexecdir)
1556
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001557meson.add_install_script(meson_make_symlink,
1558 join_paths(rootlibexecdir, 'systemd'),
1559 join_paths(rootsbindir, 'init'))
1560
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001561exe = executable('systemd-analyze',
1562 systemd_analyze_sources,
1563 include_directories : includes,
1564 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001565 libshared],
1566 dependencies : [threads,
1567 librt,
1568 libseccomp,
1569 libselinux,
1570 libmount,
1571 libblkid],
1572 install_rpath : rootlibexecdir,
1573 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001574public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001575
1576executable('systemd-journald',
1577 systemd_journald_sources,
1578 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001579 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001580 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001581 dependencies : [threads,
1582 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001583 liblz4,
1584 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001585 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586 install : true,
1587 install_dir : rootlibexecdir)
1588
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001589exe = executable('systemd-cat',
1590 systemd_cat_sources,
1591 include_directories : includes,
1592 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001593 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594 dependencies : [threads],
1595 install_rpath : rootlibexecdir,
1596 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001597public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599exe = executable('journalctl',
1600 journalctl_sources,
1601 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001602 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001603 dependencies : [threads,
1604 libqrencode,
1605 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001606 liblz4,
1607 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001608 install_rpath : rootlibexecdir,
1609 install : true,
1610 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001611public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612
1613executable('systemd-getty-generator',
1614 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001616 link_with : [libshared],
1617 install_rpath : rootlibexecdir,
1618 install : true,
1619 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620
1621executable('systemd-debug-generator',
1622 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001624 link_with : [libshared],
1625 install_rpath : rootlibexecdir,
1626 install : true,
1627 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628
1629executable('systemd-fstab-generator',
1630 'src/fstab-generator/fstab-generator.c',
1631 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001633 link_with : [libshared],
1634 install_rpath : rootlibexecdir,
1635 install : true,
1636 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001638if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001639 executable('30-systemd-environment-d-generator',
1640 'src/environment-d-generator/environment-d-generator.c',
1641 include_directories : includes,
1642 link_with : [libshared],
1643 install_rpath : rootlibexecdir,
1644 install : true,
1645 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001646
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001647 meson.add_install_script(meson_make_symlink,
1648 join_paths(sysconfdir, 'environment'),
1649 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650endif
1651
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001652if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 executable('systemd-hibernate-resume-generator',
1654 'src/hibernate-resume/hibernate-resume-generator.c',
1655 include_directories : includes,
1656 link_with : [libshared],
1657 install_rpath : rootlibexecdir,
1658 install : true,
1659 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001661 executable('systemd-hibernate-resume',
1662 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001663 include_directories : includes,
1664 link_with : [libshared],
1665 install_rpath : rootlibexecdir,
1666 install : true,
1667 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668endif
1669
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001670if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001671 executable('systemd-gpt-auto-generator',
1672 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001673 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 dependencies : libblkid,
1677 install_rpath : rootlibexecdir,
1678 install : true,
1679 install_dir : systemgeneratordir)
1680
1681 exe = executable('systemd-dissect',
1682 'src/dissect/dissect.c',
1683 include_directories : includes,
1684 link_with : [libshared],
1685 install_rpath : rootlibexecdir,
1686 install : true,
1687 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001688 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689endif
1690
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001691if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001692 executable('systemd-resolved',
1693 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001695 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001696 libbasic_gcrypt,
1697 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001698 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001699 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001700 install : true,
1701 install_dir : rootlibexecdir)
1702
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001703 exe = executable('resolvectl',
1704 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001706 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001707 libbasic_gcrypt,
1708 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001710 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001711 libm,
1712 libidn],
1713 install_rpath : rootlibexecdir,
1714 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001715 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001716
1717 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001718 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001719 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001720
1721 meson.add_install_script(meson_make_symlink,
1722 join_paths(bindir, 'resolvectl'),
1723 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001724endif
1725
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001726if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-logind',
1728 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001731 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001732 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001733 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734 install_rpath : rootlibexecdir,
1735 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 exe = executable('loginctl',
1739 loginctl_sources,
1740 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001741 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 dependencies : [threads,
1743 liblz4,
1744 libxz],
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001748 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 exe = executable('systemd-inhibit',
1751 'src/login/inhibit.c',
1752 include_directories : includes,
1753 link_with : [libshared],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001757 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001758
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001759 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001760 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 pam_systemd = shared_library(
1762 'pam_systemd',
1763 pam_systemd_c,
1764 name_prefix : '',
1765 include_directories : includes,
1766 link_args : ['-shared',
1767 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001768 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 libshared_static],
1770 dependencies : [threads,
1771 libpam,
1772 libpam_misc],
1773 link_depends : pam_systemd_sym,
1774 install : true,
1775 install_dir : pamlibdir)
1776
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001777 if want_tests != 'false'
1778 test('dlopen-pam_systemd',
1779 test_dlopen,
1780 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001781 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001782 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001785 executable('systemd-user-runtime-dir',
1786 user_runtime_dir_sources,
1787 include_directories : includes,
1788 link_with : [libshared],
1789 install_rpath : rootlibexecdir,
1790 install : true,
1791 install_dir : rootlibexecdir)
1792endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001794if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 executable('systemd-user-sessions',
1796 'src/user-sessions/user-sessions.c',
1797 include_directories : includes,
1798 link_with : [libshared],
1799 install_rpath : rootlibexecdir,
1800 install : true,
1801 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802endif
1803
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001804if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 exe = executable('bootctl',
1806 'src/boot/bootctl.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 dependencies : [libblkid],
1810 install_rpath : rootlibexecdir,
1811 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001812 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001813
1814 executable('systemd-bless-boot',
1815 'src/boot/bless-boot.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 dependencies : [libblkid],
1819 install_rpath : rootlibexecdir,
1820 install : true,
1821 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001822
1823 executable('systemd-bless-boot-generator',
1824 'src/boot/bless-boot-generator.c',
1825 include_directories : includes,
1826 link_with : [libshared],
1827 install_rpath : rootlibexecdir,
1828 install : true,
1829 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001830endif
1831
Lennart Poetteringf876f532018-06-25 16:07:33 +02001832executable('systemd-boot-check-no-failures',
1833 'src/boot/boot-check-no-failures.c',
1834 include_directories : includes,
1835 link_with : [libshared],
1836 dependencies : [libblkid],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
1840
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001841exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1842 include_directories : includes,
1843 link_with : [libshared],
1844 dependencies : [threads],
1845 install_rpath : rootlibexecdir,
1846 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001847public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001848
Felipe Satelerf3794362018-05-22 15:08:57 -04001849
1850if get_option('link-systemctl-shared')
1851 systemctl_link_with = [libshared]
1852else
1853 systemctl_link_with = [libsystemd_static,
1854 libshared_static,
1855 libjournal_client,
1856 libbasic_gcrypt]
1857endif
1858
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001859exe = executable('systemctl', 'src/systemctl/systemctl.c',
1860 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001861 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001862 dependencies : [threads,
1863 libcap,
1864 libselinux,
1865 libxz,
1866 liblz4],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001870public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871
Lennart Poettering61d05782018-04-16 21:41:40 +02001872if conf.get('ENABLE_PORTABLED') == 1
1873 executable('systemd-portabled',
1874 systemd_portabled_sources,
1875 include_directories : includes,
1876 link_with : [libshared],
1877 dependencies : [threads],
1878 install_rpath : rootlibexecdir,
1879 install : true,
1880 install_dir : rootlibexecdir)
1881
1882 exe = executable('portablectl', 'src/portable/portablectl.c',
1883 include_directories : includes,
1884 link_with : [libshared],
1885 dependencies : [threads],
1886 install_rpath : rootlibexecdir,
1887 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001888 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001889 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001890endif
1891
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001892foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1893 meson.add_install_script(meson_make_symlink,
1894 join_paths(rootbindir, 'systemctl'),
1895 join_paths(rootsbindir, alias))
1896endforeach
1897
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001898if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 executable('systemd-backlight',
1900 'src/backlight/backlight.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
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001908if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 executable('systemd-rfkill',
1910 'src/rfkill/rfkill.c',
1911 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001912 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 install_rpath : rootlibexecdir,
1914 install : true,
1915 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001916endif
1917
1918executable('systemd-system-update-generator',
1919 'src/system-update-generator/system-update-generator.c',
1920 include_directories : includes,
1921 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001922 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001923 install : true,
1924 install_dir : systemgeneratordir)
1925
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001926if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 executable('systemd-cryptsetup',
1928 'src/cryptsetup/cryptsetup.c',
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [libcryptsetup],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 executable('systemd-cryptsetup-generator',
1937 'src/cryptsetup/cryptsetup-generator.c',
1938 include_directories : includes,
1939 link_with : [libshared],
1940 dependencies : [libcryptsetup],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001944
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001945 executable('systemd-veritysetup',
1946 'src/veritysetup/veritysetup.c',
1947 include_directories : includes,
1948 link_with : [libshared],
1949 dependencies : [libcryptsetup],
1950 install_rpath : rootlibexecdir,
1951 install : true,
1952 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001953
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001954 executable('systemd-veritysetup-generator',
1955 'src/veritysetup/veritysetup-generator.c',
1956 include_directories : includes,
1957 link_with : [libshared],
1958 dependencies : [libcryptsetup],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962endif
1963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001964if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 executable('systemd-sysv-generator',
1966 'src/sysv-generator/sysv-generator.c',
1967 include_directories : includes,
1968 link_with : [libshared],
1969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-rc-local-generator',
1974 'src/rc-local-generator/rc-local-generator.c',
1975 include_directories : includes,
1976 link_with : [libshared],
1977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-hostnamed',
1984 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001985 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001986 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001987 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 install : true,
1989 install_dir : rootlibexecdir)
1990
1991 exe = executable('hostnamectl',
1992 'src/hostname/hostnamectl.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 install_rpath : rootlibexecdir,
1996 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001997 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998endif
1999
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002000if conf.get('ENABLE_LOCALED') == 1
2001 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 # logind will load libxkbcommon.so dynamically on its own
2003 deps = [libdl]
2004 else
2005 deps = []
2006 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002007
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 executable('systemd-localed',
2009 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002010 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002011 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002014 install : true,
2015 install_dir : rootlibexecdir)
2016
2017 exe = executable('localectl',
2018 localectl_sources,
2019 include_directories : includes,
2020 link_with : [libshared],
2021 install_rpath : rootlibexecdir,
2022 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002023 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002024endif
2025
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002026if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 executable('systemd-timedated',
2028 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002030 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031 install_rpath : rootlibexecdir,
2032 install : true,
2033 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002034endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035
Yu Watanabe6129ec82018-05-03 18:07:43 +09002036if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002037 exe = executable('timedatectl',
2038 'src/timedate/timedatectl.c',
2039 include_directories : includes,
2040 install_rpath : rootlibexecdir,
2041 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002042 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002044 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002045endif
2046
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002047if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 executable('systemd-timesyncd',
2049 systemd_timesyncd_sources,
2050 include_directories : includes,
2051 link_with : [libshared],
2052 dependencies : [threads,
2053 libm],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002057
2058 executable('systemd-time-wait-sync',
2059 'src/time-wait-sync/time-wait-sync.c',
2060 include_directories : includes,
2061 link_with : [libshared],
2062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002065endif
2066
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002067if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 executable('systemd-machined',
2069 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002070 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 link_with : [libmachine_core,
2072 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073 install_rpath : rootlibexecdir,
2074 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 install_dir : rootlibexecdir)
2076
2077 exe = executable('machinectl',
2078 'src/machine/machinectl.c',
2079 include_directories : includes,
2080 link_with : [libshared],
2081 dependencies : [threads,
2082 libxz,
2083 liblz4],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002087 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002088endif
2089
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002090if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002091 executable('systemd-importd',
2092 systemd_importd_sources,
2093 include_directories : includes,
2094 link_with : [libshared],
2095 dependencies : [threads],
2096 install_rpath : rootlibexecdir,
2097 install : true,
2098 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 systemd_pull = executable('systemd-pull',
2101 systemd_pull_sources,
2102 include_directories : includes,
2103 link_with : [libshared],
2104 dependencies : [libcurl,
2105 libz,
2106 libbzip2,
2107 libxz,
2108 libgcrypt],
2109 install_rpath : rootlibexecdir,
2110 install : true,
2111 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002113 systemd_import = executable('systemd-import',
2114 systemd_import_sources,
2115 include_directories : includes,
2116 link_with : [libshared],
2117 dependencies : [libcurl,
2118 libz,
2119 libbzip2,
2120 libxz],
2121 install_rpath : rootlibexecdir,
2122 install : true,
2123 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002124
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 systemd_export = executable('systemd-export',
2126 systemd_export_sources,
2127 include_directories : includes,
2128 link_with : [libshared],
2129 dependencies : [libcurl,
2130 libz,
2131 libbzip2,
2132 libxz],
2133 install_rpath : rootlibexecdir,
2134 install : true,
2135 install_dir : rootlibexecdir)
2136 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137endif
2138
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002139if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 exe = executable('systemd-journal-upload',
2141 systemd_journal_upload_sources,
2142 include_directories : includes,
2143 link_with : [libshared],
2144 dependencies : [threads,
2145 libcurl,
2146 libgnutls,
2147 libxz,
2148 liblz4],
2149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002152 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153endif
2154
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002155if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002156 s_j_remote = executable('systemd-journal-remote',
2157 systemd_journal_remote_sources,
2158 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002159 link_with : [libshared,
2160 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002161 dependencies : [threads,
2162 libmicrohttpd,
2163 libgnutls,
2164 libxz,
2165 liblz4],
2166 install_rpath : rootlibexecdir,
2167 install : true,
2168 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 s_j_gatewayd = executable('systemd-journal-gatewayd',
2171 systemd_journal_gatewayd_sources,
2172 include_directories : includes,
2173 link_with : [libshared],
2174 dependencies : [threads,
2175 libmicrohttpd,
2176 libgnutls,
2177 libxz,
2178 liblz4],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
2182 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183endif
2184
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002185if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 executable('systemd-coredump',
2187 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002189 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002190 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002191 libacl,
2192 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002193 libxz,
2194 liblz4],
2195 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002196 install : true,
2197 install_dir : rootlibexecdir)
2198
2199 exe = executable('coredumpctl',
2200 coredumpctl_sources,
2201 include_directories : includes,
2202 link_with : [libshared],
2203 dependencies : [threads,
2204 libxz,
2205 liblz4],
2206 install_rpath : rootlibexecdir,
2207 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002208 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209endif
2210
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002211if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002212 exe = executable('systemd-binfmt',
2213 'src/binfmt/binfmt.c',
2214 include_directories : includes,
2215 link_with : [libshared],
2216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002219 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220
2221 meson.add_install_script('sh', '-c',
2222 mkdir_p.format(binfmtdir))
2223 meson.add_install_script('sh', '-c',
2224 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2225endif
2226
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002227if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002228 executable('systemd-vconsole-setup',
2229 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230 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_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 executable('systemd-random-seed',
2239 'src/random-seed/random-seed.c',
2240 include_directories : includes,
2241 link_with : [libshared],
2242 install_rpath : rootlibexecdir,
2243 install : true,
2244 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245endif
2246
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002247if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 executable('systemd-firstboot',
2249 'src/firstboot/firstboot.c',
2250 include_directories : includes,
2251 link_with : [libshared],
2252 dependencies : [libcrypt],
2253 install_rpath : rootlibexecdir,
2254 install : true,
2255 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002256endif
2257
2258executable('systemd-remount-fs',
2259 'src/remount-fs/remount-fs.c',
2260 'src/core/mount-setup.c',
2261 'src/core/mount-setup.h',
2262 include_directories : includes,
2263 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 : rootlibexecdir)
2267
2268executable('systemd-machine-id-setup',
2269 'src/machine-id-setup/machine-id-setup-main.c',
2270 'src/core/machine-id-setup.c',
2271 'src/core/machine-id-setup.h',
2272 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002273 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002274 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002275 install : true,
2276 install_dir : rootbindir)
2277
2278executable('systemd-fsck',
2279 'src/fsck/fsck.c',
2280 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002281 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002282 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002283 install : true,
2284 install_dir : rootlibexecdir)
2285
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002286executable('systemd-growfs',
2287 'src/partition/growfs.c',
2288 include_directories : includes,
2289 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002290 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootlibexecdir)
2294
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002295executable('systemd-makefs',
2296 'src/partition/makefs.c',
2297 include_directories : includes,
2298 link_with : [libshared],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootlibexecdir)
2302
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002303executable('systemd-sleep',
2304 'src/sleep/sleep.c',
2305 include_directories : includes,
2306 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002307 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308 install : true,
2309 install_dir : rootlibexecdir)
2310
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002311exe = executable('systemd-sysctl',
2312 'src/sysctl/sysctl.c',
2313 include_directories : includes,
2314 link_with : [libshared],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002318public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002319
2320executable('systemd-ac-power',
2321 'src/ac-power/ac-power.c',
2322 include_directories : includes,
2323 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002324 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325 install : true,
2326 install_dir : rootlibexecdir)
2327
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328exe = executable('systemd-detect-virt',
2329 'src/detect-virt/detect-virt.c',
2330 include_directories : includes,
2331 link_with : [libshared],
2332 install_rpath : rootlibexecdir,
2333 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002334public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002336exe = executable('systemd-delta',
2337 'src/delta/delta.c',
2338 include_directories : includes,
2339 link_with : [libshared],
2340 install_rpath : rootlibexecdir,
2341 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002342public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344exe = executable('systemd-escape',
2345 'src/escape/escape.c',
2346 include_directories : includes,
2347 link_with : [libshared],
2348 install_rpath : rootlibexecdir,
2349 install : true,
2350 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002351public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353exe = executable('systemd-notify',
2354 'src/notify/notify.c',
2355 include_directories : includes,
2356 link_with : [libshared],
2357 install_rpath : rootlibexecdir,
2358 install : true,
2359 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002360public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361
2362executable('systemd-volatile-root',
2363 'src/volatile-root/volatile-root.c',
2364 include_directories : includes,
2365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002366 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002367 install : true,
2368 install_dir : rootlibexecdir)
2369
2370executable('systemd-cgroups-agent',
2371 'src/cgroups-agent/cgroups-agent.c',
2372 include_directories : includes,
2373 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002374 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375 install : true,
2376 install_dir : rootlibexecdir)
2377
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002378exe = executable('systemd-id128',
2379 'src/id128/id128.c',
2380 include_directories : includes,
2381 link_with : [libshared],
2382 install_rpath : rootlibexecdir,
2383 install : true)
2384public_programs += exe
2385
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386exe = executable('systemd-path',
2387 'src/path/path.c',
2388 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002389 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390 install_rpath : rootlibexecdir,
2391 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002392public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394exe = executable('systemd-ask-password',
2395 'src/ask-password/ask-password.c',
2396 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002397 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398 install_rpath : rootlibexecdir,
2399 install : true,
2400 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002401public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402
2403executable('systemd-reply-password',
2404 'src/reply-password/reply-password.c',
2405 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002406 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002407 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408 install : true,
2409 install_dir : rootlibexecdir)
2410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-tty-ask-password-agent',
2412 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2413 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002414 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415 install_rpath : rootlibexecdir,
2416 install : true,
2417 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002418public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420exe = executable('systemd-cgls',
2421 'src/cgls/cgls.c',
2422 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002423 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424 install_rpath : rootlibexecdir,
2425 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002426public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-cgtop',
2429 'src/cgtop/cgtop.c',
2430 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432 install_rpath : rootlibexecdir,
2433 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002434public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
2436executable('systemd-initctl',
2437 'src/initctl/initctl.c',
2438 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002439 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002440 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441 install : true,
2442 install_dir : rootlibexecdir)
2443
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002444exe = executable('systemd-mount',
2445 'src/mount/mount-tool.c',
2446 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002447 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448 install_rpath : rootlibexecdir,
2449 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002450public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002451
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002452meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002453 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455exe = executable('systemd-run',
2456 'src/run/run.c',
2457 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002458 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459 install_rpath : rootlibexecdir,
2460 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002461public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002463exe = executable('systemd-stdio-bridge',
2464 'src/stdio-bridge/stdio-bridge.c',
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-Szmek005a29f2017-04-13 11:52:05 -04002471exe = executable('busctl',
2472 'src/busctl/busctl.c',
2473 'src/busctl/busctl-introspect.c',
2474 'src/busctl/busctl-introspect.h',
2475 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002476 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477 install_rpath : rootlibexecdir,
2478 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002479public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002481if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002482 exe = executable('systemd-sysusers',
2483 'src/sysusers/sysusers.c',
2484 include_directories : includes,
2485 link_with : [libshared],
2486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002489 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002490endif
2491
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002492if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002493 exe = executable('systemd-tmpfiles',
2494 'src/tmpfiles/tmpfiles.c',
2495 include_directories : includes,
2496 link_with : [libshared],
2497 dependencies : [libacl],
2498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002502
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002503 if want_tests != 'false'
2504 test('test-systemd-tmpfiles',
2505 test_systemd_tmpfiles_py,
2506 # https://github.com/mesonbuild/meson/issues/2681
2507 args : exe.full_path())
2508 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509endif
2510
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002511if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 exe = executable('systemd-hwdb',
2513 'src/hwdb/hwdb.c',
2514 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2515 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002516 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002517 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002518 install : true,
2519 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002520 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521endif
2522
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002523if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002524 executable('systemd-quotacheck',
2525 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002526 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 install_rpath : rootlibexecdir,
2529 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002530 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531endif
2532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533exe = executable('systemd-socket-proxyd',
2534 'src/socket-proxy/socket-proxyd.c',
2535 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002536 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002537 dependencies : [threads],
2538 install_rpath : rootlibexecdir,
2539 install : true,
2540 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002541public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543exe = executable('systemd-udevd',
2544 systemd_udevd_sources,
2545 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002546 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002547 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002549 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002550 dependencies : [threads,
2551 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002553 libacl,
2554 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002555 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 install : true,
2557 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002558public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560exe = executable('udevadm',
2561 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002562 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563 include_directories : includes,
2564 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002566 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002567 dependencies : [threads,
2568 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002570 libacl,
2571 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002572 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573 install : true,
2574 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002575public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002576
2577executable('systemd-shutdown',
2578 systemd_shutdown_sources,
2579 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002580 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002581 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002582 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002583 install : true,
2584 install_dir : rootlibexecdir)
2585
2586executable('systemd-update-done',
2587 'src/update-done/update-done.c',
2588 include_directories : includes,
2589 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002591 install : true,
2592 install_dir : rootlibexecdir)
2593
2594executable('systemd-update-utmp',
2595 'src/update-utmp/update-utmp.c',
2596 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002597 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002599 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002600 install : true,
2601 install_dir : rootlibexecdir)
2602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002603if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002604 executable('systemd-modules-load',
2605 'src/modules-load/modules-load.c',
2606 include_directories : includes,
2607 link_with : [libshared],
2608 dependencies : [libkmod],
2609 install_rpath : rootlibexecdir,
2610 install : true,
2611 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002612
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002613 meson.add_install_script('sh', '-c',
2614 mkdir_p.format(modulesloaddir))
2615 meson.add_install_script('sh', '-c',
2616 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617endif
2618
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002619exe = executable('systemd-nspawn',
2620 systemd_nspawn_sources,
2621 'src/core/mount-setup.c', # FIXME: use a variable?
2622 'src/core/mount-setup.h',
2623 'src/core/loopback-setup.c',
2624 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002625 include_directories : includes,
2626 link_with : [libnspawn_core,
2627 libshared],
2628 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629 install_rpath : rootlibexecdir,
2630 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002631public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002633if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002634 executable('systemd-networkd',
2635 systemd_networkd_sources,
2636 include_directories : includes,
2637 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002638 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002639 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002640 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002641 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002642 install_rpath : rootlibexecdir,
2643 install : true,
2644 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002646 executable('systemd-networkd-wait-online',
2647 systemd_networkd_wait_online_sources,
2648 include_directories : includes,
2649 link_with : [libnetworkd_core,
2650 libshared],
2651 install_rpath : rootlibexecdir,
2652 install : true,
2653 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002654
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002655 exe = executable('networkctl',
2656 networkctl_sources,
2657 include_directories : includes,
2658 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002659 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002660 install_rpath : rootlibexecdir,
2661 install : true,
2662 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002663 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002664endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002665
2666executable('systemd-sulogin-shell',
2667 ['src/sulogin-shell/sulogin-shell.c'],
2668 include_directories : includes,
2669 link_with : [libshared],
2670 install_rpath : rootlibexecdir,
2671 install : true,
2672 install_dir : rootlibexecdir)
2673
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002674############################################################
2675
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002676custom_target(
2677 'systemd-runtest.env',
2678 output : 'systemd-runtest.env',
2679 command : ['sh', '-c', '{ ' +
2680 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002681 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002682 '} >@OUTPUT@'],
2683 build_by_default : true)
2684
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002685foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002686 sources = tuple[0]
2687 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2688 dependencies = tuple[2]
2689 condition = tuple.length() >= 4 ? tuple[3] : ''
2690 type = tuple.length() >= 5 ? tuple[4] : ''
2691 defs = tuple.length() >= 6 ? tuple[5] : []
2692 incs = tuple.length() >= 7 ? tuple[6] : includes
2693 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002694
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002695 name = sources[0].split('/')[-1].split('.')[0]
2696 if type.startswith('timeout=')
2697 timeout = type.split('=')[1].to_int()
2698 type = ''
2699 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002700
2701 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002702 exe = executable(
2703 name,
2704 sources,
2705 include_directories : incs,
2706 link_with : link_with,
2707 dependencies : dependencies,
2708 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002709 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002711 install : install_tests,
2712 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002713
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 if type == 'manual'
2715 message('@0@ is a manual test'.format(name))
2716 elif type == 'unsafe' and want_tests != 'unsafe'
2717 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002718 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 test(name, exe,
2720 env : test_env,
2721 timeout : timeout)
2722 endif
2723 else
2724 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2725 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002726endforeach
2727
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002728exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 'test-libsystemd-sym',
2730 test_libsystemd_sym_c,
2731 include_directories : includes,
2732 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002733 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002734 install : install_tests,
2735 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002736if want_tests != 'false'
2737 test('test-libsystemd-sym', exe)
2738endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002739
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002740exe = executable(
2741 'test-libsystemd-static-sym',
2742 test_libsystemd_sym_c,
2743 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002744 link_with : [install_libsystemd_static],
2745 dependencies : [threads], # threads is already included in dependencies on the library,
2746 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002747 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002748 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002749 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002750if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002751 test('test-libsystemd-static-sym', exe)
2752endif
2753
2754exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002755 'test-libudev-sym',
2756 test_libudev_sym_c,
2757 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002758 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002759 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002760 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002761 install : install_tests,
2762 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002763if want_tests != 'false'
2764 test('test-libudev-sym', exe)
2765endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002766
2767exe = executable(
2768 'test-libudev-static-sym',
2769 test_libudev_sym_c,
2770 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002771 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002772 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002773 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002774 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002775 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002776if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002777 test('test-libudev-static-sym', exe)
2778endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002779
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002780############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002781
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002782fuzzer_exes = []
2783
Michael Olbrich59967402018-11-11 11:27:35 +01002784if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002785foreach tuple : fuzzers
2786 sources = tuple[0]
2787 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2788 dependencies = tuple[2]
2789 defs = tuple.length() >= 4 ? tuple[3] : []
2790 incs = tuple.length() >= 5 ? tuple[4] : includes
2791
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002792 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002793 dependencies += fuzzing_engine
2794 else
2795 sources += 'src/fuzz/fuzz-main.c'
2796 endif
2797
2798 name = sources[0].split('/')[-1].split('.')[0]
2799
2800 fuzzer_exes += executable(
2801 name,
2802 sources,
2803 include_directories : [incs, include_directories('src/fuzz')],
2804 link_with : link_with,
2805 dependencies : dependencies,
2806 c_args : defs,
2807 install : false)
2808endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002809endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002810
2811run_target('fuzzers',
2812 depends : fuzzer_exes,
2813 command : ['true'])
2814
2815############################################################
2816
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002817make_directive_index_py = find_program('tools/make-directive-index.py')
2818make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002819xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002820hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002821
2822subdir('units')
2823subdir('sysctl.d')
2824subdir('sysusers.d')
2825subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002826subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002827subdir('hwdb')
2828subdir('network')
2829subdir('man')
2830subdir('shell-completion/bash')
2831subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002832subdir('docs/sysvinit')
2833subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002835install_subdir('factory/etc',
2836 install_dir : factorydir)
2837
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002838install_data('xorg/50-systemd-user.sh',
2839 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002840install_data('modprobe.d/systemd.conf',
2841 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002842install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002843 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002844 'NEWS',
2845 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302846 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002847 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002848 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302849 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002850 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002851 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002852 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002853 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2854 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002855
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002856meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2857meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2858
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002859############################################################
2860
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002861meson_check_help = find_program('tools/meson-check-help.sh')
2862
2863foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002864 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002865 if want_tests != 'false'
2866 test('check-help-' + name,
2867 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002868 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002869 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002870endforeach
2871
2872############################################################
2873
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002874# Enable tests for all supported sanitizers
2875foreach tuple : sanitizers
2876 sanitizer = tuple[0]
2877 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002878
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002879 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002880 prev = ''
2881 foreach p : fuzz_regression_tests
2882 b = p.split('/')[-2]
2883 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002884
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002885 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002886
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002887 if name != prev
2888 if want_tests == 'false'
2889 message('Not compiling @0@ because tests is set to false'.format(name))
2890 elif slow_tests
2891 exe = custom_target(
2892 name,
2893 output : name,
2894 depends : build,
2895 command : [env, 'ln', '-fs',
2896 join_paths(build.full_path(), b),
2897 '@OUTPUT@'],
2898 build_by_default : true)
2899 else
2900 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2901 endif
2902 endif
2903 prev = name
2904
2905 if want_tests != 'false' and slow_tests
2906 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2907 env,
2908 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002909 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002910 endif
2911 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002912 endif
2913endforeach
2914
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002915
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002916############################################################
2917
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002918if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002919 all_files = run_command(
2920 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002921 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002922 'ls-files',
2923 ':/*.[ch]'])
2924 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002925
userwithuide85a6902017-08-09 13:41:44 +00002926 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002927 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002928 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002929 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002930 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002931 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002932 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002933endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002934
2935if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002936 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002937 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002938 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002939 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002940endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002941
2942if git.found()
2943 git_head = run_command(
2944 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002945 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002946 'rev-parse', 'HEAD']).stdout().strip()
2947 git_head_short = run_command(
2948 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002949 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002950 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2951
2952 run_target(
2953 'git-snapshot',
2954 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002955 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002956 git_head_short),
2957 '--prefix', 'systemd-@0@/'.format(git_head),
2958 'HEAD'])
2959endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002960
2961############################################################
2962
Lennart Poettering51b13862017-12-20 12:51:14 +01002963meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2964run_target(
2965 'check-api-docs',
2966 depends : [man, libsystemd, libudev],
2967 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2968
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002969run_target(
2970 'make-index-md',
2971 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2972
Lennart Poettering51b13862017-12-20 12:51:14 +01002973############################################################
2974
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002975status = [
2976 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2977
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002978 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002979 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002980 'prefix directory: @0@'.format(prefixdir),
2981 'rootprefix directory: @0@'.format(rootprefixdir),
2982 'sysconf directory: @0@'.format(sysconfdir),
2983 'include directory: @0@'.format(includedir),
2984 'lib directory: @0@'.format(libdir),
2985 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002986 'SysV init scripts: @0@'.format(sysvinit_path),
2987 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002988 'PAM modules directory: @0@'.format(pamlibdir),
2989 'PAM configuration directory: @0@'.format(pamconfdir),
2990 'RPM macros directory: @0@'.format(rpmmacrosdir),
2991 'modprobe.d directory: @0@'.format(modprobedir),
2992 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2993 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2994 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2995 'bash completions directory: @0@'.format(bashcompletiondir),
2996 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002997 'extra start script: @0@'.format(get_option('rc-local')),
2998 'extra stop script: @0@'.format(get_option('halt-local')),
2999 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3000 get_option('debug-tty')),
3001 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003002 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003003 'maximum system UID: @0@'.format(system_uid_max),
3004 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003005 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3006 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3007 'minimum container UID base: @0@'.format(container_uid_base_min),
3008 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003009 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003010 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003011 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003012 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003013 'nobody user name: @0@'.format(nobody_user),
3014 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003015 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003016 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003017
3018 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003019 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003020 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3021 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3022
3023alt_dns_servers = '\n '.join(dns_servers.split(' '))
3024alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3025status += [
3026 'default DNS servers: @0@'.format(alt_dns_servers),
3027 'default NTP servers: @0@'.format(alt_ntp_servers)]
3028
3029alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3030 '@@0@'.format(time_epoch)).stdout().strip()
3031status += [
3032 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3033
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003034status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003035 'static libsystemd: @0@'.format(static_libsystemd),
3036 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003037
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003038# TODO:
3039# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3040# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3041# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003043if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003044 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003045
3046 if have_gnu_efi
3047 status += [
3048 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3049 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003050 'EFI lib directory: @0@'.format(efi_libdir),
3051 'EFI lds directory: @0@'.format(efi_ldsdir),
3052 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003053 endif
3054endif
3055
3056found = []
3057missing = []
3058
3059foreach tuple : [
3060 ['libcryptsetup'],
3061 ['PAM'],
3062 ['AUDIT'],
3063 ['IMA'],
3064 ['AppArmor'],
3065 ['SELinux'],
3066 ['SECCOMP'],
3067 ['SMACK'],
3068 ['zlib'],
3069 ['xz'],
3070 ['lz4'],
3071 ['bzip2'],
3072 ['ACL'],
3073 ['gcrypt'],
3074 ['qrencode'],
3075 ['microhttpd'],
3076 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003077 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003079 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003080 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003081 ['libidn'],
3082 ['libiptc'],
3083 ['elfutils'],
3084 ['binfmt'],
3085 ['vconsole'],
3086 ['quotacheck'],
3087 ['tmpfiles'],
3088 ['environment.d'],
3089 ['sysusers'],
3090 ['firstboot'],
3091 ['randomseed'],
3092 ['backlight'],
3093 ['rfkill'],
3094 ['logind'],
3095 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003096 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 ['importd'],
3098 ['hostnamed'],
3099 ['timedated'],
3100 ['timesyncd'],
3101 ['localed'],
3102 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003103 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003104 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3105 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 ['coredump'],
3107 ['polkit'],
3108 ['legacy pkla', install_polkit_pkla],
3109 ['efi'],
3110 ['gnu-efi', have_gnu_efi],
3111 ['kmod'],
3112 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003113 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 ['blkid'],
3115 ['dbus'],
3116 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003117 ['nss-myhostname'],
3118 ['nss-mymachines'],
3119 ['nss-resolve'],
3120 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003121 ['hwdb'],
3122 ['tpm'],
3123 ['man pages', want_man],
3124 ['html pages', want_html],
3125 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003126 ['SysV compat'],
3127 ['utmp'],
3128 ['ldconfig'],
3129 ['hibernate'],
3130 ['adm group', get_option('adm-group')],
3131 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003132 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003133 ['debug hashmap'],
3134 ['debug mmap cache'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003135 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003136 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003137 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003138 ['link-udev-shared', get_option('link-udev-shared')],
3139 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140]
3141
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003142 if tuple.length() >= 2
3143 cond = tuple[1]
3144 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003145 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3146 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003147 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003148 endif
3149 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003150 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003151 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003152 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153 endif
3154endforeach
3155
3156status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003157 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003158 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003159 '',
3160 'disabled features: @0@'.format(', '.join(missing)),
3161 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003162message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003163
3164if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003165 warning('\n' +
3166 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3167 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3168 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003169endif