blob: 1964b1aa87b489a67de722d420af436aefb922b6 [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
831conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
832
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400833substs.set('SUSHELL', get_option('debug-shell'))
834substs.set('DEBUGTTY', get_option('debug-tty'))
835
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836enable_debug_hashmap = false
837enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900838enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900839enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200840foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900841 if name == 'hashmap'
842 enable_debug_hashmap = true
843 elif name == 'mmap-cache'
844 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900845 elif name == 'siphash'
846 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900847 elif name == 'udev'
848 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900849 else
850 message('unknown debug option "@0@", ignoring'.format(name))
851 endif
852endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200853conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
854conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900855conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900856conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400857
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200858conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200859conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861#####################################################################
862
863threads = dependency('threads')
864librt = cc.find_library('rt')
865libm = cc.find_library('m')
866libdl = cc.find_library('dl')
867libcrypt = cc.find_library('crypt')
868
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400869libcap = dependency('libcap', required : false)
870if not libcap.found()
871 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
872 libcap = cc.find_library('cap')
873endif
874
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100876 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877
878want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500879if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400881 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200883 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400884else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889
890want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500891if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libselinux = dependency('libselinux',
893 version : '>= 2.1.9',
894 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901
902want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500903if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libapparmor = dependency('libapparmor',
905 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913smack_run_label = get_option('smack-run-label')
914if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
917
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400918want_polkit = get_option('polkit')
919install_polkit = false
920install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500921if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400923
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libpolkit = dependency('polkit-gobject-1',
925 required : false)
926 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
927 message('Old polkit detected, will install pkla files')
928 install_polkit_pkla = true
929 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400930endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200931conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400932
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400933want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400935 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400937else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400939 libacl = []
940endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400942
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500944if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400945 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400947else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952
953want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500954if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400959 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962
963want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500964if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libkmod = dependency('libkmod',
966 version : '>= 15',
967 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500976if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libpam = cc.find_library('pam', required : want_pam == 'true')
978 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libpam = []
983 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986
987want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500988if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libmicrohttpd = dependency('libmicrohttpd',
990 version : '>= 0.9.33',
991 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400993else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998
999want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001000if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libcryptsetup = dependency('libcryptsetup',
1002 version : '>= 1.6.0',
1003 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001005 have_sector = cc.has_member(
1006 'struct crypt_params_plain',
1007 'sector_size',
1008 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001011 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001015conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libcurl = dependency('libcurl',
1020 version : '>= 7.32.0',
1021 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001030want_libidn2 = get_option('libidn2')
1031if want_libidn == 'true' and want_libidn2 == 'true'
1032 error('libidn and libidn2 cannot be requested simultaneously')
1033endif
1034
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001035if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libidn = dependency('libidn',
1037 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001041 libidn = []
1042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001044if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001045 # libidn is used for both libidn and libidn2 objects
1046 libidn = dependency('libidn2',
1047 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048 have = libidn.found()
1049else
1050 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053
1054want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libiptc = dependency('libiptc',
1057 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libqrencode = dependency('libqrencode',
1068 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001076want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1079 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
1083endif
1084if not have
1085 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001086 libgcrypt = []
1087 libgpg_error = []
1088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001090
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001092if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libgnutls = dependency('gnutls',
1094 version : '>= 3.1.4',
1095 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001100endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001101conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001103want_openssl = get_option('openssl')
1104if want_openssl != 'false' and not fuzzer_build
1105 libopenssl = dependency('openssl',
1106 version : '>= 1.1.0',
1107 required : want_openssl == 'true')
1108 have = libopenssl.found()
1109else
1110 have = false
1111 libopenssl = []
1112endif
1113conf.set10('HAVE_OPENSSL', have)
1114
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001116if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 libdw = dependency('libdw',
1118 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001120else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125
1126want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001127if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 libz = dependency('zlib',
1129 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136
1137want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libbzip2 = cc.find_library('bz2',
1140 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147
1148want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001149if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libxz = dependency('liblzma',
1151 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158
1159want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001162 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001171want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001172if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001173 libxkbcommon = dependency('xkbcommon',
1174 version : '>= 0.3.0',
1175 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001176 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001177else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001179 libxkbcommon = []
1180endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001182
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001183want_pcre2 = get_option('pcre2')
1184if want_pcre2 != 'false'
1185 libpcre2 = dependency('libpcre2-8',
1186 required : want_pcre2 == 'true')
1187 have = libpcre2.found()
1188else
1189 have = false
1190 libpcre2 = []
1191endif
1192conf.set10('HAVE_PCRE2', have)
1193
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001194want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001195if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001196 libglib = dependency('glib-2.0',
1197 version : '>= 2.22.0',
1198 required : want_glib == 'true')
1199 libgobject = dependency('gobject-2.0',
1200 version : '>= 2.22.0',
1201 required : want_glib == 'true')
1202 libgio = dependency('gio-2.0',
1203 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001204 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001205else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001206 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 libglib = []
1208 libgobject = []
1209 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001211conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001212
1213want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001214if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001215 libdbus = dependency('dbus-1',
1216 version : '>= 1.3.2',
1217 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001218 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001219else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001220 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001221 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001222endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001223conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001224
Yu Watanabe42303dc2017-06-18 05:22:32 +09001225default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001226if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001227 default_dnssec = 'no'
1228endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001230 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1231 default_dnssec = 'no'
1232endif
1233conf.set('DEFAULT_DNSSEC_MODE',
1234 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1235substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1236
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001237dns_over_tls = get_option('dns-over-tls')
1238if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001239 if dns_over_tls == 'openssl'
1240 have_gnutls = false
1241 else
1242 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1243 if dns_over_tls == 'gnutls' and not have_gnutls
1244 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1245 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001246 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001247 if dns_over_tls == 'gnutls' or have_gnutls
1248 have_openssl = false
1249 else
1250 have_openssl = conf.get('HAVE_OPENSSL') == 1
1251 if dns_over_tls != 'auto' and not have_openssl
1252 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1253 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1254 endif
1255 endif
1256 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001257else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001258 have = false
1259 have_gnutls = false
1260 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001261endif
1262conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001263conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1264conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001265
Iwan Timmerc9299be2018-06-13 20:26:24 +02001266default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001267if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001268 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001269endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001270if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1271 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 +02001272 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001273endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001274conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1275 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1276substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001277
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001279if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001280 have = (conf.get('HAVE_LIBCURL') == 1 and
1281 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001282 conf.get('HAVE_XZ') == 1 and
1283 conf.get('HAVE_GCRYPT') == 1)
1284 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 error('importd support was requested, but dependencies are not available')
1286 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001287else
1288 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001290conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291
1292want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001293if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001294 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1295 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001296 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1297 # it's possible to build one without the other. Complain only if
1298 # support was explictly requested. The auxiliary files like sysusers
1299 # config should be installed when any of the programs are built.
1300 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1301 error('remote support was requested, but dependencies are not available')
1302 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303 have = have_deps[0] or have_deps[1]
1304else
1305 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001309foreach term : ['utmp',
1310 'hibernate',
1311 'environment-d',
1312 'binfmt',
1313 'coredump',
1314 'resolve',
1315 'logind',
1316 'hostnamed',
1317 'localed',
1318 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001319 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001320 'networkd',
1321 'timedated',
1322 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001323 'firstboot',
1324 'randomseed',
1325 'backlight',
1326 'vconsole',
1327 'quotacheck',
1328 'sysusers',
1329 'tmpfiles',
1330 'hwdb',
1331 'rfkill',
1332 'ldconfig',
1333 'efi',
1334 'tpm',
1335 'ima',
1336 'smack',
1337 'gshadow',
1338 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001339 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001340 'nss-systemd']
1341 have = get_option(term)
1342 name = 'ENABLE_' + term.underscorify().to_upper()
1343 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344endforeach
1345
Yu Watanabe08540a92018-07-18 09:25:57 +09001346foreach tuple : [['nss-mymachines', 'machined'],
1347 ['nss-resolve', 'resolve']]
1348 want = get_option(tuple[0])
1349 if want != 'false'
1350 have = get_option(tuple[1])
1351 if want == 'true' and not have
1352 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1353 endif
1354 else
1355 have = false
1356 endif
1357 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1358 conf.set10(name, have)
1359endforeach
1360
1361enable_nss = false
1362foreach term : ['ENABLE_NSS_MYHOSTNAME',
1363 'ENABLE_NSS_MYMACHINES',
1364 'ENABLE_NSS_RESOLVE',
1365 'ENABLE_NSS_SYSTEMD']
1366 if conf.get(term) == 1
1367 enable_nss = true
1368 endif
1369endforeach
1370conf.set10('ENABLE_NSS', enable_nss)
1371
Yu Watanabe348b4432018-05-07 18:17:35 +09001372conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001373
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001374tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001375fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001376
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001377conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001378
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001379#####################################################################
1380
1381if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001382 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001383
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001384 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001386 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 elif efi_arch == 'x86_64'
1388 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001389 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 elif efi_arch == 'arm'
1391 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001392 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 elif efi_arch == 'aarch64'
1394 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 else
1397 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001398 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001400
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001401 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001403
Yu Watanabeac093402018-05-10 16:04:16 +09001404 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001405else
1406 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001407endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001408conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409
1410#####################################################################
1411
1412config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 output : 'config.h',
1414 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415
Yu Watanabe348b4432018-05-07 18:17:35 +09001416meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1417
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418includes = include_directories('src/basic',
1419 'src/shared',
1420 'src/systemd',
1421 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001422 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001423 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424 'src/resolve',
1425 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001426 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001427 'src/login',
1428 'src/udev',
1429 'src/libudev',
1430 'src/core',
1431 'src/libsystemd/sd-bus',
1432 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001433 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434 'src/libsystemd/sd-hwdb',
1435 'src/libsystemd/sd-id128',
1436 'src/libsystemd/sd-netlink',
1437 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001438 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001440 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441
1442add_project_arguments('-include', 'config.h', language : 'c')
1443
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001444generate_gperfs = find_program('tools/generate-gperfs.py')
1445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446subdir('po')
1447subdir('catalog')
1448subdir('src/systemd')
1449subdir('src/basic')
1450subdir('src/libsystemd')
1451subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454
1455libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001456 'journal-core',
1457 libjournal_core_sources,
1458 journald_gperf_c,
1459 include_directories : includes,
1460 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001462libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001464 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001465 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001466 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 include_directories : includes,
1468 link_args : ['-shared',
1469 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001470 link_with : [libbasic,
1471 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001472 link_whole : [libsystemd_static,
1473 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001474 dependencies : [threads,
1475 librt,
1476 libxz,
1477 liblz4],
1478 link_depends : libsystemd_sym,
1479 install : true,
1480 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481
Davide Cavalca70848ec2018-04-09 02:43:35 -07001482static_libsystemd = get_option('static-libsystemd')
1483static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1484
1485install_libsystemd_static = static_library(
1486 'systemd',
1487 libsystemd_sources,
1488 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001489 basic_sources,
1490 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001491 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001492 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001493 build_by_default : static_libsystemd != 'false',
1494 install : static_libsystemd != 'false',
1495 install_dir : rootlibdir,
1496 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1497 dependencies : [threads,
1498 librt,
1499 libxz,
1500 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001501 libcap,
1502 libblkid,
1503 libmount,
1504 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001505 libgcrypt],
1506 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1507
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508############################################################
1509
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001510# binaries that have --help and are intended for use by humans,
1511# usually, but not always, installed in /bin.
1512public_programs = []
1513
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514subdir('src/libudev')
1515subdir('src/shared')
1516subdir('src/core')
1517subdir('src/udev')
1518subdir('src/network')
1519
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001520subdir('src/analyze')
1521subdir('src/journal-remote')
1522subdir('src/coredump')
1523subdir('src/hostname')
1524subdir('src/import')
1525subdir('src/kernel-install')
1526subdir('src/locale')
1527subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001528subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001529subdir('src/nspawn')
1530subdir('src/resolve')
1531subdir('src/timedate')
1532subdir('src/timesync')
1533subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001534subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001535
1536subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001537subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001538subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001539subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001540
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001541############################################################
1542
1543# only static linking apart from libdl, to make sure that the
1544# module is linked to all libraries that it uses.
1545test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001546 'test-dlopen',
1547 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001548 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 include_directories : includes,
1550 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001551 dependencies : [libdl],
1552 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001553
Yu Watanabe08540a92018-07-18 09:25:57 +09001554foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001555 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001556 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1557 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001559 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 if condition
1561 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001562
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001564 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001565
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 nss = shared_library(
1567 'nss_' + module,
1568 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001569 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001570 version : '2',
1571 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001572 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1573 link_args : ['-Wl,-z,nodelete',
1574 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 '-Wl,--version-script=' + version_script_arg,
1576 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001577 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 libbasic],
1579 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001580 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 link_depends : sym,
1582 install : true,
1583 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001584
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 # We cannot use shared_module because it does not support version suffix.
1586 # Unfortunately shared_library insists on creating the symlink…
1587 meson.add_install_script('sh', '-c',
1588 'rm $DESTDIR@0@/libnss_@1@.so'
1589 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001590
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001591 if want_tests != 'false'
1592 test('dlopen-nss_' + module,
1593 test_dlopen,
1594 # path to dlopen must include a slash
1595 args : nss.full_path())
1596 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001598endforeach
1599
1600############################################################
1601
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001602executable('systemd',
1603 systemd_sources,
1604 include_directories : includes,
1605 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001606 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001607 dependencies : [threads,
1608 librt,
1609 libseccomp,
1610 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001611 libmount,
1612 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001613 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001614 install : true,
1615 install_dir : rootlibexecdir)
1616
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001617meson.add_install_script(meson_make_symlink,
1618 join_paths(rootlibexecdir, 'systemd'),
1619 join_paths(rootsbindir, 'init'))
1620
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001621exe = executable('systemd-analyze',
1622 systemd_analyze_sources,
1623 include_directories : includes,
1624 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 libshared],
1626 dependencies : [threads,
1627 librt,
1628 libseccomp,
1629 libselinux,
1630 libmount,
1631 libblkid],
1632 install_rpath : rootlibexecdir,
1633 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001634public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
1636executable('systemd-journald',
1637 systemd_journald_sources,
1638 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001639 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001640 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641 dependencies : [threads,
1642 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001643 liblz4,
1644 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001645 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001646 install : true,
1647 install_dir : rootlibexecdir)
1648
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001649exe = executable('systemd-cat',
1650 systemd_cat_sources,
1651 include_directories : includes,
1652 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001653 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001654 dependencies : [threads],
1655 install_rpath : rootlibexecdir,
1656 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001657public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001659exe = executable('journalctl',
1660 journalctl_sources,
1661 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001662 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001663 dependencies : [threads,
1664 libqrencode,
1665 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001666 liblz4,
1667 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668 install_rpath : rootlibexecdir,
1669 install : true,
1670 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001671public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672
1673executable('systemd-getty-generator',
1674 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001676 link_with : [libshared],
1677 install_rpath : rootlibexecdir,
1678 install : true,
1679 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680
1681executable('systemd-debug-generator',
1682 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001684 link_with : [libshared],
1685 install_rpath : rootlibexecdir,
1686 install : true,
1687 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001688
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001689executable('systemd-run-generator',
1690 'src/run-generator/run-generator.c',
1691 include_directories : includes,
1692 link_with : [libshared],
1693 install_rpath : rootlibexecdir,
1694 install : true,
1695 install_dir : systemgeneratordir)
1696
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697executable('systemd-fstab-generator',
1698 'src/fstab-generator/fstab-generator.c',
1699 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001701 link_with : [libshared],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001706if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001707 executable('30-systemd-environment-d-generator',
1708 'src/environment-d-generator/environment-d-generator.c',
1709 include_directories : includes,
1710 link_with : [libshared],
1711 install_rpath : rootlibexecdir,
1712 install : true,
1713 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001714
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001715 meson.add_install_script(meson_make_symlink,
1716 join_paths(sysconfdir, 'environment'),
1717 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718endif
1719
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001720if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 executable('systemd-hibernate-resume-generator',
1722 'src/hibernate-resume/hibernate-resume-generator.c',
1723 include_directories : includes,
1724 link_with : [libshared],
1725 install_rpath : rootlibexecdir,
1726 install : true,
1727 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001728
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001729 executable('systemd-hibernate-resume',
1730 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001731 include_directories : includes,
1732 link_with : [libshared],
1733 install_rpath : rootlibexecdir,
1734 install : true,
1735 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736endif
1737
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001738if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 executable('systemd-gpt-auto-generator',
1740 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001741 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001743 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 dependencies : libblkid,
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : systemgeneratordir)
1748
1749 exe = executable('systemd-dissect',
1750 'src/dissect/dissect.c',
1751 include_directories : includes,
1752 link_with : [libshared],
1753 install_rpath : rootlibexecdir,
1754 install : true,
1755 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001756 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001757endif
1758
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001759if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 executable('systemd-resolved',
1761 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001762 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001763 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001764 libbasic_gcrypt,
1765 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001766 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001767 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 install : true,
1769 install_dir : rootlibexecdir)
1770
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001771 exe = executable('resolvectl',
1772 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001773 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001774 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001775 libbasic_gcrypt,
1776 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001778 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 libm,
1780 libidn],
1781 install_rpath : rootlibexecdir,
1782 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001783 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001784
1785 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001786 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001787 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001788
1789 meson.add_install_script(meson_make_symlink,
1790 join_paths(bindir, 'resolvectl'),
1791 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001792endif
1793
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001794if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001795 executable('systemd-logind',
1796 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001797 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001799 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 install_rpath : rootlibexecdir,
1803 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 exe = executable('loginctl',
1807 loginctl_sources,
1808 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001809 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 dependencies : [threads,
1811 liblz4,
1812 libxz],
1813 install_rpath : rootlibexecdir,
1814 install : true,
1815 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001816 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 exe = executable('systemd-inhibit',
1819 'src/login/inhibit.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 install_rpath : rootlibexecdir,
1823 install : true,
1824 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001825 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001828 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 pam_systemd = shared_library(
1830 'pam_systemd',
1831 pam_systemd_c,
1832 name_prefix : '',
1833 include_directories : includes,
1834 link_args : ['-shared',
1835 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001836 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 libshared_static],
1838 dependencies : [threads,
1839 libpam,
1840 libpam_misc],
1841 link_depends : pam_systemd_sym,
1842 install : true,
1843 install_dir : pamlibdir)
1844
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001845 if want_tests != 'false'
1846 test('dlopen-pam_systemd',
1847 test_dlopen,
1848 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001849 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001850 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001851 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001852
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001853 executable('systemd-user-runtime-dir',
1854 user_runtime_dir_sources,
1855 include_directories : includes,
1856 link_with : [libshared],
1857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootlibexecdir)
1860endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001862if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 executable('systemd-user-sessions',
1864 'src/user-sessions/user-sessions.c',
1865 include_directories : includes,
1866 link_with : [libshared],
1867 install_rpath : rootlibexecdir,
1868 install : true,
1869 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870endif
1871
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001872if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001873 exe = executable('bootctl',
1874 'src/boot/bootctl.c',
1875 include_directories : includes,
1876 link_with : [libshared],
1877 dependencies : [libblkid],
1878 install_rpath : rootlibexecdir,
1879 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001880 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001881
1882 executable('systemd-bless-boot',
1883 'src/boot/bless-boot.c',
1884 include_directories : includes,
1885 link_with : [libshared],
1886 dependencies : [libblkid],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001890
1891 executable('systemd-bless-boot-generator',
1892 'src/boot/bless-boot-generator.c',
1893 include_directories : includes,
1894 link_with : [libshared],
1895 install_rpath : rootlibexecdir,
1896 install : true,
1897 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001898endif
1899
Lennart Poetteringf876f532018-06-25 16:07:33 +02001900executable('systemd-boot-check-no-failures',
1901 'src/boot/boot-check-no-failures.c',
1902 include_directories : includes,
1903 link_with : [libshared],
1904 dependencies : [libblkid],
1905 install_rpath : rootlibexecdir,
1906 install : true,
1907 install_dir : rootlibexecdir)
1908
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001909exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 dependencies : [threads],
1913 install_rpath : rootlibexecdir,
1914 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001915public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001916
Felipe Satelerf3794362018-05-22 15:08:57 -04001917
1918if get_option('link-systemctl-shared')
1919 systemctl_link_with = [libshared]
1920else
1921 systemctl_link_with = [libsystemd_static,
1922 libshared_static,
1923 libjournal_client,
1924 libbasic_gcrypt]
1925endif
1926
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001927exe = executable('systemctl', 'src/systemctl/systemctl.c',
1928 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001929 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001930 dependencies : [threads,
1931 libcap,
1932 libselinux,
1933 libxz,
1934 liblz4],
1935 install_rpath : rootlibexecdir,
1936 install : true,
1937 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001938public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939
Lennart Poettering61d05782018-04-16 21:41:40 +02001940if conf.get('ENABLE_PORTABLED') == 1
1941 executable('systemd-portabled',
1942 systemd_portabled_sources,
1943 include_directories : includes,
1944 link_with : [libshared],
1945 dependencies : [threads],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
1949
1950 exe = executable('portablectl', 'src/portable/portablectl.c',
1951 include_directories : includes,
1952 link_with : [libshared],
1953 dependencies : [threads],
1954 install_rpath : rootlibexecdir,
1955 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001956 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001957 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001958endif
1959
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001960foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1961 meson.add_install_script(meson_make_symlink,
1962 join_paths(rootbindir, 'systemctl'),
1963 join_paths(rootsbindir, alias))
1964endforeach
1965
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001966if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 executable('systemd-backlight',
1968 'src/backlight/backlight.c',
1969 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001970 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001974endif
1975
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001976if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 executable('systemd-rfkill',
1978 'src/rfkill/rfkill.c',
1979 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001980 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 install_rpath : rootlibexecdir,
1982 install : true,
1983 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001984endif
1985
1986executable('systemd-system-update-generator',
1987 'src/system-update-generator/system-update-generator.c',
1988 include_directories : includes,
1989 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001990 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991 install : true,
1992 install_dir : systemgeneratordir)
1993
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001994if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 executable('systemd-cryptsetup',
1996 'src/cryptsetup/cryptsetup.c',
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [libcryptsetup],
2000 install_rpath : rootlibexecdir,
2001 install : true,
2002 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002004 executable('systemd-cryptsetup-generator',
2005 'src/cryptsetup/cryptsetup-generator.c',
2006 include_directories : includes,
2007 link_with : [libshared],
2008 dependencies : [libcryptsetup],
2009 install_rpath : rootlibexecdir,
2010 install : true,
2011 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002012
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002013 executable('systemd-veritysetup',
2014 'src/veritysetup/veritysetup.c',
2015 include_directories : includes,
2016 link_with : [libshared],
2017 dependencies : [libcryptsetup],
2018 install_rpath : rootlibexecdir,
2019 install : true,
2020 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002021
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 executable('systemd-veritysetup-generator',
2023 'src/veritysetup/veritysetup-generator.c',
2024 include_directories : includes,
2025 link_with : [libshared],
2026 dependencies : [libcryptsetup],
2027 install_rpath : rootlibexecdir,
2028 install : true,
2029 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002030endif
2031
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002032if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 executable('systemd-sysv-generator',
2034 'src/sysv-generator/sysv-generator.c',
2035 include_directories : includes,
2036 link_with : [libshared],
2037 install_rpath : rootlibexecdir,
2038 install : true,
2039 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 executable('systemd-rc-local-generator',
2042 'src/rc-local-generator/rc-local-generator.c',
2043 include_directories : includes,
2044 link_with : [libshared],
2045 install_rpath : rootlibexecdir,
2046 install : true,
2047 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048endif
2049
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002050if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051 executable('systemd-hostnamed',
2052 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002053 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002054 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002055 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 install : true,
2057 install_dir : rootlibexecdir)
2058
2059 exe = executable('hostnamectl',
2060 'src/hostname/hostnamectl.c',
2061 include_directories : includes,
2062 link_with : [libshared],
2063 install_rpath : rootlibexecdir,
2064 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002065 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002066endif
2067
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002068if conf.get('ENABLE_LOCALED') == 1
2069 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 # logind will load libxkbcommon.so dynamically on its own
2071 deps = [libdl]
2072 else
2073 deps = []
2074 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002075
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 executable('systemd-localed',
2077 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002078 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002079 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002081 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 install : true,
2083 install_dir : rootlibexecdir)
2084
2085 exe = executable('localectl',
2086 localectl_sources,
2087 include_directories : includes,
2088 link_with : [libshared],
2089 install_rpath : rootlibexecdir,
2090 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002091 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002092endif
2093
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002094if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002095 executable('systemd-timedated',
2096 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002097 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002098 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002099 install_rpath : rootlibexecdir,
2100 install : true,
2101 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002102endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002103
Yu Watanabe6129ec82018-05-03 18:07:43 +09002104if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 exe = executable('timedatectl',
2106 'src/timedate/timedatectl.c',
2107 include_directories : includes,
2108 install_rpath : rootlibexecdir,
2109 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002110 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002112 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002113endif
2114
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002115if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 executable('systemd-timesyncd',
2117 systemd_timesyncd_sources,
2118 include_directories : includes,
2119 link_with : [libshared],
2120 dependencies : [threads,
2121 libm],
2122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002125
2126 executable('systemd-time-wait-sync',
2127 'src/time-wait-sync/time-wait-sync.c',
2128 include_directories : includes,
2129 link_with : [libshared],
2130 install_rpath : rootlibexecdir,
2131 install : true,
2132 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133endif
2134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002135if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 executable('systemd-machined',
2137 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002138 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002139 link_with : [libmachine_core,
2140 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002141 install_rpath : rootlibexecdir,
2142 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002143 install_dir : rootlibexecdir)
2144
2145 exe = executable('machinectl',
2146 'src/machine/machinectl.c',
2147 include_directories : includes,
2148 link_with : [libshared],
2149 dependencies : [threads,
2150 libxz,
2151 liblz4],
2152 install_rpath : rootlibexecdir,
2153 install : true,
2154 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002155 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002156endif
2157
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002158if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002159 executable('systemd-importd',
2160 systemd_importd_sources,
2161 include_directories : includes,
2162 link_with : [libshared],
2163 dependencies : [threads],
2164 install_rpath : rootlibexecdir,
2165 install : true,
2166 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002168 systemd_pull = executable('systemd-pull',
2169 systemd_pull_sources,
2170 include_directories : includes,
2171 link_with : [libshared],
2172 dependencies : [libcurl,
2173 libz,
2174 libbzip2,
2175 libxz,
2176 libgcrypt],
2177 install_rpath : rootlibexecdir,
2178 install : true,
2179 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002180
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002181 systemd_import = executable('systemd-import',
2182 systemd_import_sources,
2183 include_directories : includes,
2184 link_with : [libshared],
2185 dependencies : [libcurl,
2186 libz,
2187 libbzip2,
2188 libxz],
2189 install_rpath : rootlibexecdir,
2190 install : true,
2191 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002193 systemd_import_fs = executable('systemd-import-fs',
2194 systemd_import_fs_sources,
2195 include_directories : includes,
2196 link_with : [libshared],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : rootlibexecdir)
2200
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 systemd_export = executable('systemd-export',
2202 systemd_export_sources,
2203 include_directories : includes,
2204 link_with : [libshared],
2205 dependencies : [libcurl,
2206 libz,
2207 libbzip2,
2208 libxz],
2209 install_rpath : rootlibexecdir,
2210 install : true,
2211 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002212
2213 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214endif
2215
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002216if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002217 exe = executable('systemd-journal-upload',
2218 systemd_journal_upload_sources,
2219 include_directories : includes,
2220 link_with : [libshared],
2221 dependencies : [threads,
2222 libcurl,
2223 libgnutls,
2224 libxz,
2225 liblz4],
2226 install_rpath : rootlibexecdir,
2227 install : true,
2228 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002229 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230endif
2231
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002232if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233 s_j_remote = executable('systemd-journal-remote',
2234 systemd_journal_remote_sources,
2235 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002236 link_with : [libshared,
2237 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 dependencies : [threads,
2239 libmicrohttpd,
2240 libgnutls,
2241 libxz,
2242 liblz4],
2243 install_rpath : rootlibexecdir,
2244 install : true,
2245 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 s_j_gatewayd = executable('systemd-journal-gatewayd',
2248 systemd_journal_gatewayd_sources,
2249 include_directories : includes,
2250 link_with : [libshared],
2251 dependencies : [threads,
2252 libmicrohttpd,
2253 libgnutls,
2254 libxz,
2255 liblz4],
2256 install_rpath : rootlibexecdir,
2257 install : true,
2258 install_dir : rootlibexecdir)
2259 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260endif
2261
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002262if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002263 executable('systemd-coredump',
2264 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002266 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 libacl,
2269 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002270 libxz,
2271 liblz4],
2272 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002273 install : true,
2274 install_dir : rootlibexecdir)
2275
2276 exe = executable('coredumpctl',
2277 coredumpctl_sources,
2278 include_directories : includes,
2279 link_with : [libshared],
2280 dependencies : [threads,
2281 libxz,
2282 liblz4],
2283 install_rpath : rootlibexecdir,
2284 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002285 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286endif
2287
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002288if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 exe = executable('systemd-binfmt',
2290 'src/binfmt/binfmt.c',
2291 include_directories : includes,
2292 link_with : [libshared],
2293 install_rpath : rootlibexecdir,
2294 install : true,
2295 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002296 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002297
2298 meson.add_install_script('sh', '-c',
2299 mkdir_p.format(binfmtdir))
2300 meson.add_install_script('sh', '-c',
2301 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2302endif
2303
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002304if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002305 executable('systemd-vconsole-setup',
2306 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307 include_directories : includes,
2308 link_with : [libshared],
2309 install_rpath : rootlibexecdir,
2310 install : true,
2311 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002312endif
2313
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002314if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002315 executable('systemd-random-seed',
2316 'src/random-seed/random-seed.c',
2317 include_directories : includes,
2318 link_with : [libshared],
2319 install_rpath : rootlibexecdir,
2320 install : true,
2321 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002322endif
2323
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002324if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002325 executable('systemd-firstboot',
2326 'src/firstboot/firstboot.c',
2327 include_directories : includes,
2328 link_with : [libshared],
2329 dependencies : [libcrypt],
2330 install_rpath : rootlibexecdir,
2331 install : true,
2332 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333endif
2334
2335executable('systemd-remount-fs',
2336 'src/remount-fs/remount-fs.c',
2337 'src/core/mount-setup.c',
2338 'src/core/mount-setup.h',
2339 include_directories : includes,
2340 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002341 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002342 install : true,
2343 install_dir : rootlibexecdir)
2344
2345executable('systemd-machine-id-setup',
2346 'src/machine-id-setup/machine-id-setup-main.c',
2347 'src/core/machine-id-setup.c',
2348 'src/core/machine-id-setup.h',
2349 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002351 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352 install : true,
2353 install_dir : rootbindir)
2354
2355executable('systemd-fsck',
2356 'src/fsck/fsck.c',
2357 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002358 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002359 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360 install : true,
2361 install_dir : rootlibexecdir)
2362
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002363executable('systemd-growfs',
2364 'src/partition/growfs.c',
2365 include_directories : includes,
2366 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002367 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002368 install_rpath : rootlibexecdir,
2369 install : true,
2370 install_dir : rootlibexecdir)
2371
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002372executable('systemd-makefs',
2373 'src/partition/makefs.c',
2374 include_directories : includes,
2375 link_with : [libshared],
2376 install_rpath : rootlibexecdir,
2377 install : true,
2378 install_dir : rootlibexecdir)
2379
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380executable('systemd-sleep',
2381 'src/sleep/sleep.c',
2382 include_directories : includes,
2383 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002384 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002385 install : true,
2386 install_dir : rootlibexecdir)
2387
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388exe = executable('systemd-sysctl',
2389 'src/sysctl/sysctl.c',
2390 include_directories : includes,
2391 link_with : [libshared],
2392 install_rpath : rootlibexecdir,
2393 install : true,
2394 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002395public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002396
2397executable('systemd-ac-power',
2398 'src/ac-power/ac-power.c',
2399 include_directories : includes,
2400 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002401 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402 install : true,
2403 install_dir : rootlibexecdir)
2404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405exe = executable('systemd-detect-virt',
2406 'src/detect-virt/detect-virt.c',
2407 include_directories : includes,
2408 link_with : [libshared],
2409 install_rpath : rootlibexecdir,
2410 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002411public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002413exe = executable('systemd-delta',
2414 'src/delta/delta.c',
2415 include_directories : includes,
2416 link_with : [libshared],
2417 install_rpath : rootlibexecdir,
2418 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002419public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002421exe = executable('systemd-escape',
2422 'src/escape/escape.c',
2423 include_directories : includes,
2424 link_with : [libshared],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002428public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002430exe = executable('systemd-notify',
2431 'src/notify/notify.c',
2432 include_directories : includes,
2433 link_with : [libshared],
2434 install_rpath : rootlibexecdir,
2435 install : true,
2436 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002437public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438
2439executable('systemd-volatile-root',
2440 'src/volatile-root/volatile-root.c',
2441 include_directories : includes,
2442 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002443 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444 install : true,
2445 install_dir : rootlibexecdir)
2446
2447executable('systemd-cgroups-agent',
2448 'src/cgroups-agent/cgroups-agent.c',
2449 include_directories : includes,
2450 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002451 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452 install : true,
2453 install_dir : rootlibexecdir)
2454
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002455exe = executable('systemd-id128',
2456 'src/id128/id128.c',
2457 include_directories : includes,
2458 link_with : [libshared],
2459 install_rpath : rootlibexecdir,
2460 install : true)
2461public_programs += exe
2462
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002463exe = executable('systemd-path',
2464 'src/path/path.c',
2465 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002466 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002467 install_rpath : rootlibexecdir,
2468 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002469public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471exe = executable('systemd-ask-password',
2472 'src/ask-password/ask-password.c',
2473 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002474 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002475 install_rpath : rootlibexecdir,
2476 install : true,
2477 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002478public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002479
2480executable('systemd-reply-password',
2481 'src/reply-password/reply-password.c',
2482 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002484 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485 install : true,
2486 install_dir : rootlibexecdir)
2487
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488exe = executable('systemd-tty-ask-password-agent',
2489 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2490 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492 install_rpath : rootlibexecdir,
2493 install : true,
2494 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002495public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497exe = executable('systemd-cgls',
2498 'src/cgls/cgls.c',
2499 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002500 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002501 install_rpath : rootlibexecdir,
2502 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002503public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505exe = executable('systemd-cgtop',
2506 'src/cgtop/cgtop.c',
2507 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002508 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509 install_rpath : rootlibexecdir,
2510 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002511public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002512
2513executable('systemd-initctl',
2514 'src/initctl/initctl.c',
2515 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002516 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002517 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002518 install : true,
2519 install_dir : rootlibexecdir)
2520
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521exe = executable('systemd-mount',
2522 'src/mount/mount-tool.c',
2523 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002524 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002525 install_rpath : rootlibexecdir,
2526 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002527public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002528
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002529meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002530 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002531
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532exe = executable('systemd-run',
2533 'src/run/run.c',
2534 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002535 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002536 install_rpath : rootlibexecdir,
2537 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002538public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002539
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002540exe = executable('systemd-stdio-bridge',
2541 'src/stdio-bridge/stdio-bridge.c',
2542 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002543 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544 install_rpath : rootlibexecdir,
2545 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002546public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548exe = executable('busctl',
2549 'src/busctl/busctl.c',
2550 'src/busctl/busctl-introspect.c',
2551 'src/busctl/busctl-introspect.h',
2552 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002553 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002554 install_rpath : rootlibexecdir,
2555 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002556public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002558if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002559 exe = executable('systemd-sysusers',
2560 'src/sysusers/sysusers.c',
2561 include_directories : includes,
2562 link_with : [libshared],
2563 install_rpath : rootlibexecdir,
2564 install : true,
2565 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002566 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002567endif
2568
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002569if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002570 exe = executable('systemd-tmpfiles',
2571 'src/tmpfiles/tmpfiles.c',
2572 include_directories : includes,
2573 link_with : [libshared],
2574 dependencies : [libacl],
2575 install_rpath : rootlibexecdir,
2576 install : true,
2577 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002578 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002579
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002580 if want_tests != 'false'
2581 test('test-systemd-tmpfiles',
2582 test_systemd_tmpfiles_py,
2583 # https://github.com/mesonbuild/meson/issues/2681
2584 args : exe.full_path())
2585 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002586endif
2587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002588if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002589 exe = executable('systemd-hwdb',
2590 'src/hwdb/hwdb.c',
2591 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2592 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002593 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002594 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 install : true,
2596 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002597 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002598endif
2599
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002600if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 executable('systemd-quotacheck',
2602 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002604 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605 install_rpath : rootlibexecdir,
2606 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608endif
2609
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002610exe = executable('systemd-socket-proxyd',
2611 'src/socket-proxy/socket-proxyd.c',
2612 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002613 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002614 dependencies : [threads],
2615 install_rpath : rootlibexecdir,
2616 install : true,
2617 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002618public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002619
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620exe = executable('systemd-udevd',
2621 systemd_udevd_sources,
2622 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002623 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002626 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002627 dependencies : [threads,
2628 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002630 libacl,
2631 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002632 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633 install : true,
2634 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002635public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002636
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002637exe = executable('udevadm',
2638 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002639 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640 include_directories : includes,
2641 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002643 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002644 dependencies : [threads,
2645 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002647 libacl,
2648 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002649 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650 install : true,
2651 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002652public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002653
2654executable('systemd-shutdown',
2655 systemd_shutdown_sources,
2656 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002657 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002658 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002659 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002660 install : true,
2661 install_dir : rootlibexecdir)
2662
2663executable('systemd-update-done',
2664 'src/update-done/update-done.c',
2665 include_directories : includes,
2666 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002667 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002668 install : true,
2669 install_dir : rootlibexecdir)
2670
2671executable('systemd-update-utmp',
2672 'src/update-utmp/update-utmp.c',
2673 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002674 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002676 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002677 install : true,
2678 install_dir : rootlibexecdir)
2679
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002680if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002681 executable('systemd-modules-load',
2682 'src/modules-load/modules-load.c',
2683 include_directories : includes,
2684 link_with : [libshared],
2685 dependencies : [libkmod],
2686 install_rpath : rootlibexecdir,
2687 install : true,
2688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002689
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002690 meson.add_install_script('sh', '-c',
2691 mkdir_p.format(modulesloaddir))
2692 meson.add_install_script('sh', '-c',
2693 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002694endif
2695
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002696exe = executable('systemd-nspawn',
2697 systemd_nspawn_sources,
2698 'src/core/mount-setup.c', # FIXME: use a variable?
2699 'src/core/mount-setup.h',
2700 'src/core/loopback-setup.c',
2701 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002702 include_directories : includes,
2703 link_with : [libnspawn_core,
2704 libshared],
2705 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002706 install_rpath : rootlibexecdir,
2707 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002708public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002709
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002710if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002711 executable('systemd-networkd',
2712 systemd_networkd_sources,
2713 include_directories : includes,
2714 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002716 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002718 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 install_rpath : rootlibexecdir,
2720 install : true,
2721 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002722
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 executable('systemd-networkd-wait-online',
2724 systemd_networkd_wait_online_sources,
2725 include_directories : includes,
2726 link_with : [libnetworkd_core,
2727 libshared],
2728 install_rpath : rootlibexecdir,
2729 install : true,
2730 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002731
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002732 exe = executable('networkctl',
2733 networkctl_sources,
2734 include_directories : includes,
2735 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002736 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002737 install_rpath : rootlibexecdir,
2738 install : true,
2739 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002740 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002741endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002742
2743executable('systemd-sulogin-shell',
2744 ['src/sulogin-shell/sulogin-shell.c'],
2745 include_directories : includes,
2746 link_with : [libshared],
2747 install_rpath : rootlibexecdir,
2748 install : true,
2749 install_dir : rootlibexecdir)
2750
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002751############################################################
2752
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002753custom_target(
2754 'systemd-runtest.env',
2755 output : 'systemd-runtest.env',
2756 command : ['sh', '-c', '{ ' +
2757 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002758 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002759 '} >@OUTPUT@'],
2760 build_by_default : true)
2761
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002762foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 sources = tuple[0]
2764 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2765 dependencies = tuple[2]
2766 condition = tuple.length() >= 4 ? tuple[3] : ''
2767 type = tuple.length() >= 5 ? tuple[4] : ''
2768 defs = tuple.length() >= 6 ? tuple[5] : []
2769 incs = tuple.length() >= 7 ? tuple[6] : includes
2770 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002771
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002772 name = sources[0].split('/')[-1].split('.')[0]
2773 if type.startswith('timeout=')
2774 timeout = type.split('=')[1].to_int()
2775 type = ''
2776 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002777
2778 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002779 exe = executable(
2780 name,
2781 sources,
2782 include_directories : incs,
2783 link_with : link_with,
2784 dependencies : dependencies,
2785 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002786 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002788 install : install_tests,
2789 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002790
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002791 if type == 'manual'
2792 message('@0@ is a manual test'.format(name))
2793 elif type == 'unsafe' and want_tests != 'unsafe'
2794 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002795 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002796 test(name, exe,
2797 env : test_env,
2798 timeout : timeout)
2799 endif
2800 else
2801 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2802 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002803endforeach
2804
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002805exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 'test-libsystemd-sym',
2807 test_libsystemd_sym_c,
2808 include_directories : includes,
2809 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002810 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002811 install : install_tests,
2812 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002813if want_tests != 'false'
2814 test('test-libsystemd-sym', exe)
2815endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002816
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002817exe = executable(
2818 'test-libsystemd-static-sym',
2819 test_libsystemd_sym_c,
2820 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002821 link_with : [install_libsystemd_static],
2822 dependencies : [threads], # threads is already included in dependencies on the library,
2823 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002824 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002825 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002826 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002827if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002828 test('test-libsystemd-static-sym', exe)
2829endif
2830
2831exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 'test-libudev-sym',
2833 test_libudev_sym_c,
2834 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002835 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002836 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002837 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 install : install_tests,
2839 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002840if want_tests != 'false'
2841 test('test-libudev-sym', exe)
2842endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002843
2844exe = executable(
2845 'test-libudev-static-sym',
2846 test_libudev_sym_c,
2847 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002848 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002850 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002851 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002853if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002854 test('test-libudev-static-sym', exe)
2855endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002856
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002857############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002858
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002859fuzzer_exes = []
2860
Michael Olbrich59967402018-11-11 11:27:35 +01002861if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002862foreach tuple : fuzzers
2863 sources = tuple[0]
2864 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2865 dependencies = tuple[2]
2866 defs = tuple.length() >= 4 ? tuple[3] : []
2867 incs = tuple.length() >= 5 ? tuple[4] : includes
2868
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002869 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002870 dependencies += fuzzing_engine
2871 else
2872 sources += 'src/fuzz/fuzz-main.c'
2873 endif
2874
2875 name = sources[0].split('/')[-1].split('.')[0]
2876
2877 fuzzer_exes += executable(
2878 name,
2879 sources,
2880 include_directories : [incs, include_directories('src/fuzz')],
2881 link_with : link_with,
2882 dependencies : dependencies,
2883 c_args : defs,
2884 install : false)
2885endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002886endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002887
2888run_target('fuzzers',
2889 depends : fuzzer_exes,
2890 command : ['true'])
2891
2892############################################################
2893
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002894make_directive_index_py = find_program('tools/make-directive-index.py')
2895make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002896xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002897hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002898
2899subdir('units')
2900subdir('sysctl.d')
2901subdir('sysusers.d')
2902subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002903subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002904subdir('hwdb')
2905subdir('network')
2906subdir('man')
2907subdir('shell-completion/bash')
2908subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002909subdir('docs/sysvinit')
2910subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002911
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002912install_subdir('factory/etc',
2913 install_dir : factorydir)
2914
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002915install_data('xorg/50-systemd-user.sh',
2916 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002917install_data('modprobe.d/systemd.conf',
2918 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002919install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002920 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002921 'NEWS',
2922 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302923 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002924 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002925 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302926 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002927 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002928 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002929 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002930 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2931 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002932
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002933meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2934meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2935
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002936############################################################
2937
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002938meson_check_help = find_program('tools/meson-check-help.sh')
2939
2940foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002941 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002942 if want_tests != 'false'
2943 test('check-help-' + name,
2944 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002945 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002946 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002947endforeach
2948
2949############################################################
2950
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002951# Enable tests for all supported sanitizers
2952foreach tuple : sanitizers
2953 sanitizer = tuple[0]
2954 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002955
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002956 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002957 prev = ''
2958 foreach p : fuzz_regression_tests
2959 b = p.split('/')[-2]
2960 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002961
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002962 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002963
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002964 if name != prev
2965 if want_tests == 'false'
2966 message('Not compiling @0@ because tests is set to false'.format(name))
2967 elif slow_tests
2968 exe = custom_target(
2969 name,
2970 output : name,
2971 depends : build,
2972 command : [env, 'ln', '-fs',
2973 join_paths(build.full_path(), b),
2974 '@OUTPUT@'],
2975 build_by_default : true)
2976 else
2977 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2978 endif
2979 endif
2980 prev = name
2981
2982 if want_tests != 'false' and slow_tests
2983 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2984 env,
2985 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002986 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002987 endif
2988 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002989 endif
2990endforeach
2991
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002992
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002993############################################################
2994
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002995if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002996 all_files = run_command(
2997 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002998 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002999 'ls-files',
3000 ':/*.[ch]'])
3001 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003002
userwithuide85a6902017-08-09 13:41:44 +00003003 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003004 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003005 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003006 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003007 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003008 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003009 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003010endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003011
3012if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003013 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003014 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003015 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003017endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003018
3019if git.found()
3020 git_head = run_command(
3021 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003022 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003023 'rev-parse', 'HEAD']).stdout().strip()
3024 git_head_short = run_command(
3025 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003026 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003027 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3028
3029 run_target(
3030 'git-snapshot',
3031 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003032 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003033 git_head_short),
3034 '--prefix', 'systemd-@0@/'.format(git_head),
3035 'HEAD'])
3036endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003037
3038############################################################
3039
Lennart Poettering51b13862017-12-20 12:51:14 +01003040meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3041run_target(
3042 'check-api-docs',
3043 depends : [man, libsystemd, libudev],
3044 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3045
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003046run_target(
3047 'make-index-md',
3048 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3049
Lennart Poettering51b13862017-12-20 12:51:14 +01003050############################################################
3051
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003052status = [
3053 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3054
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003055 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003056 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003057 'prefix directory: @0@'.format(prefixdir),
3058 'rootprefix directory: @0@'.format(rootprefixdir),
3059 'sysconf directory: @0@'.format(sysconfdir),
3060 'include directory: @0@'.format(includedir),
3061 'lib directory: @0@'.format(libdir),
3062 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003063 'SysV init scripts: @0@'.format(sysvinit_path),
3064 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003065 'PAM modules directory: @0@'.format(pamlibdir),
3066 'PAM configuration directory: @0@'.format(pamconfdir),
3067 'RPM macros directory: @0@'.format(rpmmacrosdir),
3068 'modprobe.d directory: @0@'.format(modprobedir),
3069 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3070 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3071 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3072 'bash completions directory: @0@'.format(bashcompletiondir),
3073 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003074 'extra start script: @0@'.format(get_option('rc-local')),
3075 'extra stop script: @0@'.format(get_option('halt-local')),
3076 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3077 get_option('debug-tty')),
3078 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003079 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003080 'maximum system UID: @0@'.format(system_uid_max),
3081 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003082 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3083 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3084 'minimum container UID base: @0@'.format(container_uid_base_min),
3085 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003086 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003087 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003088 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003090 'nobody user name: @0@'.format(nobody_user),
3091 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003093 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003094
3095 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003096 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003098 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3100
3101alt_dns_servers = '\n '.join(dns_servers.split(' '))
3102alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3103status += [
3104 'default DNS servers: @0@'.format(alt_dns_servers),
3105 'default NTP servers: @0@'.format(alt_ntp_servers)]
3106
3107alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3108 '@@0@'.format(time_epoch)).stdout().strip()
3109status += [
3110 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3111
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003112status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003113 'static libsystemd: @0@'.format(static_libsystemd),
3114 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003115
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003116# TODO:
3117# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3118# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3119# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3120
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003121if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003122 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003123
3124 if have_gnu_efi
3125 status += [
3126 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003127 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003128 'EFI lib directory: @0@'.format(efi_libdir),
3129 'EFI lds directory: @0@'.format(efi_ldsdir),
3130 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003131 endif
3132endif
3133
3134found = []
3135missing = []
3136
3137foreach tuple : [
3138 ['libcryptsetup'],
3139 ['PAM'],
3140 ['AUDIT'],
3141 ['IMA'],
3142 ['AppArmor'],
3143 ['SELinux'],
3144 ['SECCOMP'],
3145 ['SMACK'],
3146 ['zlib'],
3147 ['xz'],
3148 ['lz4'],
3149 ['bzip2'],
3150 ['ACL'],
3151 ['gcrypt'],
3152 ['qrencode'],
3153 ['microhttpd'],
3154 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003155 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003156 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003157 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003158 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003159 ['libidn'],
3160 ['libiptc'],
3161 ['elfutils'],
3162 ['binfmt'],
3163 ['vconsole'],
3164 ['quotacheck'],
3165 ['tmpfiles'],
3166 ['environment.d'],
3167 ['sysusers'],
3168 ['firstboot'],
3169 ['randomseed'],
3170 ['backlight'],
3171 ['rfkill'],
3172 ['logind'],
3173 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003174 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003175 ['importd'],
3176 ['hostnamed'],
3177 ['timedated'],
3178 ['timesyncd'],
3179 ['localed'],
3180 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003181 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003182 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3183 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003184 ['coredump'],
3185 ['polkit'],
3186 ['legacy pkla', install_polkit_pkla],
3187 ['efi'],
3188 ['gnu-efi', have_gnu_efi],
3189 ['kmod'],
3190 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003191 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003192 ['blkid'],
3193 ['dbus'],
3194 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003195 ['nss-myhostname'],
3196 ['nss-mymachines'],
3197 ['nss-resolve'],
3198 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003199 ['hwdb'],
3200 ['tpm'],
3201 ['man pages', want_man],
3202 ['html pages', want_html],
3203 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204 ['SysV compat'],
3205 ['utmp'],
3206 ['ldconfig'],
3207 ['hibernate'],
3208 ['adm group', get_option('adm-group')],
3209 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003210 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003211 ['debug hashmap'],
3212 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003213 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003214 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003215 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003216 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003217 ['link-udev-shared', get_option('link-udev-shared')],
3218 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003219]
3220
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003221 if tuple.length() >= 2
3222 cond = tuple[1]
3223 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003224 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3225 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003226 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227 endif
3228 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003229 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003230 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003231 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003232 endif
3233endforeach
3234
3235status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003236 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003238 '',
3239 'disabled features: @0@'.format(', '.join(missing)),
3240 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003241message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003242
3243if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003244 warning('\n' +
3245 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3246 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3247 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003248endif