blob: 9ca3b72e4d50003bf3377ed7b52687d57db4e7ba [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 Poettering67bee562018-12-21 14:58:49 +01004 version : '240',
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 Poettering67bee562018-12-21 14:58:49 +010015libsystemd_version = '0.24.0'
16libudev_version = '1.6.12'
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'))
Lennart Poettering09dad042018-11-15 09:50:42 +010078conf.set('HIGH_RLIMIT_NOFILE', 512*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'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200230conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
232conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
233conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
234conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200235conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100236conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('exec_prefix', prefixdir)
240substs.set('libdir', libdir)
241substs.set('rootlibdir', rootlibdir)
242substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('bindir', bindir)
245substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400246substs.set('rootlibexecdir', rootlibexecdir)
247substs.set('systemunitdir', systemunitdir)
248substs.set('userunitdir', userunitdir)
249substs.set('systempresetdir', systempresetdir)
250substs.set('userpresetdir', userpresetdir)
251substs.set('udevhwdbdir', udevhwdbdir)
252substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200254substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('catalogdir', catalogdir)
256substs.set('tmpfilesdir', tmpfilesdir)
257substs.set('sysusersdir', sysusersdir)
258substs.set('sysctldir', sysctldir)
259substs.set('binfmtdir', binfmtdir)
260substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('systemgeneratordir', systemgeneratordir)
263substs.set('usergeneratordir', usergeneratordir)
264substs.set('systemenvgeneratordir', systemenvgeneratordir)
265substs.set('userenvgeneratordir', userenvgeneratordir)
266substs.set('systemshutdowndir', systemshutdowndir)
267substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400268substs.set('VARLOGDIR', varlogdir)
269substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400270substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
271substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400272substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
273substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
274substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
275substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100276substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200277substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278
279#####################################################################
280
281cc = meson.get_compiler('c')
282pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400283check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100284meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200286want_tests = get_option('tests')
287slow_tests = want_tests != 'false' and get_option('slow-tests')
288install_tests = get_option('install-tests')
289
James Hilliard46e63a22018-12-27 09:16:20 +0800290if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200291 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200292 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200293else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200294 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400295endif
296
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500297if want_libfuzzer
298 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200299elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500300 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
301endif
302
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900303possible_cc_flags = [
304 '-Wextra',
305 '-Werror=undef',
306 '-Wlogical-op',
307 '-Wmissing-include-dirs',
308 '-Wold-style-definition',
309 '-Wpointer-arith',
310 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900311 '-Wfloat-equal',
312 '-Wsuggest-attribute=noreturn',
313 '-Werror=missing-prototypes',
314 '-Werror=implicit-function-declaration',
315 '-Werror=missing-declarations',
316 '-Werror=return-type',
317 '-Werror=incompatible-pointer-types',
318 '-Werror=format=2',
319 '-Wstrict-prototypes',
320 '-Wredundant-decls',
321 '-Wmissing-noreturn',
322 '-Wimplicit-fallthrough=5',
323 '-Wshadow',
324 '-Wendif-labels',
325 '-Wstrict-aliasing=2',
326 '-Wwrite-strings',
327 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200328 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200329 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900330 '-Wdate-time',
331 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700332
333 # negative arguments are correctly detected starting with meson 0.46.
334 '-Wno-unused-parameter',
335 '-Wno-missing-field-initializers',
336 '-Wno-unused-result',
337 '-Wno-format-signedness',
338
339 # work-around for gcc 7.1 turning this on on its own.
340 '-Wno-error=nonnull',
341
342 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
343 # optimizations enabled, producing essentially false positives.
344 '-Wno-maybe-uninitialized',
345
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346 '-ffast-math',
347 '-fno-common',
348 '-fdiagnostics-show-option',
349 '-fno-strict-aliasing',
350 '-fvisibility=hidden',
351 '-fstack-protector',
352 '-fstack-protector-strong',
353 '--param=ssp-buffer-size=4',
354]
355
356# --as-needed and --no-undefined are provided by meson by default,
357# run mesonconf to see what is enabled
358possible_link_flags = [
359 '-Wl,-z,relro',
360 '-Wl,-z,now',
361]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400362
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500363# the oss-fuzz fuzzers are not built with -fPIE, so don't
364# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500365if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900366 possible_cc_flags += '-fPIE'
367 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500368endif
369
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900370if cc.get_id() == 'clang'
371 possible_cc_flags += [
372 '-Wno-typedef-redefinition',
373 '-Wno-gnu-variable-sized-type-not-at-end',
374 ]
375endif
376
377if get_option('buildtype') != 'debug'
378 possible_cc_flags += [
379 '-ffunction-sections',
380 '-fdata-sections',
381 ]
382
383 possible_link_flags += '-Wl,--gc-sections'
384endif
385
386add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900387add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900388
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800389if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390 #include <time.h>
391 #include <inttypes.h>
392 typedef uint64_t usec_t;
393 usec_t now(clockid_t clock);
394 int main(void) {
395 struct timespec now;
396 return 0;
397 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100398''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400399 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endif
401
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200402cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400403
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404#####################################################################
405# compilation result tests
406
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400407conf.set('_GNU_SOURCE', true)
408conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400409
410conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
416conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
417
418decl_headers = '''
419#include <uchar.h>
420#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000421#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100422#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424
425foreach decl : ['char16_t',
426 'char32_t',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000427 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530428 'struct fib_rule_port_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100429 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400430 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400431
432 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200433 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
434
435 if decl == 'struct statx'
436 if have
437 want_linux_stat_h = false
438 else
439 have = cc.sizeof(decl,
440 prefix : decl_headers + '#include <linux/stat.h>',
441 args : '-D_GNU_SOURCE') > 0
442 want_linux_stat_h = have
443 endif
444 endif
445
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200446 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447endforeach
448
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200449conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700450
Yu Watanabe9714c022018-12-02 16:27:02 +0100451foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900452 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
453 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
454 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
455 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
456 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100457 ['FRA_TUN_ID', 'linux/fib_rules.h'],
458 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100459 ['FRA_PAD', 'linux/fib_rules.h'],
460 ['FRA_L3MDEV', 'linux/fib_rules.h'],
461 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
462 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
463 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
464 ['FOU_CMD_GET', 'linux/fou.h'],
465 ['IFA_FLAGS', 'linux/if_addr.h'],
466 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
467 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
468 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
469 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
470 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
471 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
472 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
473 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
474 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
475 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
476 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
477 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
478 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
479 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
480 ['IFLA_PAD', 'linux/if_link.h'],
481 ['IFLA_XDP', 'linux/if_link.h'],
482 ['IFLA_EVENT', 'linux/if_link.h'],
483 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
484 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
485 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
486 ['IFLA_MAX_MTU', 'linux/if_link.h'],
487 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
488 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
489 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
490 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
491 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
492 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
493 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
494 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
495 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
496 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
497 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
498 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
499 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
500 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
501 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
502 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
503 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
504 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
505 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
506 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
507 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
508 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
509 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
510 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
511 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
512 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
513 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
514 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
515 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
516 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
517 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
518 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
519 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
520 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
521 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
522 # if_tunnel.h is buggy and cannot be included on its own
523 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
524 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
527 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
528 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
529 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
530 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
531 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
532 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
533 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400535 prefix = decl.length() > 2 ? decl[2] : ''
536 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200537 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538endforeach
539
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200541 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542endforeach
543
544foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100545 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100546 ['gettid', '''#include <sys/types.h>
547 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100548 ['pivot_root', '''#include <stdlib.h>
549 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100550 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400551 #include <sys/stat.h>
552 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100553 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100554 ['renameat2', '''#include <stdio.h>
555 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400556 ['kcmp', '''#include <linux/kcmp.h>'''],
557 ['keyctl', '''#include <sys/types.h>
558 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100559 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200561 ['bpf', '''#include <sys/syscall.h>
562 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100563 ['statx', '''#include <sys/types.h>
564 #include <sys/stat.h>
565 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100566 ['explicit_bzero' , '''#include <string.h>'''],
567 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400568]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569
Lennart Poettering85db59b2017-12-25 12:01:14 +0100570 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200571 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400572endforeach
573
Lennart Poettering85db59b2017-12-25 12:01:14 +0100574if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200575 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200576 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400577else
578 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200579 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200580 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400581endif
582
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583#####################################################################
584
585sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400587m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400589git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100590env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100591perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400593meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400594mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400595test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
596splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400597
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
599# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500600progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602 ['kmod', '/usr/bin/kmod' ],
603 ['kexec', '/usr/sbin/kexec' ],
604 ['sulogin', '/usr/sbin/sulogin' ],
605 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
606 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
607 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
608 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
609 ]
610foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400611 path = get_option(prog[0] + '-path')
612 if path != ''
613 message('Using @1@ for @0@'.format(prog[0], path))
614 else
615 exe = find_program(prog[0],
616 '/usr/sbin/' + prog[0],
617 '/sbin/' + prog[0],
618 required: false)
619 path = exe.found() ? exe.path() : prog[1]
620 endif
621 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
622 conf.set_quoted(name, path)
623 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endforeach
625
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500626conf.set_quoted('TELINIT', get_option('telinit-path'))
627
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400628if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100629 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400630endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631
632############################################################
633
634gperf = find_program('gperf')
635
636gperf_test_format = '''
637#include <string.h>
638const char * in_word_set(const char *, @0@);
639@1@
640'''
641gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
642gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
643gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
644if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400645 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
648 if cc.compiles(gperf_test)
649 gperf_len_type = 'unsigned'
650 else
651 error('unable to determine gperf len type')
652 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653endif
654message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655conf.set('GPERF_LEN_TYPE', gperf_len_type,
656 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657
658############################################################
659
660if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100663foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100664 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900665 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666 'linux/memfd.h',
667 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100668 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200669 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670 'valgrind/memcheck.h',
671 'valgrind/valgrind.h',
672 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200674 conf.set10('HAVE_' + header.underscorify().to_upper(),
675 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endforeach
677
678############################################################
679
680conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400681conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
682gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683
684default_hierarchy = get_option('default-hierarchy')
685conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
686 description : 'default cgroup hierarchy as string')
687if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400688 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693endif
694
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100695default_net_naming_scheme = get_option('default-net-naming-scheme')
696conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
697
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900699if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400700 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900701 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703conf.set('TIME_EPOCH', time_epoch)
704
705system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900706if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400707 system_uid_max = run_command(
708 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800709 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
710 '/etc/login.defs').stdout().strip()
711 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900712 system_uid_max = 999
713 else
714 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800715 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400716endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717conf.set('SYSTEM_UID_MAX', system_uid_max)
718substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400719
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900721if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400722 system_gid_max = run_command(
723 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800724 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
725 '/etc/login.defs').stdout().strip()
726 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900727 system_gid_max = 999
728 else
729 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800730 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400731endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732conf.set('SYSTEM_GID_MAX', system_gid_max)
733substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734
Yu Watanabeac093402018-05-10 16:04:16 +0900735dynamic_uid_min = get_option('dynamic-uid-min')
736dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100737conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
738conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
739substs.set('dynamicuidmin', dynamic_uid_min)
740substs.set('dynamicuidmax', dynamic_uid_max)
741
Yu Watanabeac093402018-05-10 16:04:16 +0900742container_uid_base_min = get_option('container-uid-base-min')
743container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100744conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
745conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
746substs.set('containeruidbasemin', container_uid_base_min)
747substs.set('containeruidbasemax', container_uid_base_max)
748
Lennart Poetteringafde4572017-12-05 11:00:24 +0100749nobody_user = get_option('nobody-user')
750nobody_group = get_option('nobody-group')
751
Chen Qi2484bff2018-07-23 14:53:09 +0800752if not meson.is_cross_build()
753 getent_result = run_command('getent', 'passwd', '65534')
754 if getent_result.returncode() == 0
755 name = getent_result.stdout().split(':')[0]
756 if name != nobody_user
757 warning('\n' +
758 '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) +
759 'Your build will result in an user table setup that is incompatible with the local system.')
760 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100761 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800762 id_result = run_command('id', '-u', nobody_user)
763 if id_result.returncode() == 0
764 id = id_result.stdout().to_int()
765 if id != 65534
766 warning('\n' +
767 '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) +
768 'Your build will result in an user table setup that is incompatible with the local system.')
769 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100771
Chen Qi2484bff2018-07-23 14:53:09 +0800772 getent_result = run_command('getent', 'group', '65534')
773 if getent_result.returncode() == 0
774 name = getent_result.stdout().split(':')[0]
775 if name != nobody_group
776 warning('\n' +
777 '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) +
778 'Your build will result in an group table setup that is incompatible with the local system.')
779 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100780 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800781 id_result = run_command('id', '-g', nobody_group)
782 if id_result.returncode() == 0
783 id = id_result.stdout().to_int()
784 if id != 65534
785 warning('\n' +
786 '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) +
787 'Your build will result in an group table setup that is incompatible with the local system.')
788 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100789 endif
790endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900791if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900792 warning('\n' +
793 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
794 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900795endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100796
797conf.set_quoted('NOBODY_USER_NAME', nobody_user)
798conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900799substs.set('NOBODY_USER_NAME', nobody_user)
800substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100801
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802tty_gid = get_option('tty-gid')
803conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400804substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Ikey Doherty84786b82017-12-03 12:28:23 +0000806# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900807users_gid = get_option('users-gid')
808substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000809
Yu Watanabe348b4432018-05-07 18:17:35 +0900810conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
811conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812
Michael Bieblace5e312018-07-13 23:36:13 +0200813dev_kvm_mode = get_option('dev-kvm-mode')
814substs.set('DEV_KVM_MODE', dev_kvm_mode)
815conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700816substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400818kill_user_processes = get_option('default-kill-user-processes')
819conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100820conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400821substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400823dns_servers = get_option('dns-servers')
824conf.set_quoted('DNS_SERVERS', dns_servers)
825substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400827ntp_servers = get_option('ntp-servers')
828conf.set_quoted('NTP_SERVERS', ntp_servers)
829substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
Dave Reisner8ca9e922018-12-28 07:38:36 -0500831default_locale = get_option('default-locale')
832conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
833
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
835
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400836substs.set('SUSHELL', get_option('debug-shell'))
837substs.set('DEBUGTTY', get_option('debug-tty'))
838
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839enable_debug_hashmap = false
840enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900841enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900842enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200843foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900844 if name == 'hashmap'
845 enable_debug_hashmap = true
846 elif name == 'mmap-cache'
847 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900848 elif name == 'siphash'
849 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900850 elif name == 'udev'
851 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900852 else
853 message('unknown debug option "@0@", ignoring'.format(name))
854 endif
855endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
857conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900858conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900859conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400860
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200861conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200862conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200863
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864#####################################################################
865
866threads = dependency('threads')
867librt = cc.find_library('rt')
868libm = cc.find_library('m')
869libdl = cc.find_library('dl')
870libcrypt = cc.find_library('crypt')
871
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400872libcap = dependency('libcap', required : false)
873if not libcap.found()
874 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
875 libcap = cc.find_library('cap')
876endif
877
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100879 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880
881want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400884 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892
893want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500894if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libselinux = dependency('libselinux',
896 version : '>= 2.1.9',
897 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libapparmor = dependency('libapparmor',
908 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400912 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916smack_run_label = get_option('smack-run-label')
917if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400918 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919endif
920
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400921want_polkit = get_option('polkit')
922install_polkit = false
923install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500924if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400926
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libpolkit = dependency('polkit-gobject-1',
928 required : false)
929 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
930 message('Old polkit detected, will install pkla files')
931 install_polkit_pkla = true
932 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400933endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400935
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400936want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400938 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400940else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400942 libacl = []
943endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400945
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500947if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955
956want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500957if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965
966want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500967if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libkmod = dependency('libkmod',
969 version : '>= 15',
970 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libpam = cc.find_library('pam', required : want_pam == 'true')
981 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libpam = []
986 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libmicrohttpd = dependency('libmicrohttpd',
993 version : '>= 0.9.33',
994 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libcryptsetup = dependency('libcryptsetup',
1005 version : '>= 1.6.0',
1006 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001008 have_sector = cc.has_member(
1009 'struct crypt_params_plain',
1010 'sector_size',
1011 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001014 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001018conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019
1020want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001021if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libcurl = dependency('libcurl',
1023 version : '>= 7.32.0',
1024 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001033want_libidn2 = get_option('libidn2')
1034if want_libidn == 'true' and want_libidn2 == 'true'
1035 error('libidn and libidn2 cannot be requested simultaneously')
1036endif
1037
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001038if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libidn = dependency('libidn',
1040 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001042else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001044 libidn = []
1045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001047if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001048 # libidn is used for both libidn and libidn2 objects
1049 libidn = dependency('libidn2',
1050 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = libidn.found()
1052else
1053 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
1057want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001058if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libiptc = dependency('libiptc',
1060 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
1068want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001069if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libqrencode = dependency('libqrencode',
1071 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001075 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001080if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001081 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1082 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001084else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = false
1086endif
1087if not have
1088 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089 libgcrypt = []
1090 libgpg_error = []
1091endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001094want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001095if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libgnutls = dependency('gnutls',
1097 version : '>= 3.1.4',
1098 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001099 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001102 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001105
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001106want_openssl = get_option('openssl')
1107if want_openssl != 'false' and not fuzzer_build
1108 libopenssl = dependency('openssl',
1109 version : '>= 1.1.0',
1110 required : want_openssl == 'true')
1111 have = libopenssl.found()
1112else
1113 have = false
1114 libopenssl = []
1115endif
1116conf.set10('HAVE_OPENSSL', have)
1117
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001119if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libdw = dependency('libdw',
1121 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001125 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128
1129want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001130if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001131 libz = dependency('zlib',
1132 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001133 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001136 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139
1140want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001141if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 libbzip2 = cc.find_library('bz2',
1143 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001147 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150
1151want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001152if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 libxz = dependency('liblzma',
1154 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001158 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161
1162want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001163if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001164 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001165 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001174want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001175if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001176 libxkbcommon = dependency('xkbcommon',
1177 version : '>= 0.3.0',
1178 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001182 libxkbcommon = []
1183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001185
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001186want_pcre2 = get_option('pcre2')
1187if want_pcre2 != 'false'
1188 libpcre2 = dependency('libpcre2-8',
1189 required : want_pcre2 == 'true')
1190 have = libpcre2.found()
1191else
1192 have = false
1193 libpcre2 = []
1194endif
1195conf.set10('HAVE_PCRE2', have)
1196
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001197want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001198if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001199 libglib = dependency('glib-2.0',
1200 version : '>= 2.22.0',
1201 required : want_glib == 'true')
1202 libgobject = dependency('gobject-2.0',
1203 version : '>= 2.22.0',
1204 required : want_glib == 'true')
1205 libgio = dependency('gio-2.0',
1206 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001207 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001208else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001209 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001210 libglib = []
1211 libgobject = []
1212 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001213endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001214conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001215
1216want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001217if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 libdbus = dependency('dbus-1',
1219 version : '>= 1.3.2',
1220 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001222else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227
Yu Watanabe42303dc2017-06-18 05:22:32 +09001228default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001229if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001230 default_dnssec = 'no'
1231endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001232if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001233 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1234 default_dnssec = 'no'
1235endif
1236conf.set('DEFAULT_DNSSEC_MODE',
1237 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1238substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1239
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001240dns_over_tls = get_option('dns-over-tls')
1241if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001242 if dns_over_tls == 'openssl'
1243 have_gnutls = false
1244 else
1245 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1246 if dns_over_tls == 'gnutls' and not have_gnutls
1247 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1248 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001249 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001250 if dns_over_tls == 'gnutls' or have_gnutls
1251 have_openssl = false
1252 else
1253 have_openssl = conf.get('HAVE_OPENSSL') == 1
1254 if dns_over_tls != 'auto' and not have_openssl
1255 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1256 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1257 endif
1258 endif
1259 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001260else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001261 have = false
1262 have_gnutls = false
1263 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001264endif
1265conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001266conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1267conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001268
Iwan Timmerc9299be2018-06-13 20:26:24 +02001269default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001270if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001271 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001272endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001273if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1274 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 +02001275 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001276endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001277conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1278 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1279substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001280
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001282if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001283 have = (conf.get('HAVE_LIBCURL') == 1 and
1284 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001285 conf.get('HAVE_XZ') == 1 and
1286 conf.get('HAVE_GCRYPT') == 1)
1287 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001288 error('importd support was requested, but dependencies are not available')
1289 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001290else
1291 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294
1295want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001296if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001297 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1298 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001299 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1300 # it's possible to build one without the other. Complain only if
1301 # support was explictly requested. The auxiliary files like sysusers
1302 # config should be installed when any of the programs are built.
1303 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1304 error('remote support was requested, but dependencies are not available')
1305 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001306 have = have_deps[0] or have_deps[1]
1307else
1308 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001309endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001310conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001312foreach term : ['utmp',
1313 'hibernate',
1314 'environment-d',
1315 'binfmt',
1316 'coredump',
1317 'resolve',
1318 'logind',
1319 'hostnamed',
1320 'localed',
1321 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001322 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001323 'networkd',
1324 'timedated',
1325 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001326 'firstboot',
1327 'randomseed',
1328 'backlight',
1329 'vconsole',
1330 'quotacheck',
1331 'sysusers',
1332 'tmpfiles',
1333 'hwdb',
1334 'rfkill',
1335 'ldconfig',
1336 'efi',
1337 'tpm',
1338 'ima',
1339 'smack',
1340 'gshadow',
1341 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001342 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001343 'nss-systemd']
1344 have = get_option(term)
1345 name = 'ENABLE_' + term.underscorify().to_upper()
1346 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001347endforeach
1348
Yu Watanabe08540a92018-07-18 09:25:57 +09001349foreach tuple : [['nss-mymachines', 'machined'],
1350 ['nss-resolve', 'resolve']]
1351 want = get_option(tuple[0])
1352 if want != 'false'
1353 have = get_option(tuple[1])
1354 if want == 'true' and not have
1355 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1356 endif
1357 else
1358 have = false
1359 endif
1360 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1361 conf.set10(name, have)
1362endforeach
1363
1364enable_nss = false
1365foreach term : ['ENABLE_NSS_MYHOSTNAME',
1366 'ENABLE_NSS_MYMACHINES',
1367 'ENABLE_NSS_RESOLVE',
1368 'ENABLE_NSS_SYSTEMD']
1369 if conf.get(term) == 1
1370 enable_nss = true
1371 endif
1372endforeach
1373conf.set10('ENABLE_NSS', enable_nss)
1374
Yu Watanabe348b4432018-05-07 18:17:35 +09001375conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001376
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001377tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001378fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001379
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001380conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001381
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382#####################################################################
1383
1384if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001386
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001387 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001389 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 elif efi_arch == 'x86_64'
1391 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001392 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 elif efi_arch == 'arm'
1394 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 elif efi_arch == 'aarch64'
1397 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001398 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 else
1400 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001401 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001403
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001404 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001406
Yu Watanabeac093402018-05-10 16:04:16 +09001407 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001408else
1409 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001410endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001411conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001412
1413#####################################################################
1414
1415config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 output : 'config.h',
1417 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418
Yu Watanabe348b4432018-05-07 18:17:35 +09001419meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1420
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421includes = include_directories('src/basic',
1422 'src/shared',
1423 'src/systemd',
1424 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001425 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001426 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427 'src/resolve',
1428 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001429 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430 'src/login',
1431 'src/udev',
1432 'src/libudev',
1433 'src/core',
1434 'src/libsystemd/sd-bus',
1435 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001436 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437 'src/libsystemd/sd-hwdb',
1438 'src/libsystemd/sd-id128',
1439 'src/libsystemd/sd-netlink',
1440 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001441 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001443 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444
1445add_project_arguments('-include', 'config.h', language : 'c')
1446
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001447generate_gperfs = find_program('tools/generate-gperfs.py')
1448
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001449subdir('po')
1450subdir('catalog')
1451subdir('src/systemd')
1452subdir('src/basic')
1453subdir('src/libsystemd')
1454subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457
1458libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001459 'journal-core',
1460 libjournal_core_sources,
1461 journald_gperf_c,
1462 include_directories : includes,
1463 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001465libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001468 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001469 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 include_directories : includes,
1471 link_args : ['-shared',
1472 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001473 link_with : [libbasic,
1474 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001475 link_whole : [libsystemd_static,
1476 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001477 dependencies : [threads,
1478 librt,
1479 libxz,
1480 liblz4],
1481 link_depends : libsystemd_sym,
1482 install : true,
1483 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001484
Davide Cavalca70848ec2018-04-09 02:43:35 -07001485static_libsystemd = get_option('static-libsystemd')
1486static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1487
1488install_libsystemd_static = static_library(
1489 'systemd',
1490 libsystemd_sources,
1491 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001492 basic_sources,
1493 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001494 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001495 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001496 build_by_default : static_libsystemd != 'false',
1497 install : static_libsystemd != 'false',
1498 install_dir : rootlibdir,
1499 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1500 dependencies : [threads,
1501 librt,
1502 libxz,
1503 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001504 libcap,
1505 libblkid,
1506 libmount,
1507 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001508 libgcrypt],
1509 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1510
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511############################################################
1512
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001513# binaries that have --help and are intended for use by humans,
1514# usually, but not always, installed in /bin.
1515public_programs = []
1516
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001517subdir('src/libudev')
1518subdir('src/shared')
1519subdir('src/core')
1520subdir('src/udev')
1521subdir('src/network')
1522
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001523subdir('src/analyze')
1524subdir('src/journal-remote')
1525subdir('src/coredump')
1526subdir('src/hostname')
1527subdir('src/import')
1528subdir('src/kernel-install')
1529subdir('src/locale')
1530subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001531subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001532subdir('src/nspawn')
1533subdir('src/resolve')
1534subdir('src/timedate')
1535subdir('src/timesync')
1536subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001537subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001538
1539subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001540subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001541subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001542subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001543
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001544############################################################
1545
1546# only static linking apart from libdl, to make sure that the
1547# module is linked to all libraries that it uses.
1548test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 'test-dlopen',
1550 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001551 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 include_directories : includes,
1553 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001554 dependencies : [libdl],
1555 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001556
Yu Watanabe08540a92018-07-18 09:25:57 +09001557foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001558 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001559 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1560 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001561
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001562 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 if condition
1564 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001565
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001567 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001568
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 nss = shared_library(
1570 'nss_' + module,
1571 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001572 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 version : '2',
1574 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001575 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1576 link_args : ['-Wl,-z,nodelete',
1577 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 '-Wl,--version-script=' + version_script_arg,
1579 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001580 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 libbasic],
1582 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001583 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 link_depends : sym,
1585 install : true,
1586 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001587
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 # We cannot use shared_module because it does not support version suffix.
1589 # Unfortunately shared_library insists on creating the symlink…
1590 meson.add_install_script('sh', '-c',
1591 'rm $DESTDIR@0@/libnss_@1@.so'
1592 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001593
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001594 if want_tests != 'false'
1595 test('dlopen-nss_' + module,
1596 test_dlopen,
1597 # path to dlopen must include a slash
1598 args : nss.full_path())
1599 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001601endforeach
1602
1603############################################################
1604
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605executable('systemd',
1606 systemd_sources,
1607 include_directories : includes,
1608 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001609 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610 dependencies : [threads,
1611 librt,
1612 libseccomp,
1613 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001614 libmount,
1615 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001616 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617 install : true,
1618 install_dir : rootlibexecdir)
1619
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001620meson.add_install_script(meson_make_symlink,
1621 join_paths(rootlibexecdir, 'systemd'),
1622 join_paths(rootsbindir, 'init'))
1623
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001624exe = executable('systemd-analyze',
1625 systemd_analyze_sources,
1626 include_directories : includes,
1627 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001628 libshared],
1629 dependencies : [threads,
1630 librt,
1631 libseccomp,
1632 libselinux,
1633 libmount,
1634 libblkid],
1635 install_rpath : rootlibexecdir,
1636 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001637public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001638
1639executable('systemd-journald',
1640 systemd_journald_sources,
1641 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001642 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001643 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644 dependencies : [threads,
1645 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001646 liblz4,
1647 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001648 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001649 install : true,
1650 install_dir : rootlibexecdir)
1651
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001652exe = executable('systemd-cat',
1653 systemd_cat_sources,
1654 include_directories : includes,
1655 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001656 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001657 dependencies : [threads],
1658 install_rpath : rootlibexecdir,
1659 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001660public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001662exe = executable('journalctl',
1663 journalctl_sources,
1664 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001665 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666 dependencies : [threads,
1667 libqrencode,
1668 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001669 liblz4,
1670 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001671 install_rpath : rootlibexecdir,
1672 install : true,
1673 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001674public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675
1676executable('systemd-getty-generator',
1677 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001678 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001679 link_with : [libshared],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683
1684executable('systemd-debug-generator',
1685 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001687 link_with : [libshared],
1688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001692executable('systemd-run-generator',
1693 'src/run-generator/run-generator.c',
1694 include_directories : includes,
1695 link_with : [libshared],
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : systemgeneratordir)
1699
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700executable('systemd-fstab-generator',
1701 'src/fstab-generator/fstab-generator.c',
1702 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001704 link_with : [libshared],
1705 install_rpath : rootlibexecdir,
1706 install : true,
1707 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001709if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001710 executable('30-systemd-environment-d-generator',
1711 'src/environment-d-generator/environment-d-generator.c',
1712 include_directories : includes,
1713 link_with : [libshared],
1714 install_rpath : rootlibexecdir,
1715 install : true,
1716 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001717
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 meson.add_install_script(meson_make_symlink,
1719 join_paths(sysconfdir, 'environment'),
1720 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721endif
1722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('systemd-hibernate-resume-generator',
1725 'src/hibernate-resume/hibernate-resume-generator.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 executable('systemd-hibernate-resume',
1733 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001734 include_directories : includes,
1735 link_with : [libshared],
1736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739endif
1740
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001741if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 executable('systemd-gpt-auto-generator',
1743 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001744 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001747 dependencies : libblkid,
1748 install_rpath : rootlibexecdir,
1749 install : true,
1750 install_dir : systemgeneratordir)
1751
1752 exe = executable('systemd-dissect',
1753 'src/dissect/dissect.c',
1754 include_directories : includes,
1755 link_with : [libshared],
1756 install_rpath : rootlibexecdir,
1757 install : true,
1758 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001759 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760endif
1761
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001762if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 executable('systemd-resolved',
1764 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001765 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001766 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001767 libbasic_gcrypt,
1768 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001769 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001770 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 install : true,
1772 install_dir : rootlibexecdir)
1773
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001774 exe = executable('resolvectl',
1775 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001777 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001778 libbasic_gcrypt,
1779 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001781 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 libm,
1783 libidn],
1784 install_rpath : rootlibexecdir,
1785 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001786 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001787
1788 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001789 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001790 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001791
1792 meson.add_install_script(meson_make_symlink,
1793 join_paths(bindir, 'resolvectl'),
1794 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795endif
1796
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001797if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-logind',
1799 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001802 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001803 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001805 install_rpath : rootlibexecdir,
1806 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001808
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 exe = executable('loginctl',
1810 loginctl_sources,
1811 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001812 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 dependencies : [threads,
1814 liblz4,
1815 libxz],
1816 install_rpath : rootlibexecdir,
1817 install : true,
1818 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001819 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 exe = executable('systemd-inhibit',
1822 'src/login/inhibit.c',
1823 include_directories : includes,
1824 link_with : [libshared],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001828 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001829
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001830 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001831 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001832 pam_systemd = shared_library(
1833 'pam_systemd',
1834 pam_systemd_c,
1835 name_prefix : '',
1836 include_directories : includes,
1837 link_args : ['-shared',
1838 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001839 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 libshared_static],
1841 dependencies : [threads,
1842 libpam,
1843 libpam_misc],
1844 link_depends : pam_systemd_sym,
1845 install : true,
1846 install_dir : pamlibdir)
1847
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001848 if want_tests != 'false'
1849 test('dlopen-pam_systemd',
1850 test_dlopen,
1851 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001852 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001853 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001855
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001856 executable('systemd-user-runtime-dir',
1857 user_runtime_dir_sources,
1858 include_directories : includes,
1859 link_with : [libshared],
1860 install_rpath : rootlibexecdir,
1861 install : true,
1862 install_dir : rootlibexecdir)
1863endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001864
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001865if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 executable('systemd-user-sessions',
1867 'src/user-sessions/user-sessions.c',
1868 include_directories : includes,
1869 link_with : [libshared],
1870 install_rpath : rootlibexecdir,
1871 install : true,
1872 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001873endif
1874
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001875if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001876 exe = executable('bootctl',
1877 'src/boot/bootctl.c',
1878 include_directories : includes,
1879 link_with : [libshared],
1880 dependencies : [libblkid],
1881 install_rpath : rootlibexecdir,
1882 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001883 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001884
1885 executable('systemd-bless-boot',
1886 'src/boot/bless-boot.c',
1887 include_directories : includes,
1888 link_with : [libshared],
1889 dependencies : [libblkid],
1890 install_rpath : rootlibexecdir,
1891 install : true,
1892 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001893
1894 executable('systemd-bless-boot-generator',
1895 'src/boot/bless-boot-generator.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 install_rpath : rootlibexecdir,
1899 install : true,
1900 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001901endif
1902
Lennart Poetteringf876f532018-06-25 16:07:33 +02001903executable('systemd-boot-check-no-failures',
1904 'src/boot/boot-check-no-failures.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [libblkid],
1908 install_rpath : rootlibexecdir,
1909 install : true,
1910 install_dir : rootlibexecdir)
1911
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001912exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1913 include_directories : includes,
1914 link_with : [libshared],
1915 dependencies : [threads],
1916 install_rpath : rootlibexecdir,
1917 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001918public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919
Felipe Satelerf3794362018-05-22 15:08:57 -04001920
1921if get_option('link-systemctl-shared')
1922 systemctl_link_with = [libshared]
1923else
1924 systemctl_link_with = [libsystemd_static,
1925 libshared_static,
1926 libjournal_client,
1927 libbasic_gcrypt]
1928endif
1929
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001930exe = executable('systemctl', 'src/systemctl/systemctl.c',
1931 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001932 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933 dependencies : [threads,
1934 libcap,
1935 libselinux,
1936 libxz,
1937 liblz4],
1938 install_rpath : rootlibexecdir,
1939 install : true,
1940 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001941public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001942
Lennart Poettering61d05782018-04-16 21:41:40 +02001943if conf.get('ENABLE_PORTABLED') == 1
1944 executable('systemd-portabled',
1945 systemd_portabled_sources,
1946 include_directories : includes,
1947 link_with : [libshared],
1948 dependencies : [threads],
1949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : rootlibexecdir)
1952
1953 exe = executable('portablectl', 'src/portable/portablectl.c',
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [threads],
1957 install_rpath : rootlibexecdir,
1958 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001959 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001960 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001961endif
1962
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001963foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1964 meson.add_install_script(meson_make_symlink,
1965 join_paths(rootbindir, 'systemctl'),
1966 join_paths(rootsbindir, alias))
1967endforeach
1968
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001969if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001970 executable('systemd-backlight',
1971 'src/backlight/backlight.c',
1972 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001973 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001977endif
1978
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001979if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 executable('systemd-rfkill',
1981 'src/rfkill/rfkill.c',
1982 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001983 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 install_rpath : rootlibexecdir,
1985 install : true,
1986 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001987endif
1988
1989executable('systemd-system-update-generator',
1990 'src/system-update-generator/system-update-generator.c',
1991 include_directories : includes,
1992 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001993 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994 install : true,
1995 install_dir : systemgeneratordir)
1996
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001997if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 executable('systemd-cryptsetup',
1999 'src/cryptsetup/cryptsetup.c',
2000 include_directories : includes,
2001 link_with : [libshared],
2002 dependencies : [libcryptsetup],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002006
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 executable('systemd-cryptsetup-generator',
2008 'src/cryptsetup/cryptsetup-generator.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 dependencies : [libcryptsetup],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 executable('systemd-veritysetup',
2017 'src/veritysetup/veritysetup.c',
2018 include_directories : includes,
2019 link_with : [libshared],
2020 dependencies : [libcryptsetup],
2021 install_rpath : rootlibexecdir,
2022 install : true,
2023 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002024
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 executable('systemd-veritysetup-generator',
2026 'src/veritysetup/veritysetup-generator.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [libcryptsetup],
2030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033endif
2034
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002035if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 executable('systemd-sysv-generator',
2037 'src/sysv-generator/sysv-generator.c',
2038 include_directories : includes,
2039 link_with : [libshared],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 executable('systemd-rc-local-generator',
2045 'src/rc-local-generator/rc-local-generator.c',
2046 include_directories : includes,
2047 link_with : [libshared],
2048 install_rpath : rootlibexecdir,
2049 install : true,
2050 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002051endif
2052
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002053if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-hostnamed',
2055 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002057 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002058 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002059 install : true,
2060 install_dir : rootlibexecdir)
2061
2062 exe = executable('hostnamectl',
2063 'src/hostname/hostnamectl.c',
2064 include_directories : includes,
2065 link_with : [libshared],
2066 install_rpath : rootlibexecdir,
2067 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002068 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002069endif
2070
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002071if conf.get('ENABLE_LOCALED') == 1
2072 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 # logind will load libxkbcommon.so dynamically on its own
2074 deps = [libdl]
2075 else
2076 deps = []
2077 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002078
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002079 executable('systemd-localed',
2080 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002082 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002084 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002085 install : true,
2086 install_dir : rootlibexecdir)
2087
2088 exe = executable('localectl',
2089 localectl_sources,
2090 include_directories : includes,
2091 link_with : [libshared],
2092 install_rpath : rootlibexecdir,
2093 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002094 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095endif
2096
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002097if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002098 executable('systemd-timedated',
2099 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002100 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002101 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002102 install_rpath : rootlibexecdir,
2103 install : true,
2104 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002105endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106
Yu Watanabe6129ec82018-05-03 18:07:43 +09002107if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002108 exe = executable('timedatectl',
2109 'src/timedate/timedatectl.c',
2110 include_directories : includes,
2111 install_rpath : rootlibexecdir,
2112 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002113 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002115 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002116endif
2117
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002118if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 executable('systemd-timesyncd',
2120 systemd_timesyncd_sources,
2121 include_directories : includes,
2122 link_with : [libshared],
2123 dependencies : [threads,
2124 libm],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002128
2129 executable('systemd-time-wait-sync',
2130 'src/time-wait-sync/time-wait-sync.c',
2131 include_directories : includes,
2132 link_with : [libshared],
2133 install_rpath : rootlibexecdir,
2134 install : true,
2135 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002136endif
2137
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002138if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 executable('systemd-machined',
2140 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 link_with : [libmachine_core,
2143 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 install_rpath : rootlibexecdir,
2145 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002146 install_dir : rootlibexecdir)
2147
2148 exe = executable('machinectl',
2149 'src/machine/machinectl.c',
2150 include_directories : includes,
2151 link_with : [libshared],
2152 dependencies : [threads,
2153 libxz,
2154 liblz4],
2155 install_rpath : rootlibexecdir,
2156 install : true,
2157 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002158 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159endif
2160
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002161if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 executable('systemd-importd',
2163 systemd_importd_sources,
2164 include_directories : includes,
2165 link_with : [libshared],
2166 dependencies : [threads],
2167 install_rpath : rootlibexecdir,
2168 install : true,
2169 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002170
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002171 systemd_pull = executable('systemd-pull',
2172 systemd_pull_sources,
2173 include_directories : includes,
2174 link_with : [libshared],
2175 dependencies : [libcurl,
2176 libz,
2177 libbzip2,
2178 libxz,
2179 libgcrypt],
2180 install_rpath : rootlibexecdir,
2181 install : true,
2182 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 systemd_import = executable('systemd-import',
2185 systemd_import_sources,
2186 include_directories : includes,
2187 link_with : [libshared],
2188 dependencies : [libcurl,
2189 libz,
2190 libbzip2,
2191 libxz],
2192 install_rpath : rootlibexecdir,
2193 install : true,
2194 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002196 systemd_import_fs = executable('systemd-import-fs',
2197 systemd_import_fs_sources,
2198 include_directories : includes,
2199 link_with : [libshared],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootlibexecdir)
2203
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002204 systemd_export = executable('systemd-export',
2205 systemd_export_sources,
2206 include_directories : includes,
2207 link_with : [libshared],
2208 dependencies : [libcurl,
2209 libz,
2210 libbzip2,
2211 libxz],
2212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002215
2216 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002217endif
2218
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002219if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002220 exe = executable('systemd-journal-upload',
2221 systemd_journal_upload_sources,
2222 include_directories : includes,
2223 link_with : [libshared],
2224 dependencies : [threads,
2225 libcurl,
2226 libgnutls,
2227 libxz,
2228 liblz4],
2229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002232 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233endif
2234
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002235if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 s_j_remote = executable('systemd-journal-remote',
2237 systemd_journal_remote_sources,
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002239 link_with : [libshared,
2240 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 dependencies : [threads,
2242 libmicrohttpd,
2243 libgnutls,
2244 libxz,
2245 liblz4],
2246 install_rpath : rootlibexecdir,
2247 install : true,
2248 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002250 s_j_gatewayd = executable('systemd-journal-gatewayd',
2251 systemd_journal_gatewayd_sources,
2252 include_directories : includes,
2253 link_with : [libshared],
2254 dependencies : [threads,
2255 libmicrohttpd,
2256 libgnutls,
2257 libxz,
2258 liblz4],
2259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : rootlibexecdir)
2262 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263endif
2264
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002265if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 executable('systemd-coredump',
2267 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002269 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002271 libacl,
2272 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 libxz,
2274 liblz4],
2275 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002276 install : true,
2277 install_dir : rootlibexecdir)
2278
2279 exe = executable('coredumpctl',
2280 coredumpctl_sources,
2281 include_directories : includes,
2282 link_with : [libshared],
2283 dependencies : [threads,
2284 libxz,
2285 liblz4],
2286 install_rpath : rootlibexecdir,
2287 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002288 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289endif
2290
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002291if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002292 exe = executable('systemd-binfmt',
2293 'src/binfmt/binfmt.c',
2294 include_directories : includes,
2295 link_with : [libshared],
2296 install_rpath : rootlibexecdir,
2297 install : true,
2298 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002299 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300
2301 meson.add_install_script('sh', '-c',
2302 mkdir_p.format(binfmtdir))
2303 meson.add_install_script('sh', '-c',
2304 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2305endif
2306
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002307if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 executable('systemd-vconsole-setup',
2309 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002310 include_directories : includes,
2311 link_with : [libshared],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002315endif
2316
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002317if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318 executable('systemd-random-seed',
2319 'src/random-seed/random-seed.c',
2320 include_directories : includes,
2321 link_with : [libshared],
2322 install_rpath : rootlibexecdir,
2323 install : true,
2324 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325endif
2326
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002327if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 executable('systemd-firstboot',
2329 'src/firstboot/firstboot.c',
2330 include_directories : includes,
2331 link_with : [libshared],
2332 dependencies : [libcrypt],
2333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336endif
2337
2338executable('systemd-remount-fs',
2339 'src/remount-fs/remount-fs.c',
2340 'src/core/mount-setup.c',
2341 'src/core/mount-setup.h',
2342 include_directories : includes,
2343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002344 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345 install : true,
2346 install_dir : rootlibexecdir)
2347
2348executable('systemd-machine-id-setup',
2349 'src/machine-id-setup/machine-id-setup-main.c',
2350 'src/core/machine-id-setup.c',
2351 'src/core/machine-id-setup.h',
2352 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002353 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002354 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355 install : true,
2356 install_dir : rootbindir)
2357
2358executable('systemd-fsck',
2359 'src/fsck/fsck.c',
2360 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002361 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002366executable('systemd-growfs',
2367 'src/partition/growfs.c',
2368 include_directories : includes,
2369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002370 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002371 install_rpath : rootlibexecdir,
2372 install : true,
2373 install_dir : rootlibexecdir)
2374
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002375executable('systemd-makefs',
2376 'src/partition/makefs.c',
2377 include_directories : includes,
2378 link_with : [libshared],
2379 install_rpath : rootlibexecdir,
2380 install : true,
2381 install_dir : rootlibexecdir)
2382
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383executable('systemd-sleep',
2384 'src/sleep/sleep.c',
2385 include_directories : includes,
2386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002387 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388 install : true,
2389 install_dir : rootlibexecdir)
2390
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002391exe = executable('systemd-sysctl',
2392 'src/sysctl/sysctl.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002398public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399
2400executable('systemd-ac-power',
2401 'src/ac-power/ac-power.c',
2402 include_directories : includes,
2403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002408exe = executable('systemd-detect-virt',
2409 'src/detect-virt/detect-virt.c',
2410 include_directories : includes,
2411 link_with : [libshared],
2412 install_rpath : rootlibexecdir,
2413 install : true)
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-delta',
2417 'src/delta/delta.c',
2418 include_directories : includes,
2419 link_with : [libshared],
2420 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-escape',
2425 'src/escape/escape.c',
2426 include_directories : includes,
2427 link_with : [libshared],
2428 install_rpath : rootlibexecdir,
2429 install : true,
2430 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002431public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433exe = executable('systemd-notify',
2434 'src/notify/notify.c',
2435 include_directories : includes,
2436 link_with : [libshared],
2437 install_rpath : rootlibexecdir,
2438 install : true,
2439 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002440public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002441
2442executable('systemd-volatile-root',
2443 'src/volatile-root/volatile-root.c',
2444 include_directories : includes,
2445 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002446 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002447 install : true,
2448 install_dir : rootlibexecdir)
2449
2450executable('systemd-cgroups-agent',
2451 'src/cgroups-agent/cgroups-agent.c',
2452 include_directories : includes,
2453 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002454 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455 install : true,
2456 install_dir : rootlibexecdir)
2457
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002458exe = executable('systemd-id128',
2459 'src/id128/id128.c',
2460 include_directories : includes,
2461 link_with : [libshared],
2462 install_rpath : rootlibexecdir,
2463 install : true)
2464public_programs += exe
2465
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002466exe = executable('systemd-path',
2467 'src/path/path.c',
2468 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002469 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002470 install_rpath : rootlibexecdir,
2471 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002472public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002473
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002474exe = executable('systemd-ask-password',
2475 'src/ask-password/ask-password.c',
2476 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002478 install_rpath : rootlibexecdir,
2479 install : true,
2480 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002481public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002482
2483executable('systemd-reply-password',
2484 'src/reply-password/reply-password.c',
2485 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002486 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002487 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002488 install : true,
2489 install_dir : rootlibexecdir)
2490
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491exe = executable('systemd-tty-ask-password-agent',
2492 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2493 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002494 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002495 install_rpath : rootlibexecdir,
2496 install : true,
2497 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002498public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002499
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002500exe = executable('systemd-cgls',
2501 'src/cgls/cgls.c',
2502 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002503 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002504 install_rpath : rootlibexecdir,
2505 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002506public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002508exe = executable('systemd-cgtop',
2509 'src/cgtop/cgtop.c',
2510 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002511 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002512 install_rpath : rootlibexecdir,
2513 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002515
2516executable('systemd-initctl',
2517 'src/initctl/initctl.c',
2518 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002519 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002520 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002521 install : true,
2522 install_dir : rootlibexecdir)
2523
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524exe = executable('systemd-mount',
2525 'src/mount/mount-tool.c',
2526 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002527 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528 install_rpath : rootlibexecdir,
2529 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002530public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002531
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002532meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002533 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002534
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002535exe = executable('systemd-run',
2536 'src/run/run.c',
2537 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002538 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539 install_rpath : rootlibexecdir,
2540 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002541public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543exe = executable('systemd-stdio-bridge',
2544 'src/stdio-bridge/stdio-bridge.c',
2545 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002546 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002547 install_rpath : rootlibexecdir,
2548 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002549public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002551exe = executable('busctl',
2552 'src/busctl/busctl.c',
2553 'src/busctl/busctl-introspect.c',
2554 'src/busctl/busctl-introspect.h',
2555 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002556 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002557 install_rpath : rootlibexecdir,
2558 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002559public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002560
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002561if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002562 exe = executable('systemd-sysusers',
2563 'src/sysusers/sysusers.c',
2564 include_directories : includes,
2565 link_with : [libshared],
2566 install_rpath : rootlibexecdir,
2567 install : true,
2568 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002569 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570endif
2571
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002572if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002573 exe = executable('systemd-tmpfiles',
2574 'src/tmpfiles/tmpfiles.c',
2575 include_directories : includes,
2576 link_with : [libshared],
2577 dependencies : [libacl],
2578 install_rpath : rootlibexecdir,
2579 install : true,
2580 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002581 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002582
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002583 if want_tests != 'false'
2584 test('test-systemd-tmpfiles',
2585 test_systemd_tmpfiles_py,
2586 # https://github.com/mesonbuild/meson/issues/2681
2587 args : exe.full_path())
2588 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589endif
2590
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002591if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002592 exe = executable('systemd-hwdb',
2593 'src/hwdb/hwdb.c',
2594 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2595 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002596 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002597 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002598 install : true,
2599 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002600 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601endif
2602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002603if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002604 executable('systemd-quotacheck',
2605 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002606 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002607 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002608 install_rpath : rootlibexecdir,
2609 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002610 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611endif
2612
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002613exe = executable('systemd-socket-proxyd',
2614 'src/socket-proxy/socket-proxyd.c',
2615 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002616 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002617 dependencies : [threads],
2618 install_rpath : rootlibexecdir,
2619 install : true,
2620 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623exe = executable('systemd-udevd',
2624 systemd_udevd_sources,
2625 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002626 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002629 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002630 dependencies : [threads,
2631 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002633 libacl,
2634 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002635 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002636 install : true,
2637 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002638public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002639
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640exe = executable('udevadm',
2641 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002642 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 include_directories : includes,
2644 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002646 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002647 dependencies : [threads,
2648 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002650 libacl,
2651 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002652 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653 install : true,
2654 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002655public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656
2657executable('systemd-shutdown',
2658 systemd_shutdown_sources,
2659 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002661 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002662 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002663 install : true,
2664 install_dir : rootlibexecdir)
2665
2666executable('systemd-update-done',
2667 'src/update-done/update-done.c',
2668 include_directories : includes,
2669 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002670 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671 install : true,
2672 install_dir : rootlibexecdir)
2673
2674executable('systemd-update-utmp',
2675 'src/update-utmp/update-utmp.c',
2676 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002677 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002679 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680 install : true,
2681 install_dir : rootlibexecdir)
2682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002683if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002684 executable('systemd-modules-load',
2685 'src/modules-load/modules-load.c',
2686 include_directories : includes,
2687 link_with : [libshared],
2688 dependencies : [libkmod],
2689 install_rpath : rootlibexecdir,
2690 install : true,
2691 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002692
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002693 meson.add_install_script('sh', '-c',
2694 mkdir_p.format(modulesloaddir))
2695 meson.add_install_script('sh', '-c',
2696 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002697endif
2698
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002699exe = executable('systemd-nspawn',
2700 systemd_nspawn_sources,
2701 'src/core/mount-setup.c', # FIXME: use a variable?
2702 'src/core/mount-setup.h',
2703 'src/core/loopback-setup.c',
2704 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002705 include_directories : includes,
2706 link_with : [libnspawn_core,
2707 libshared],
2708 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002709 install_rpath : rootlibexecdir,
2710 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002711public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002712
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002713if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002714 executable('systemd-networkd',
2715 systemd_networkd_sources,
2716 include_directories : includes,
2717 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002718 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002719 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002721 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002722 install_rpath : rootlibexecdir,
2723 install : true,
2724 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002726 executable('systemd-networkd-wait-online',
2727 systemd_networkd_wait_online_sources,
2728 include_directories : includes,
2729 link_with : [libnetworkd_core,
2730 libshared],
2731 install_rpath : rootlibexecdir,
2732 install : true,
2733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002734
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002735 exe = executable('networkctl',
2736 networkctl_sources,
2737 include_directories : includes,
2738 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002739 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002740 install_rpath : rootlibexecdir,
2741 install : true,
2742 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002743 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002744endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002745
2746executable('systemd-sulogin-shell',
2747 ['src/sulogin-shell/sulogin-shell.c'],
2748 include_directories : includes,
2749 link_with : [libshared],
2750 install_rpath : rootlibexecdir,
2751 install : true,
2752 install_dir : rootlibexecdir)
2753
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002754############################################################
2755
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002756custom_target(
2757 'systemd-runtest.env',
2758 output : 'systemd-runtest.env',
2759 command : ['sh', '-c', '{ ' +
2760 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002761 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002762 '} >@OUTPUT@'],
2763 build_by_default : true)
2764
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002765foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002766 sources = tuple[0]
2767 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2768 dependencies = tuple[2]
2769 condition = tuple.length() >= 4 ? tuple[3] : ''
2770 type = tuple.length() >= 5 ? tuple[4] : ''
2771 defs = tuple.length() >= 6 ? tuple[5] : []
2772 incs = tuple.length() >= 7 ? tuple[6] : includes
2773 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002774
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002775 name = sources[0].split('/')[-1].split('.')[0]
2776 if type.startswith('timeout=')
2777 timeout = type.split('=')[1].to_int()
2778 type = ''
2779 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002780
2781 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002782 exe = executable(
2783 name,
2784 sources,
2785 include_directories : incs,
2786 link_with : link_with,
2787 dependencies : dependencies,
2788 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002789 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002790 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002791 install : install_tests,
2792 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002793
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002794 if type == 'manual'
2795 message('@0@ is a manual test'.format(name))
2796 elif type == 'unsafe' and want_tests != 'unsafe'
2797 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002798 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 test(name, exe,
2800 env : test_env,
2801 timeout : timeout)
2802 endif
2803 else
2804 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2805 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002806endforeach
2807
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002808exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002809 'test-libsystemd-sym',
2810 test_libsystemd_sym_c,
2811 include_directories : includes,
2812 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002813 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002814 install : install_tests,
2815 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002816if want_tests != 'false'
2817 test('test-libsystemd-sym', exe)
2818endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002819
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002820exe = executable(
2821 'test-libsystemd-static-sym',
2822 test_libsystemd_sym_c,
2823 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002824 link_with : [install_libsystemd_static],
2825 dependencies : [threads], # threads is already included in dependencies on the library,
2826 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002827 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002828 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002829 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002830if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002831 test('test-libsystemd-static-sym', exe)
2832endif
2833
2834exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002835 'test-libudev-sym',
2836 test_libudev_sym_c,
2837 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002838 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002839 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002840 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002841 install : install_tests,
2842 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002843if want_tests != 'false'
2844 test('test-libudev-sym', exe)
2845endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002846
2847exe = executable(
2848 'test-libudev-static-sym',
2849 test_libudev_sym_c,
2850 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002851 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002853 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002854 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002855 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002856if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002857 test('test-libudev-static-sym', exe)
2858endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002859
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002860############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002861
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002862fuzzer_exes = []
2863
Michael Olbrich59967402018-11-11 11:27:35 +01002864if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002865foreach tuple : fuzzers
2866 sources = tuple[0]
2867 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2868 dependencies = tuple[2]
2869 defs = tuple.length() >= 4 ? tuple[3] : []
2870 incs = tuple.length() >= 5 ? tuple[4] : includes
2871
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002872 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002873 dependencies += fuzzing_engine
2874 else
2875 sources += 'src/fuzz/fuzz-main.c'
2876 endif
2877
2878 name = sources[0].split('/')[-1].split('.')[0]
2879
2880 fuzzer_exes += executable(
2881 name,
2882 sources,
2883 include_directories : [incs, include_directories('src/fuzz')],
2884 link_with : link_with,
2885 dependencies : dependencies,
2886 c_args : defs,
2887 install : false)
2888endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002889endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002890
2891run_target('fuzzers',
2892 depends : fuzzer_exes,
2893 command : ['true'])
2894
2895############################################################
2896
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002897make_directive_index_py = find_program('tools/make-directive-index.py')
2898make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002899xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002900hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002901
2902subdir('units')
2903subdir('sysctl.d')
2904subdir('sysusers.d')
2905subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002906subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002907subdir('hwdb')
2908subdir('network')
2909subdir('man')
2910subdir('shell-completion/bash')
2911subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002912subdir('docs/sysvinit')
2913subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002914
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002915install_subdir('factory/etc',
2916 install_dir : factorydir)
2917
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002918install_data('xorg/50-systemd-user.sh',
2919 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002920install_data('modprobe.d/systemd.conf',
2921 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002922install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002924 'NEWS',
2925 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302926 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002927 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002928 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302929 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002930 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002931 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002932 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002933 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2934 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002935
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002936meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2937meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2938
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002939############################################################
2940
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002941meson_check_help = find_program('tools/meson-check-help.sh')
2942
2943foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002944 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002945 if want_tests != 'false'
2946 test('check-help-' + name,
2947 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002948 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002949 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002950endforeach
2951
2952############################################################
2953
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002954# Enable tests for all supported sanitizers
2955foreach tuple : sanitizers
2956 sanitizer = tuple[0]
2957 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002958
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002959 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002960 prev = ''
2961 foreach p : fuzz_regression_tests
2962 b = p.split('/')[-2]
2963 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002964
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002965 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002966
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002967 if name != prev
2968 if want_tests == 'false'
2969 message('Not compiling @0@ because tests is set to false'.format(name))
2970 elif slow_tests
2971 exe = custom_target(
2972 name,
2973 output : name,
2974 depends : build,
2975 command : [env, 'ln', '-fs',
2976 join_paths(build.full_path(), b),
2977 '@OUTPUT@'],
2978 build_by_default : true)
2979 else
2980 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2981 endif
2982 endif
2983 prev = name
2984
2985 if want_tests != 'false' and slow_tests
2986 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2987 env,
2988 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002989 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002990 endif
2991 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002992 endif
2993endforeach
2994
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002995
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002996############################################################
2997
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002998if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002999 all_files = run_command(
3000 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003001 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003002 'ls-files',
3003 ':/*.[ch]'])
3004 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003005
userwithuide85a6902017-08-09 13:41:44 +00003006 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003007 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003008 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003009 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003010 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003011 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003012 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003013endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003014
3015if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003017 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003019 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003020endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003021
3022if git.found()
3023 git_head = run_command(
3024 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003025 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003026 'rev-parse', 'HEAD']).stdout().strip()
3027 git_head_short = run_command(
3028 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003029 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003030 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3031
3032 run_target(
3033 'git-snapshot',
3034 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003035 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003036 git_head_short),
3037 '--prefix', 'systemd-@0@/'.format(git_head),
3038 'HEAD'])
3039endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003040
3041############################################################
3042
Lennart Poettering51b13862017-12-20 12:51:14 +01003043meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3044run_target(
3045 'check-api-docs',
3046 depends : [man, libsystemd, libudev],
3047 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3048
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003049run_target(
3050 'make-index-md',
3051 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3052
Lennart Poettering51b13862017-12-20 12:51:14 +01003053############################################################
3054
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003055status = [
3056 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3057
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003058 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003059 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003060 'prefix directory: @0@'.format(prefixdir),
3061 'rootprefix directory: @0@'.format(rootprefixdir),
3062 'sysconf directory: @0@'.format(sysconfdir),
3063 'include directory: @0@'.format(includedir),
3064 'lib directory: @0@'.format(libdir),
3065 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003066 'SysV init scripts: @0@'.format(sysvinit_path),
3067 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003068 'PAM modules directory: @0@'.format(pamlibdir),
3069 'PAM configuration directory: @0@'.format(pamconfdir),
3070 'RPM macros directory: @0@'.format(rpmmacrosdir),
3071 'modprobe.d directory: @0@'.format(modprobedir),
3072 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3073 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3074 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3075 'bash completions directory: @0@'.format(bashcompletiondir),
3076 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003077 'extra start script: @0@'.format(get_option('rc-local')),
3078 'extra stop script: @0@'.format(get_option('halt-local')),
3079 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3080 get_option('debug-tty')),
3081 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003082 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003083 'maximum system UID: @0@'.format(system_uid_max),
3084 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003085 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3086 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3087 'minimum container UID base: @0@'.format(container_uid_base_min),
3088 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003090 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003091 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003093 'nobody user name: @0@'.format(nobody_user),
3094 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003096 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097
3098 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003099 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003101 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003102 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3103 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003104
3105alt_dns_servers = '\n '.join(dns_servers.split(' '))
3106alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3107status += [
3108 'default DNS servers: @0@'.format(alt_dns_servers),
3109 'default NTP servers: @0@'.format(alt_ntp_servers)]
3110
3111alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3112 '@@0@'.format(time_epoch)).stdout().strip()
3113status += [
3114 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3115
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003116status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003117 'static libsystemd: @0@'.format(static_libsystemd),
3118 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003119
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120# TODO:
3121# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3122# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3123# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3124
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003125if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003126 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003127
3128 if have_gnu_efi
3129 status += [
3130 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003131 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003132 'EFI lib directory: @0@'.format(efi_libdir),
3133 'EFI lds directory: @0@'.format(efi_ldsdir),
3134 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003135 endif
3136endif
3137
3138found = []
3139missing = []
3140
3141foreach tuple : [
3142 ['libcryptsetup'],
3143 ['PAM'],
3144 ['AUDIT'],
3145 ['IMA'],
3146 ['AppArmor'],
3147 ['SELinux'],
3148 ['SECCOMP'],
3149 ['SMACK'],
3150 ['zlib'],
3151 ['xz'],
3152 ['lz4'],
3153 ['bzip2'],
3154 ['ACL'],
3155 ['gcrypt'],
3156 ['qrencode'],
3157 ['microhttpd'],
3158 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003159 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003160 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003161 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003162 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003163 ['libidn'],
3164 ['libiptc'],
3165 ['elfutils'],
3166 ['binfmt'],
3167 ['vconsole'],
3168 ['quotacheck'],
3169 ['tmpfiles'],
3170 ['environment.d'],
3171 ['sysusers'],
3172 ['firstboot'],
3173 ['randomseed'],
3174 ['backlight'],
3175 ['rfkill'],
3176 ['logind'],
3177 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003178 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003179 ['importd'],
3180 ['hostnamed'],
3181 ['timedated'],
3182 ['timesyncd'],
3183 ['localed'],
3184 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003185 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003186 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3187 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 ['coredump'],
3189 ['polkit'],
3190 ['legacy pkla', install_polkit_pkla],
3191 ['efi'],
3192 ['gnu-efi', have_gnu_efi],
3193 ['kmod'],
3194 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003195 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003196 ['blkid'],
3197 ['dbus'],
3198 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003199 ['nss-myhostname'],
3200 ['nss-mymachines'],
3201 ['nss-resolve'],
3202 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003203 ['hwdb'],
3204 ['tpm'],
3205 ['man pages', want_man],
3206 ['html pages', want_html],
3207 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003208 ['SysV compat'],
3209 ['utmp'],
3210 ['ldconfig'],
3211 ['hibernate'],
3212 ['adm group', get_option('adm-group')],
3213 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003214 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003215 ['debug hashmap'],
3216 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003217 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003218 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003219 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003220 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003221 ['link-udev-shared', get_option('link-udev-shared')],
3222 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003223]
3224
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003225 if tuple.length() >= 2
3226 cond = tuple[1]
3227 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003228 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3229 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003230 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 endif
3232 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003233 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003234 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003235 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003236 endif
3237endforeach
3238
3239status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003240 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003241 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003242 '',
3243 'disabled features: @0@'.format(', '.join(missing)),
3244 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003246
3247if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003248 warning('\n' +
3249 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3250 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3251 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003252endif