blob: b989c664b1ccaf277f51146d2fbf73f6b8fc30dc [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
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200785foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900786 if name == 'hashmap'
787 enable_debug_hashmap = true
788 elif name == 'mmap-cache'
789 enable_debug_mmap_cache = true
790 else
791 message('unknown debug option "@0@", ignoring'.format(name))
792 endif
793endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200794conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
795conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400796
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200797conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200798conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200799
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800#####################################################################
801
802threads = dependency('threads')
803librt = cc.find_library('rt')
804libm = cc.find_library('m')
805libdl = cc.find_library('dl')
806libcrypt = cc.find_library('crypt')
807
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400808libcap = dependency('libcap', required : false)
809if not libcap.found()
810 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
811 libcap = cc.find_library('cap')
812endif
813
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100815 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816
817want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500818if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400820 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400821 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
829want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500830if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libselinux = dependency('libselinux',
832 version : '>= 2.1.9',
833 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200834 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400838endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840
841want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500842if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libapparmor = dependency('libapparmor',
844 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400851
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400852smack_run_label = get_option('smack-run-label')
853if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400854 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855endif
856
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400857want_polkit = get_option('polkit')
858install_polkit = false
859install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400862
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 libpolkit = dependency('polkit-gobject-1',
864 required : false)
865 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
866 message('Old polkit detected, will install pkla files')
867 install_polkit_pkla = true
868 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400869endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400871
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400872want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500873if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400874 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400876else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400878 libacl = []
879endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500883if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891
892want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901
902want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libkmod = dependency('libkmod',
905 version : '>= 15',
906 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913
914want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500915if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libpam = cc.find_library('pam', required : want_pam == 'true')
917 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libpam = []
922 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925
926want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500927if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libmicrohttpd = dependency('libmicrohttpd',
929 version : '>= 0.9.33',
930 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937
938want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500939if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libcryptsetup = dependency('libcryptsetup',
941 version : '>= 1.6.0',
942 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100944 have_sector = cc.has_member(
945 'struct crypt_params_plain',
946 'sector_size',
947 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100950 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100954conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955
956want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500957if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libcurl = dependency('libcurl',
959 version : '>= 7.32.0',
960 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
968want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400969want_libidn2 = get_option('libidn2')
970if want_libidn == 'true' and want_libidn2 == 'true'
971 error('libidn and libidn2 cannot be requested simultaneously')
972endif
973
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500974if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libidn = dependency('libidn',
976 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400978else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400980 libidn = []
981endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500983if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400984 # libidn is used for both libidn and libidn2 objects
985 libidn = dependency('libidn2',
986 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = libidn.found()
988else
989 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500994if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libiptc = dependency('libiptc',
996 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003
1004want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001005if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libqrencode = dependency('libqrencode',
1007 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001015want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001016if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001017 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1018 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
1022endif
1023if not have
1024 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001025 libgcrypt = []
1026 libgpg_error = []
1027endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001029
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001031if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libgnutls = dependency('gnutls',
1033 version : '>= 3.1.4',
1034 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001038 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001042want_openssl = get_option('openssl')
1043if want_openssl != 'false' and not fuzzer_build
1044 libopenssl = dependency('openssl',
1045 version : '>= 1.1.0',
1046 required : want_openssl == 'true')
1047 have = libopenssl.found()
1048else
1049 have = false
1050 libopenssl = []
1051endif
1052conf.set10('HAVE_OPENSSL', have)
1053
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libdw = dependency('libdw',
1057 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libz = dependency('zlib',
1068 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libbzip2 = cc.find_library('bz2',
1079 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
1087want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001089 libxz = dependency('liblzma',
1090 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001094 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097
1098want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001099if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001100 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001101 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001109
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001110want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001111if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001112 libxkbcommon = dependency('xkbcommon',
1113 version : '>= 0.3.0',
1114 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001116else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001118 libxkbcommon = []
1119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001122want_pcre2 = get_option('pcre2')
1123if want_pcre2 != 'false'
1124 libpcre2 = dependency('libpcre2-8',
1125 required : want_pcre2 == 'true')
1126 have = libpcre2.found()
1127else
1128 have = false
1129 libpcre2 = []
1130endif
1131conf.set10('HAVE_PCRE2', have)
1132
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001133want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001134if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libglib = dependency('glib-2.0',
1136 version : '>= 2.22.0',
1137 required : want_glib == 'true')
1138 libgobject = dependency('gobject-2.0',
1139 version : '>= 2.22.0',
1140 required : want_glib == 'true')
1141 libgio = dependency('gio-2.0',
1142 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001143 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libglib = []
1147 libgobject = []
1148 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001151
1152want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001153if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libdbus = dependency('dbus-1',
1155 version : '>= 1.3.2',
1156 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001163
Yu Watanabe42303dc2017-06-18 05:22:32 +09001164default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001165if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001166 default_dnssec = 'no'
1167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001169 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1170 default_dnssec = 'no'
1171endif
1172conf.set('DEFAULT_DNSSEC_MODE',
1173 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1174substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1175
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001176dns_over_tls = get_option('dns-over-tls')
1177if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001178 if dns_over_tls == 'openssl'
1179 have_gnutls = false
1180 else
1181 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1182 if dns_over_tls == 'gnutls' and not have_gnutls
1183 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1184 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001185 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001186 if dns_over_tls == 'gnutls' or have_gnutls
1187 have_openssl = false
1188 else
1189 have_openssl = conf.get('HAVE_OPENSSL') == 1
1190 if dns_over_tls != 'auto' and not have_openssl
1191 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1192 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1193 endif
1194 endif
1195 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001196else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001197 have = false
1198 have_gnutls = false
1199 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001200endif
1201conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001202conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1203conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001204
Iwan Timmerc9299be2018-06-13 20:26:24 +02001205default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001206if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001207 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001208endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001209if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1210 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 +02001211 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001212endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001213conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1214 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1215substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001216
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001218if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219 have = (conf.get('HAVE_LIBCURL') == 1 and
1220 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221 conf.get('HAVE_XZ') == 1 and
1222 conf.get('HAVE_GCRYPT') == 1)
1223 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 error('importd support was requested, but dependencies are not available')
1225 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226else
1227 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001228endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001230
1231want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001232if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1234 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1236 # it's possible to build one without the other. Complain only if
1237 # support was explictly requested. The auxiliary files like sysusers
1238 # config should be installed when any of the programs are built.
1239 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1240 error('remote support was requested, but dependencies are not available')
1241 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 have = have_deps[0] or have_deps[1]
1243else
1244 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001245endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001246conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001247
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001248foreach term : ['utmp',
1249 'hibernate',
1250 'environment-d',
1251 'binfmt',
1252 'coredump',
1253 'resolve',
1254 'logind',
1255 'hostnamed',
1256 'localed',
1257 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001258 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001259 'networkd',
1260 'timedated',
1261 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001262 'firstboot',
1263 'randomseed',
1264 'backlight',
1265 'vconsole',
1266 'quotacheck',
1267 'sysusers',
1268 'tmpfiles',
1269 'hwdb',
1270 'rfkill',
1271 'ldconfig',
1272 'efi',
1273 'tpm',
1274 'ima',
1275 'smack',
1276 'gshadow',
1277 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001278 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001279 'nss-systemd']
1280 have = get_option(term)
1281 name = 'ENABLE_' + term.underscorify().to_upper()
1282 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283endforeach
1284
Yu Watanabe08540a92018-07-18 09:25:57 +09001285foreach tuple : [['nss-mymachines', 'machined'],
1286 ['nss-resolve', 'resolve']]
1287 want = get_option(tuple[0])
1288 if want != 'false'
1289 have = get_option(tuple[1])
1290 if want == 'true' and not have
1291 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1292 endif
1293 else
1294 have = false
1295 endif
1296 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1297 conf.set10(name, have)
1298endforeach
1299
1300enable_nss = false
1301foreach term : ['ENABLE_NSS_MYHOSTNAME',
1302 'ENABLE_NSS_MYMACHINES',
1303 'ENABLE_NSS_RESOLVE',
1304 'ENABLE_NSS_SYSTEMD']
1305 if conf.get(term) == 1
1306 enable_nss = true
1307 endif
1308endforeach
1309conf.set10('ENABLE_NSS', enable_nss)
1310
Yu Watanabe348b4432018-05-07 18:17:35 +09001311conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001312
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001313tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001314fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001315
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001316conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001317
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001318#####################################################################
1319
1320if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001321 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001322
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001323 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001324 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001325 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001326 elif efi_arch == 'x86_64'
1327 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001328 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001329 elif efi_arch == 'arm'
1330 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001331 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001332 elif efi_arch == 'aarch64'
1333 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001334 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 else
1336 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001337 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001339
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001340 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001342
Yu Watanabeac093402018-05-10 16:04:16 +09001343 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001344else
1345 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001347conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348
1349#####################################################################
1350
1351config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001352 output : 'config.h',
1353 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001354
Yu Watanabe348b4432018-05-07 18:17:35 +09001355meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1356
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357includes = include_directories('src/basic',
1358 'src/shared',
1359 'src/systemd',
1360 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001361 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001362 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363 'src/resolve',
1364 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001365 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366 'src/login',
1367 'src/udev',
1368 'src/libudev',
1369 'src/core',
1370 'src/libsystemd/sd-bus',
1371 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001372 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373 'src/libsystemd/sd-hwdb',
1374 'src/libsystemd/sd-id128',
1375 'src/libsystemd/sd-netlink',
1376 'src/libsystemd/sd-network',
1377 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001378 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379
1380add_project_arguments('-include', 'config.h', language : 'c')
1381
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382subdir('po')
1383subdir('catalog')
1384subdir('src/systemd')
1385subdir('src/basic')
1386subdir('src/libsystemd')
1387subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001389subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390
1391libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 'journal-core',
1393 libjournal_core_sources,
1394 journald_gperf_c,
1395 include_directories : includes,
1396 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001398libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001401 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001402 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 include_directories : includes,
1404 link_args : ['-shared',
1405 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001406 link_with : [libbasic,
1407 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001408 link_whole : [libsystemd_static,
1409 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 dependencies : [threads,
1411 librt,
1412 libxz,
1413 liblz4],
1414 link_depends : libsystemd_sym,
1415 install : true,
1416 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417
Davide Cavalca70848ec2018-04-09 02:43:35 -07001418static_libsystemd = get_option('static-libsystemd')
1419static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1420
1421install_libsystemd_static = static_library(
1422 'systemd',
1423 libsystemd_sources,
1424 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001425 basic_sources,
1426 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001427 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001428 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001429 build_by_default : static_libsystemd != 'false',
1430 install : static_libsystemd != 'false',
1431 install_dir : rootlibdir,
1432 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1433 dependencies : [threads,
1434 librt,
1435 libxz,
1436 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001437 libcap,
1438 libblkid,
1439 libmount,
1440 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001441 libgcrypt],
1442 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444############################################################
1445
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001446# binaries that have --help and are intended for use by humans,
1447# usually, but not always, installed in /bin.
1448public_programs = []
1449
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450subdir('src/libudev')
1451subdir('src/shared')
1452subdir('src/core')
1453subdir('src/udev')
1454subdir('src/network')
1455
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001456subdir('src/analyze')
1457subdir('src/journal-remote')
1458subdir('src/coredump')
1459subdir('src/hostname')
1460subdir('src/import')
1461subdir('src/kernel-install')
1462subdir('src/locale')
1463subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001464subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001465subdir('src/nspawn')
1466subdir('src/resolve')
1467subdir('src/timedate')
1468subdir('src/timesync')
1469subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001470subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001471
1472subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001473subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001474subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001475subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001476
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001477############################################################
1478
1479# only static linking apart from libdl, to make sure that the
1480# module is linked to all libraries that it uses.
1481test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001482 'test-dlopen',
1483 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001484 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 include_directories : includes,
1486 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001487 dependencies : [libdl],
1488 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001489
Yu Watanabe08540a92018-07-18 09:25:57 +09001490foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001491 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001492 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1493 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001494
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001495 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001496 if condition
1497 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001499 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001500 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001501
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001502 nss = shared_library(
1503 'nss_' + module,
1504 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001505 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001506 version : '2',
1507 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001508 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1509 link_args : ['-Wl,-z,nodelete',
1510 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 '-Wl,--version-script=' + version_script_arg,
1512 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001513 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001514 libbasic],
1515 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001516 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001517 link_depends : sym,
1518 install : true,
1519 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001520
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 # We cannot use shared_module because it does not support version suffix.
1522 # Unfortunately shared_library insists on creating the symlink…
1523 meson.add_install_script('sh', '-c',
1524 'rm $DESTDIR@0@/libnss_@1@.so'
1525 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001526
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001527 if want_tests != 'false'
1528 test('dlopen-nss_' + module,
1529 test_dlopen,
1530 # path to dlopen must include a slash
1531 args : nss.full_path())
1532 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001534endforeach
1535
1536############################################################
1537
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538executable('systemd',
1539 systemd_sources,
1540 include_directories : includes,
1541 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001542 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543 dependencies : [threads,
1544 librt,
1545 libseccomp,
1546 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001547 libmount,
1548 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001549 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550 install : true,
1551 install_dir : rootlibexecdir)
1552
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001553meson.add_install_script(meson_make_symlink,
1554 join_paths(rootlibexecdir, 'systemd'),
1555 join_paths(rootsbindir, 'init'))
1556
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001557exe = executable('systemd-analyze',
1558 systemd_analyze_sources,
1559 include_directories : includes,
1560 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001561 libshared],
1562 dependencies : [threads,
1563 librt,
1564 libseccomp,
1565 libselinux,
1566 libmount,
1567 libblkid],
1568 install_rpath : rootlibexecdir,
1569 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001570public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571
1572executable('systemd-journald',
1573 systemd_journald_sources,
1574 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001575 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001576 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577 dependencies : [threads,
1578 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001579 liblz4,
1580 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001581 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001582 install : true,
1583 install_dir : rootlibexecdir)
1584
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001585exe = executable('systemd-cat',
1586 systemd_cat_sources,
1587 include_directories : includes,
1588 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001589 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001590 dependencies : [threads],
1591 install_rpath : rootlibexecdir,
1592 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001593public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001594
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001595exe = executable('journalctl',
1596 journalctl_sources,
1597 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001598 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599 dependencies : [threads,
1600 libqrencode,
1601 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001602 liblz4,
1603 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604 install_rpath : rootlibexecdir,
1605 install : true,
1606 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001607public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608
1609executable('systemd-getty-generator',
1610 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001612 link_with : [libshared],
1613 install_rpath : rootlibexecdir,
1614 install : true,
1615 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616
1617executable('systemd-debug-generator',
1618 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001620 link_with : [libshared],
1621 install_rpath : rootlibexecdir,
1622 install : true,
1623 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001624
1625executable('systemd-fstab-generator',
1626 'src/fstab-generator/fstab-generator.c',
1627 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001629 link_with : [libshared],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001634if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 executable('30-systemd-environment-d-generator',
1636 'src/environment-d-generator/environment-d-generator.c',
1637 include_directories : includes,
1638 link_with : [libshared],
1639 install_rpath : rootlibexecdir,
1640 install : true,
1641 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001642
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 meson.add_install_script(meson_make_symlink,
1644 join_paths(sysconfdir, 'environment'),
1645 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646endif
1647
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001648if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 executable('systemd-hibernate-resume-generator',
1650 'src/hibernate-resume/hibernate-resume-generator.c',
1651 include_directories : includes,
1652 link_with : [libshared],
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001657 executable('systemd-hibernate-resume',
1658 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001659 include_directories : includes,
1660 link_with : [libshared],
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001664endif
1665
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001666if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 executable('systemd-gpt-auto-generator',
1668 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001669 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001670 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001671 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001672 dependencies : libblkid,
1673 install_rpath : rootlibexecdir,
1674 install : true,
1675 install_dir : systemgeneratordir)
1676
1677 exe = executable('systemd-dissect',
1678 'src/dissect/dissect.c',
1679 include_directories : includes,
1680 link_with : [libshared],
1681 install_rpath : rootlibexecdir,
1682 install : true,
1683 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001684 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685endif
1686
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001687if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001688 executable('systemd-resolved',
1689 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001690 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001691 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001692 libbasic_gcrypt,
1693 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001694 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001695 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001696 install : true,
1697 install_dir : rootlibexecdir)
1698
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001699 exe = executable('resolvectl',
1700 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001702 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001703 libbasic_gcrypt,
1704 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001706 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 libm,
1708 libidn],
1709 install_rpath : rootlibexecdir,
1710 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001711 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001712
1713 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001714 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001715 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001716
1717 meson.add_install_script(meson_make_symlink,
1718 join_paths(bindir, 'resolvectl'),
1719 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001722if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 executable('systemd-logind',
1724 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001725 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001727 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001728 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001729 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001730 install_rpath : rootlibexecdir,
1731 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 exe = executable('loginctl',
1735 loginctl_sources,
1736 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 dependencies : [threads,
1739 liblz4,
1740 libxz],
1741 install_rpath : rootlibexecdir,
1742 install : true,
1743 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001744 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 exe = executable('systemd-inhibit',
1747 'src/login/inhibit.c',
1748 include_directories : includes,
1749 link_with : [libshared],
1750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001753 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001754
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001755 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001756 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001757 pam_systemd = shared_library(
1758 'pam_systemd',
1759 pam_systemd_c,
1760 name_prefix : '',
1761 include_directories : includes,
1762 link_args : ['-shared',
1763 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001764 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 libshared_static],
1766 dependencies : [threads,
1767 libpam,
1768 libpam_misc],
1769 link_depends : pam_systemd_sym,
1770 install : true,
1771 install_dir : pamlibdir)
1772
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001773 if want_tests != 'false'
1774 test('dlopen-pam_systemd',
1775 test_dlopen,
1776 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001777 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001778 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001781 executable('systemd-user-runtime-dir',
1782 user_runtime_dir_sources,
1783 include_directories : includes,
1784 link_with : [libshared],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : rootlibexecdir)
1788endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001789
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001790if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 executable('systemd-user-sessions',
1792 'src/user-sessions/user-sessions.c',
1793 include_directories : includes,
1794 link_with : [libshared],
1795 install_rpath : rootlibexecdir,
1796 install : true,
1797 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001798endif
1799
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001800if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 exe = executable('bootctl',
1802 'src/boot/bootctl.c',
1803 include_directories : includes,
1804 link_with : [libshared],
1805 dependencies : [libblkid],
1806 install_rpath : rootlibexecdir,
1807 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001808 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001809
1810 executable('systemd-bless-boot',
1811 'src/boot/bless-boot.c',
1812 include_directories : includes,
1813 link_with : [libshared],
1814 dependencies : [libblkid],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001818
1819 executable('systemd-bless-boot-generator',
1820 'src/boot/bless-boot-generator.c',
1821 include_directories : includes,
1822 link_with : [libshared],
1823 install_rpath : rootlibexecdir,
1824 install : true,
1825 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001826endif
1827
Lennart Poetteringf876f532018-06-25 16:07:33 +02001828executable('systemd-boot-check-no-failures',
1829 'src/boot/boot-check-no-failures.c',
1830 include_directories : includes,
1831 link_with : [libshared],
1832 dependencies : [libblkid],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootlibexecdir)
1836
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001837exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 dependencies : [threads],
1841 install_rpath : rootlibexecdir,
1842 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001843public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001844
Felipe Satelerf3794362018-05-22 15:08:57 -04001845
1846if get_option('link-systemctl-shared')
1847 systemctl_link_with = [libshared]
1848else
1849 systemctl_link_with = [libsystemd_static,
1850 libshared_static,
1851 libjournal_client,
1852 libbasic_gcrypt]
1853endif
1854
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001855exe = executable('systemctl', 'src/systemctl/systemctl.c',
1856 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001857 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001858 dependencies : [threads,
1859 libcap,
1860 libselinux,
1861 libxz,
1862 liblz4],
1863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001866public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001867
Lennart Poettering61d05782018-04-16 21:41:40 +02001868if conf.get('ENABLE_PORTABLED') == 1
1869 executable('systemd-portabled',
1870 systemd_portabled_sources,
1871 include_directories : includes,
1872 link_with : [libshared],
1873 dependencies : [threads],
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : rootlibexecdir)
1877
1878 exe = executable('portablectl', 'src/portable/portablectl.c',
1879 include_directories : includes,
1880 link_with : [libshared],
1881 dependencies : [threads],
1882 install_rpath : rootlibexecdir,
1883 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001884 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001885 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001886endif
1887
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001888foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1889 meson.add_install_script(meson_make_symlink,
1890 join_paths(rootbindir, 'systemctl'),
1891 join_paths(rootsbindir, alias))
1892endforeach
1893
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001894if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 executable('systemd-backlight',
1896 'src/backlight/backlight.c',
1897 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001898 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001902endif
1903
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001904if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001905 executable('systemd-rfkill',
1906 'src/rfkill/rfkill.c',
1907 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001908 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001909 install_rpath : rootlibexecdir,
1910 install : true,
1911 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001912endif
1913
1914executable('systemd-system-update-generator',
1915 'src/system-update-generator/system-update-generator.c',
1916 include_directories : includes,
1917 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001918 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919 install : true,
1920 install_dir : systemgeneratordir)
1921
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001922if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 executable('systemd-cryptsetup',
1924 'src/cryptsetup/cryptsetup.c',
1925 include_directories : includes,
1926 link_with : [libshared],
1927 dependencies : [libcryptsetup],
1928 install_rpath : rootlibexecdir,
1929 install : true,
1930 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001931
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001932 executable('systemd-cryptsetup-generator',
1933 'src/cryptsetup/cryptsetup-generator.c',
1934 include_directories : includes,
1935 link_with : [libshared],
1936 dependencies : [libcryptsetup],
1937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001941 executable('systemd-veritysetup',
1942 'src/veritysetup/veritysetup.c',
1943 include_directories : includes,
1944 link_with : [libshared],
1945 dependencies : [libcryptsetup],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 executable('systemd-veritysetup-generator',
1951 'src/veritysetup/veritysetup-generator.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [libcryptsetup],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958endif
1959
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001960if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001961 executable('systemd-sysv-generator',
1962 'src/sysv-generator/sysv-generator.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 executable('systemd-rc-local-generator',
1970 'src/rc-local-generator/rc-local-generator.c',
1971 include_directories : includes,
1972 link_with : [libshared],
1973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976endif
1977
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001978if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 executable('systemd-hostnamed',
1980 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001981 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001982 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001983 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 install : true,
1985 install_dir : rootlibexecdir)
1986
1987 exe = executable('hostnamectl',
1988 'src/hostname/hostnamectl.c',
1989 include_directories : includes,
1990 link_with : [libshared],
1991 install_rpath : rootlibexecdir,
1992 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001993 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994endif
1995
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001996if conf.get('ENABLE_LOCALED') == 1
1997 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 # logind will load libxkbcommon.so dynamically on its own
1999 deps = [libdl]
2000 else
2001 deps = []
2002 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002003
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 executable('systemd-localed',
2005 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002006 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002007 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 install : true,
2011 install_dir : rootlibexecdir)
2012
2013 exe = executable('localectl',
2014 localectl_sources,
2015 include_directories : includes,
2016 link_with : [libshared],
2017 install_rpath : rootlibexecdir,
2018 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002019 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020endif
2021
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002022if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 executable('systemd-timedated',
2024 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002025 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002026 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 install_rpath : rootlibexecdir,
2028 install : true,
2029 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002030endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031
Yu Watanabe6129ec82018-05-03 18:07:43 +09002032if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 exe = executable('timedatectl',
2034 'src/timedate/timedatectl.c',
2035 include_directories : includes,
2036 install_rpath : rootlibexecdir,
2037 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002038 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002040 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041endif
2042
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002043if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 executable('systemd-timesyncd',
2045 systemd_timesyncd_sources,
2046 include_directories : includes,
2047 link_with : [libshared],
2048 dependencies : [threads,
2049 libm],
2050 install_rpath : rootlibexecdir,
2051 install : true,
2052 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002053
2054 executable('systemd-time-wait-sync',
2055 'src/time-wait-sync/time-wait-sync.c',
2056 include_directories : includes,
2057 link_with : [libshared],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-machined',
2065 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002066 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 link_with : [libmachine_core,
2068 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002069 install_rpath : rootlibexecdir,
2070 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 install_dir : rootlibexecdir)
2072
2073 exe = executable('machinectl',
2074 'src/machine/machinectl.c',
2075 include_directories : includes,
2076 link_with : [libshared],
2077 dependencies : [threads,
2078 libxz,
2079 liblz4],
2080 install_rpath : rootlibexecdir,
2081 install : true,
2082 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002083 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084endif
2085
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002086if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 executable('systemd-importd',
2088 systemd_importd_sources,
2089 include_directories : includes,
2090 link_with : [libshared],
2091 dependencies : [threads],
2092 install_rpath : rootlibexecdir,
2093 install : true,
2094 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 systemd_pull = executable('systemd-pull',
2097 systemd_pull_sources,
2098 include_directories : includes,
2099 link_with : [libshared],
2100 dependencies : [libcurl,
2101 libz,
2102 libbzip2,
2103 libxz,
2104 libgcrypt],
2105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 systemd_import = executable('systemd-import',
2110 systemd_import_sources,
2111 include_directories : includes,
2112 link_with : [libshared],
2113 dependencies : [libcurl,
2114 libz,
2115 libbzip2,
2116 libxz],
2117 install_rpath : rootlibexecdir,
2118 install : true,
2119 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002120
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002121 systemd_export = executable('systemd-export',
2122 systemd_export_sources,
2123 include_directories : includes,
2124 link_with : [libshared],
2125 dependencies : [libcurl,
2126 libz,
2127 libbzip2,
2128 libxz],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
2132 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133endif
2134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002135if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 exe = executable('systemd-journal-upload',
2137 systemd_journal_upload_sources,
2138 include_directories : includes,
2139 link_with : [libshared],
2140 dependencies : [threads,
2141 libcurl,
2142 libgnutls,
2143 libxz,
2144 liblz4],
2145 install_rpath : rootlibexecdir,
2146 install : true,
2147 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002148 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149endif
2150
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002151if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002152 s_j_remote = executable('systemd-journal-remote',
2153 systemd_journal_remote_sources,
2154 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002155 link_with : [libshared,
2156 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 dependencies : [threads,
2158 libmicrohttpd,
2159 libgnutls,
2160 libxz,
2161 liblz4],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166 s_j_gatewayd = executable('systemd-journal-gatewayd',
2167 systemd_journal_gatewayd_sources,
2168 include_directories : includes,
2169 link_with : [libshared],
2170 dependencies : [threads,
2171 libmicrohttpd,
2172 libgnutls,
2173 libxz,
2174 liblz4],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
2178 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179endif
2180
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002181if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-coredump',
2183 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002184 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002185 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002186 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002187 libacl,
2188 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002189 libxz,
2190 liblz4],
2191 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 install : true,
2193 install_dir : rootlibexecdir)
2194
2195 exe = executable('coredumpctl',
2196 coredumpctl_sources,
2197 include_directories : includes,
2198 link_with : [libshared],
2199 dependencies : [threads,
2200 libxz,
2201 liblz4],
2202 install_rpath : rootlibexecdir,
2203 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002204 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205endif
2206
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002207if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002208 exe = executable('systemd-binfmt',
2209 'src/binfmt/binfmt.c',
2210 include_directories : includes,
2211 link_with : [libshared],
2212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002215 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002216
2217 meson.add_install_script('sh', '-c',
2218 mkdir_p.format(binfmtdir))
2219 meson.add_install_script('sh', '-c',
2220 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2221endif
2222
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002223if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002224 executable('systemd-vconsole-setup',
2225 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002226 include_directories : includes,
2227 link_with : [libshared],
2228 install_rpath : rootlibexecdir,
2229 install : true,
2230 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231endif
2232
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002233if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002234 executable('systemd-random-seed',
2235 'src/random-seed/random-seed.c',
2236 include_directories : includes,
2237 link_with : [libshared],
2238 install_rpath : rootlibexecdir,
2239 install : true,
2240 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241endif
2242
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002243if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 executable('systemd-firstboot',
2245 'src/firstboot/firstboot.c',
2246 include_directories : includes,
2247 link_with : [libshared],
2248 dependencies : [libcrypt],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252endif
2253
2254executable('systemd-remount-fs',
2255 'src/remount-fs/remount-fs.c',
2256 'src/core/mount-setup.c',
2257 'src/core/mount-setup.h',
2258 include_directories : includes,
2259 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002260 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261 install : true,
2262 install_dir : rootlibexecdir)
2263
2264executable('systemd-machine-id-setup',
2265 'src/machine-id-setup/machine-id-setup-main.c',
2266 'src/core/machine-id-setup.c',
2267 'src/core/machine-id-setup.h',
2268 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002270 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271 install : true,
2272 install_dir : rootbindir)
2273
2274executable('systemd-fsck',
2275 'src/fsck/fsck.c',
2276 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002277 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002278 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279 install : true,
2280 install_dir : rootlibexecdir)
2281
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002282executable('systemd-growfs',
2283 'src/partition/growfs.c',
2284 include_directories : includes,
2285 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002286 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002287 install_rpath : rootlibexecdir,
2288 install : true,
2289 install_dir : rootlibexecdir)
2290
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002291executable('systemd-makefs',
2292 'src/partition/makefs.c',
2293 include_directories : includes,
2294 link_with : [libshared],
2295 install_rpath : rootlibexecdir,
2296 install : true,
2297 install_dir : rootlibexecdir)
2298
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002299executable('systemd-sleep',
2300 'src/sleep/sleep.c',
2301 include_directories : includes,
2302 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002303 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304 install : true,
2305 install_dir : rootlibexecdir)
2306
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307exe = executable('systemd-sysctl',
2308 'src/sysctl/sysctl.c',
2309 include_directories : includes,
2310 link_with : [libshared],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002314public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315
2316executable('systemd-ac-power',
2317 'src/ac-power/ac-power.c',
2318 include_directories : includes,
2319 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002320 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321 install : true,
2322 install_dir : rootlibexecdir)
2323
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002324exe = executable('systemd-detect-virt',
2325 'src/detect-virt/detect-virt.c',
2326 include_directories : includes,
2327 link_with : [libshared],
2328 install_rpath : rootlibexecdir,
2329 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002330public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332exe = executable('systemd-delta',
2333 'src/delta/delta.c',
2334 include_directories : includes,
2335 link_with : [libshared],
2336 install_rpath : rootlibexecdir,
2337 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002338public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002339
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340exe = executable('systemd-escape',
2341 'src/escape/escape.c',
2342 include_directories : includes,
2343 link_with : [libshared],
2344 install_rpath : rootlibexecdir,
2345 install : true,
2346 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002347public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-notify',
2350 'src/notify/notify.c',
2351 include_directories : includes,
2352 link_with : [libshared],
2353 install_rpath : rootlibexecdir,
2354 install : true,
2355 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002356public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
2358executable('systemd-volatile-root',
2359 'src/volatile-root/volatile-root.c',
2360 include_directories : includes,
2361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
2366executable('systemd-cgroups-agent',
2367 'src/cgroups-agent/cgroups-agent.c',
2368 include_directories : includes,
2369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002370 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371 install : true,
2372 install_dir : rootlibexecdir)
2373
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002374exe = executable('systemd-id128',
2375 'src/id128/id128.c',
2376 include_directories : includes,
2377 link_with : [libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true)
2380public_programs += exe
2381
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002382exe = executable('systemd-path',
2383 'src/path/path.c',
2384 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002385 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386 install_rpath : rootlibexecdir,
2387 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002388public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002389
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390exe = executable('systemd-ask-password',
2391 'src/ask-password/ask-password.c',
2392 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002393 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394 install_rpath : rootlibexecdir,
2395 install : true,
2396 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002397public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398
2399executable('systemd-reply-password',
2400 'src/reply-password/reply-password.c',
2401 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002403 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404 install : true,
2405 install_dir : rootlibexecdir)
2406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('systemd-tty-ask-password-agent',
2408 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2409 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002410 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411 install_rpath : rootlibexecdir,
2412 install : true,
2413 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002414public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002416exe = executable('systemd-cgls',
2417 'src/cgls/cgls.c',
2418 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002420 install_rpath : rootlibexecdir,
2421 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002422public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-cgtop',
2425 'src/cgtop/cgtop.c',
2426 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002427 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428 install_rpath : rootlibexecdir,
2429 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
2432executable('systemd-initctl',
2433 'src/initctl/initctl.c',
2434 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002435 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002436 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437 install : true,
2438 install_dir : rootlibexecdir)
2439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002440exe = executable('systemd-mount',
2441 'src/mount/mount-tool.c',
2442 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002443 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002444 install_rpath : rootlibexecdir,
2445 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002446public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002447
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002448meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002449 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002450
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002451exe = executable('systemd-run',
2452 'src/run/run.c',
2453 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002454 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002455 install_rpath : rootlibexecdir,
2456 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002457public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002459exe = executable('systemd-stdio-bridge',
2460 'src/stdio-bridge/stdio-bridge.c',
2461 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002462 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002463 install_rpath : rootlibexecdir,
2464 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002465public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467exe = executable('busctl',
2468 'src/busctl/busctl.c',
2469 'src/busctl/busctl-introspect.c',
2470 'src/busctl/busctl-introspect.h',
2471 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002473 install_rpath : rootlibexecdir,
2474 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002477if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002478 exe = executable('systemd-sysusers',
2479 'src/sysusers/sysusers.c',
2480 include_directories : includes,
2481 link_with : [libshared],
2482 install_rpath : rootlibexecdir,
2483 install : true,
2484 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002485 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486endif
2487
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002488if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002489 exe = executable('systemd-tmpfiles',
2490 'src/tmpfiles/tmpfiles.c',
2491 include_directories : includes,
2492 link_with : [libshared],
2493 dependencies : [libacl],
2494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002497 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002498
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002499 if want_tests != 'false'
2500 test('test-systemd-tmpfiles',
2501 test_systemd_tmpfiles_py,
2502 # https://github.com/mesonbuild/meson/issues/2681
2503 args : exe.full_path())
2504 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002505endif
2506
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002507if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 exe = executable('systemd-hwdb',
2509 'src/hwdb/hwdb.c',
2510 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2511 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002512 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002513 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002514 install : true,
2515 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002516 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517endif
2518
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002519if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002520 executable('systemd-quotacheck',
2521 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002522 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002523 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524 install_rpath : rootlibexecdir,
2525 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002526 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527endif
2528
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002529exe = executable('systemd-socket-proxyd',
2530 'src/socket-proxy/socket-proxyd.c',
2531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002532 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533 dependencies : [threads],
2534 install_rpath : rootlibexecdir,
2535 install : true,
2536 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002537public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002538
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539exe = executable('systemd-udevd',
2540 systemd_udevd_sources,
2541 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002542 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002545 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002546 dependencies : [threads,
2547 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002549 libacl,
2550 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002551 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552 install : true,
2553 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002554public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002555
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556exe = executable('udevadm',
2557 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002558 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002559 include_directories : includes,
2560 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002561 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002562 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002563 dependencies : [threads,
2564 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002566 libacl,
2567 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002568 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 install : true,
2570 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572
2573executable('systemd-shutdown',
2574 systemd_shutdown_sources,
2575 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002577 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002578 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002579 install : true,
2580 install_dir : rootlibexecdir)
2581
2582executable('systemd-update-done',
2583 'src/update-done/update-done.c',
2584 include_directories : includes,
2585 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002586 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587 install : true,
2588 install_dir : rootlibexecdir)
2589
2590executable('systemd-update-utmp',
2591 'src/update-utmp/update-utmp.c',
2592 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002593 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002594 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002595 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596 install : true,
2597 install_dir : rootlibexecdir)
2598
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002599if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600 executable('systemd-modules-load',
2601 'src/modules-load/modules-load.c',
2602 include_directories : includes,
2603 link_with : [libshared],
2604 dependencies : [libkmod],
2605 install_rpath : rootlibexecdir,
2606 install : true,
2607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002608
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002609 meson.add_install_script('sh', '-c',
2610 mkdir_p.format(modulesloaddir))
2611 meson.add_install_script('sh', '-c',
2612 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002613endif
2614
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615exe = executable('systemd-nspawn',
2616 systemd_nspawn_sources,
2617 'src/core/mount-setup.c', # FIXME: use a variable?
2618 'src/core/mount-setup.h',
2619 'src/core/loopback-setup.c',
2620 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002621 include_directories : includes,
2622 link_with : [libnspawn_core,
2623 libshared],
2624 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625 install_rpath : rootlibexecdir,
2626 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002627public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002629if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002630 executable('systemd-networkd',
2631 systemd_networkd_sources,
2632 include_directories : includes,
2633 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002634 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002635 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002636 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002637 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002638 install_rpath : rootlibexecdir,
2639 install : true,
2640 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002642 executable('systemd-networkd-wait-online',
2643 systemd_networkd_wait_online_sources,
2644 include_directories : includes,
2645 link_with : [libnetworkd_core,
2646 libshared],
2647 install_rpath : rootlibexecdir,
2648 install : true,
2649 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002651 exe = executable('networkctl',
2652 networkctl_sources,
2653 include_directories : includes,
2654 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002655 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002656 install_rpath : rootlibexecdir,
2657 install : true,
2658 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002659 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002660endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002661
2662executable('systemd-sulogin-shell',
2663 ['src/sulogin-shell/sulogin-shell.c'],
2664 include_directories : includes,
2665 link_with : [libshared],
2666 install_rpath : rootlibexecdir,
2667 install : true,
2668 install_dir : rootlibexecdir)
2669
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002670############################################################
2671
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002672custom_target(
2673 'systemd-runtest.env',
2674 output : 'systemd-runtest.env',
2675 command : ['sh', '-c', '{ ' +
2676 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002677 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002678 '} >@OUTPUT@'],
2679 build_by_default : true)
2680
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002681foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002682 sources = tuple[0]
2683 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2684 dependencies = tuple[2]
2685 condition = tuple.length() >= 4 ? tuple[3] : ''
2686 type = tuple.length() >= 5 ? tuple[4] : ''
2687 defs = tuple.length() >= 6 ? tuple[5] : []
2688 incs = tuple.length() >= 7 ? tuple[6] : includes
2689 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002690
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002691 name = sources[0].split('/')[-1].split('.')[0]
2692 if type.startswith('timeout=')
2693 timeout = type.split('=')[1].to_int()
2694 type = ''
2695 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002696
2697 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002698 exe = executable(
2699 name,
2700 sources,
2701 include_directories : incs,
2702 link_with : link_with,
2703 dependencies : dependencies,
2704 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002705 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002706 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002707 install : install_tests,
2708 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002709
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 if type == 'manual'
2711 message('@0@ is a manual test'.format(name))
2712 elif type == 'unsafe' and want_tests != 'unsafe'
2713 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002714 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 test(name, exe,
2716 env : test_env,
2717 timeout : timeout)
2718 endif
2719 else
2720 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2721 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002722endforeach
2723
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002724exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 'test-libsystemd-sym',
2726 test_libsystemd_sym_c,
2727 include_directories : includes,
2728 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002729 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002730 install : install_tests,
2731 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002732if want_tests != 'false'
2733 test('test-libsystemd-sym', exe)
2734endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002735
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002736exe = executable(
2737 'test-libsystemd-static-sym',
2738 test_libsystemd_sym_c,
2739 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002740 link_with : [install_libsystemd_static],
2741 dependencies : [threads], # threads is already included in dependencies on the library,
2742 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002743 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002744 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002745 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002746if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002747 test('test-libsystemd-static-sym', exe)
2748endif
2749
2750exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002751 'test-libudev-sym',
2752 test_libudev_sym_c,
2753 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002754 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002755 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002756 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002757 install : install_tests,
2758 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002759if want_tests != 'false'
2760 test('test-libudev-sym', exe)
2761endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002762
2763exe = executable(
2764 'test-libudev-static-sym',
2765 test_libudev_sym_c,
2766 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002767 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002768 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002769 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002770 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002771 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002772if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002773 test('test-libudev-static-sym', exe)
2774endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002775
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002776############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002777
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002778fuzzer_exes = []
2779
Michael Olbrich59967402018-11-11 11:27:35 +01002780if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002781foreach tuple : fuzzers
2782 sources = tuple[0]
2783 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2784 dependencies = tuple[2]
2785 defs = tuple.length() >= 4 ? tuple[3] : []
2786 incs = tuple.length() >= 5 ? tuple[4] : includes
2787
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002788 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002789 dependencies += fuzzing_engine
2790 else
2791 sources += 'src/fuzz/fuzz-main.c'
2792 endif
2793
2794 name = sources[0].split('/')[-1].split('.')[0]
2795
2796 fuzzer_exes += executable(
2797 name,
2798 sources,
2799 include_directories : [incs, include_directories('src/fuzz')],
2800 link_with : link_with,
2801 dependencies : dependencies,
2802 c_args : defs,
2803 install : false)
2804endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002805endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002806
2807run_target('fuzzers',
2808 depends : fuzzer_exes,
2809 command : ['true'])
2810
2811############################################################
2812
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002813make_directive_index_py = find_program('tools/make-directive-index.py')
2814make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002815xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002816hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002817
2818subdir('units')
2819subdir('sysctl.d')
2820subdir('sysusers.d')
2821subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002822subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002823subdir('hwdb')
2824subdir('network')
2825subdir('man')
2826subdir('shell-completion/bash')
2827subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002828subdir('docs/sysvinit')
2829subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002831install_subdir('factory/etc',
2832 install_dir : factorydir)
2833
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834install_data('xorg/50-systemd-user.sh',
2835 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002836install_data('modprobe.d/systemd.conf',
2837 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002838install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002839 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002840 'NEWS',
2841 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302842 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002843 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002844 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302845 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002846 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002847 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002848 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002849 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2850 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002851
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002852meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2853meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2854
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002855############################################################
2856
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002857meson_check_help = find_program('tools/meson-check-help.sh')
2858
2859foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002860 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002861 if want_tests != 'false'
2862 test('check-help-' + name,
2863 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002864 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002865 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002866endforeach
2867
2868############################################################
2869
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002870# Enable tests for all supported sanitizers
2871foreach tuple : sanitizers
2872 sanitizer = tuple[0]
2873 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002874
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002875 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002876 prev = ''
2877 foreach p : fuzz_regression_tests
2878 b = p.split('/')[-2]
2879 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002880
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002881 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002882
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002883 if name != prev
2884 if want_tests == 'false'
2885 message('Not compiling @0@ because tests is set to false'.format(name))
2886 elif slow_tests
2887 exe = custom_target(
2888 name,
2889 output : name,
2890 depends : build,
2891 command : [env, 'ln', '-fs',
2892 join_paths(build.full_path(), b),
2893 '@OUTPUT@'],
2894 build_by_default : true)
2895 else
2896 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2897 endif
2898 endif
2899 prev = name
2900
2901 if want_tests != 'false' and slow_tests
2902 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2903 env,
2904 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002905 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002906 endif
2907 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002908 endif
2909endforeach
2910
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002911
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002912############################################################
2913
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002914if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002915 all_files = run_command(
2916 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002917 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002918 'ls-files',
2919 ':/*.[ch]'])
2920 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002921
userwithuide85a6902017-08-09 13:41:44 +00002922 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002923 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002924 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002925 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002926 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002927 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002928 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002929endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002930
2931if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002932 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002933 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002934 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002935 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002936endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002937
2938if git.found()
2939 git_head = run_command(
2940 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002941 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002942 'rev-parse', 'HEAD']).stdout().strip()
2943 git_head_short = 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', '--short=7', 'HEAD']).stdout().strip()
2947
2948 run_target(
2949 'git-snapshot',
2950 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002951 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002952 git_head_short),
2953 '--prefix', 'systemd-@0@/'.format(git_head),
2954 'HEAD'])
2955endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002956
2957############################################################
2958
Lennart Poettering51b13862017-12-20 12:51:14 +01002959meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2960run_target(
2961 'check-api-docs',
2962 depends : [man, libsystemd, libudev],
2963 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2964
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002965run_target(
2966 'make-index-md',
2967 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2968
Lennart Poettering51b13862017-12-20 12:51:14 +01002969############################################################
2970
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002971status = [
2972 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2973
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002974 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002975 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002976 'prefix directory: @0@'.format(prefixdir),
2977 'rootprefix directory: @0@'.format(rootprefixdir),
2978 'sysconf directory: @0@'.format(sysconfdir),
2979 'include directory: @0@'.format(includedir),
2980 'lib directory: @0@'.format(libdir),
2981 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002982 'SysV init scripts: @0@'.format(sysvinit_path),
2983 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002984 'PAM modules directory: @0@'.format(pamlibdir),
2985 'PAM configuration directory: @0@'.format(pamconfdir),
2986 'RPM macros directory: @0@'.format(rpmmacrosdir),
2987 'modprobe.d directory: @0@'.format(modprobedir),
2988 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2989 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2990 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2991 'bash completions directory: @0@'.format(bashcompletiondir),
2992 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002993 'extra start script: @0@'.format(get_option('rc-local')),
2994 'extra stop script: @0@'.format(get_option('halt-local')),
2995 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2996 get_option('debug-tty')),
2997 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09002998 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 'maximum system UID: @0@'.format(system_uid_max),
3000 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003001 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3002 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3003 'minimum container UID base: @0@'.format(container_uid_base_min),
3004 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003005 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003006 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003007 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003008 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003009 'nobody user name: @0@'.format(nobody_user),
3010 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003011 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003012 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003013
3014 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003015 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003016 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3017 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3018
3019alt_dns_servers = '\n '.join(dns_servers.split(' '))
3020alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3021status += [
3022 'default DNS servers: @0@'.format(alt_dns_servers),
3023 'default NTP servers: @0@'.format(alt_ntp_servers)]
3024
3025alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3026 '@@0@'.format(time_epoch)).stdout().strip()
3027status += [
3028 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3029
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003030status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003031 'static libsystemd: @0@'.format(static_libsystemd),
3032 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003033
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003034# TODO:
3035# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3036# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3037# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003039if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003040 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003041
3042 if have_gnu_efi
3043 status += [
3044 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3045 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003046 'EFI lib directory: @0@'.format(efi_libdir),
3047 'EFI lds directory: @0@'.format(efi_ldsdir),
3048 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003049 endif
3050endif
3051
3052found = []
3053missing = []
3054
3055foreach tuple : [
3056 ['libcryptsetup'],
3057 ['PAM'],
3058 ['AUDIT'],
3059 ['IMA'],
3060 ['AppArmor'],
3061 ['SELinux'],
3062 ['SECCOMP'],
3063 ['SMACK'],
3064 ['zlib'],
3065 ['xz'],
3066 ['lz4'],
3067 ['bzip2'],
3068 ['ACL'],
3069 ['gcrypt'],
3070 ['qrencode'],
3071 ['microhttpd'],
3072 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003073 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003075 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003076 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003077 ['libidn'],
3078 ['libiptc'],
3079 ['elfutils'],
3080 ['binfmt'],
3081 ['vconsole'],
3082 ['quotacheck'],
3083 ['tmpfiles'],
3084 ['environment.d'],
3085 ['sysusers'],
3086 ['firstboot'],
3087 ['randomseed'],
3088 ['backlight'],
3089 ['rfkill'],
3090 ['logind'],
3091 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003092 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 ['importd'],
3094 ['hostnamed'],
3095 ['timedated'],
3096 ['timesyncd'],
3097 ['localed'],
3098 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003099 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003100 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3101 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102 ['coredump'],
3103 ['polkit'],
3104 ['legacy pkla', install_polkit_pkla],
3105 ['efi'],
3106 ['gnu-efi', have_gnu_efi],
3107 ['kmod'],
3108 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003109 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110 ['blkid'],
3111 ['dbus'],
3112 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003113 ['nss-myhostname'],
3114 ['nss-mymachines'],
3115 ['nss-resolve'],
3116 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 ['hwdb'],
3118 ['tpm'],
3119 ['man pages', want_man],
3120 ['html pages', want_html],
3121 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122 ['SysV compat'],
3123 ['utmp'],
3124 ['ldconfig'],
3125 ['hibernate'],
3126 ['adm group', get_option('adm-group')],
3127 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003128 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129 ['debug hashmap'],
3130 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003131 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003132 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003133 ['link-udev-shared', get_option('link-udev-shared')],
3134 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003135]
3136
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003137 if tuple.length() >= 2
3138 cond = tuple[1]
3139 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003140 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3141 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003142 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003143 endif
3144 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003145 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003146 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003147 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003148 endif
3149endforeach
3150
3151status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003152 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003154 '',
3155 'disabled features: @0@'.format(', '.join(missing)),
3156 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003157message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003158
3159if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003160 warning('\n' +
3161 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3162 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3163 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003164endif