blob: f2b975abc5555a8d2a986ad3c31e62007841e6e5 [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',
Zbigniew Jędrzejewski-Szmek064605e2019-01-10 22:29:01 +01004 version : '241',
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
Zbigniew Jędrzejewski-Szmek064605e2019-01-10 22:29:01 +010015libsystemd_version = '0.25.0'
16libudev_version = '1.6.13'
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()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020029want_ossfuzz = get_option('oss-fuzz')
30want_libfuzzer = get_option('llvm-fuzz')
31if want_ossfuzz and want_libfuzzer
32 error('only one of oss-fuzz and llvm-fuzz can be specified')
33endif
34fuzzer_build = want_ossfuzz or want_libfuzzer
35
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040036#####################################################################
37
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040038# Try to install the git pre-commit hook
39git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
40if git_hook.returncode() == 0
41 message(git_hook.stdout().strip())
42endif
43
44#####################################################################
45
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010046if get_option('split-usr') == 'auto'
47 split_usr = run_command('test', '-L', '/bin').returncode() != 0
48else
49 split_usr = get_option('split-usr') == 'true'
50endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010051conf.set10('HAVE_SPLIT_USR', split_usr,
52 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010053
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010054if get_option('split-bin') == 'auto'
55 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
56else
57 split_bin = get_option('split-bin') == 'true'
58endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010059conf.set10('HAVE_SPLIT_BIN', split_bin,
60 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010061
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063# Unusual rootprefixdir values are used by some distros
64# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010065rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010066if rootprefixdir == ''
67 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010068endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040069
70sysvinit_path = get_option('sysvinit-path')
71sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090072conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020073 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020075conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
76conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010077conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020078
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040079# join_paths ignore the preceding arguments if an absolute component is
80# encountered, so this should canonicalize various paths when they are
81# absolute or relative.
82prefixdir = get_option('prefix')
83if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040084 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085endif
86bindir = join_paths(prefixdir, get_option('bindir'))
87libdir = join_paths(prefixdir, get_option('libdir'))
88sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
89includedir = join_paths(prefixdir, get_option('includedir'))
90datadir = join_paths(prefixdir, get_option('datadir'))
91localstatedir = join_paths('/', get_option('localstatedir'))
92
93rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010094rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
96
97rootlibdir = get_option('rootlibdir')
98if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040099 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100endif
101
102# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200103pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
104pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400105polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
106polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
107polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
108varlogdir = join_paths(localstatedir, 'log')
109xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900110rpmmacrosdir = get_option('rpmmacrosdir')
111if rpmmacrosdir != 'no'
112 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
113endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200114modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400115
116# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117pkgdatadir = join_paths(datadir, 'systemd')
118environmentdir = join_paths(prefixdir, 'lib/environment.d')
119pkgsysconfdir = join_paths(sysconfdir, 'systemd')
120userunitdir = join_paths(prefixdir, 'lib/systemd/user')
121userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
122tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
123sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
124sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
125binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
126modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
127networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
128pkgincludedir = join_paths(includedir, 'systemd')
129systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
130usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
131systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
132userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
133systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
134systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
135systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
136systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
137udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400138udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
139udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
140catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
141kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
142factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400143bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
144testsdir = join_paths(prefixdir, 'lib/systemd/tests')
145systemdstatedir = join_paths(localstatedir, 'lib/systemd')
146catalogstatedir = join_paths(systemdstatedir, 'catalog')
147randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200148profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400149
tblume75aaade2018-02-01 22:46:15 +0100150docdir = get_option('docdir')
151if docdir == ''
152 docdir = join_paths(datadir, 'doc/systemd')
153endif
154
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400155dbuspolicydir = get_option('dbuspolicydir')
156if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400157 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400158endif
159
160dbussessionservicedir = get_option('dbussessionservicedir')
161if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400162 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400163endif
164
165dbussystemservicedir = get_option('dbussystemservicedir')
166if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400167 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400168endif
169
170pamlibdir = get_option('pamlibdir')
171if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400172 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400173endif
174
175pamconfdir = get_option('pamconfdir')
176if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400177 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400178endif
179
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100180memory_accounting_default = get_option('memory-accounting-default')
181
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400182conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400183conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
185conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
186conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400187conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
188conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100189
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100190conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100191
Michael Bieble17e5ba2017-04-13 10:30:56 -0400192conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400193conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
194conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400195conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
196conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
197conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
198conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100199conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100200conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
202conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
203conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
204conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
205conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100206conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400207conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
209conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
211conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
212conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
213conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
214conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
215conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
217conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700218conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700219conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400220conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400221conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('LIBDIR', libdir)
223conf.set_quoted('ROOTLIBDIR', rootlibdir)
224conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
225conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400226conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
227conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200228conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400229conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
230conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
231conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
232conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200233conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100234conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400235
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100237substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('exec_prefix', prefixdir)
239substs.set('libdir', libdir)
240substs.set('rootlibdir', rootlibdir)
241substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100242substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('bindir', bindir)
244substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('rootlibexecdir', rootlibexecdir)
246substs.set('systemunitdir', systemunitdir)
247substs.set('userunitdir', userunitdir)
248substs.set('systempresetdir', systempresetdir)
249substs.set('userpresetdir', userpresetdir)
250substs.set('udevhwdbdir', udevhwdbdir)
251substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200253substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('catalogdir', catalogdir)
255substs.set('tmpfilesdir', tmpfilesdir)
256substs.set('sysusersdir', sysusersdir)
257substs.set('sysctldir', sysctldir)
258substs.set('binfmtdir', binfmtdir)
259substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200260substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('systemgeneratordir', systemgeneratordir)
262substs.set('usergeneratordir', usergeneratordir)
263substs.set('systemenvgeneratordir', systemenvgeneratordir)
264substs.set('userenvgeneratordir', userenvgeneratordir)
265substs.set('systemshutdowndir', systemshutdowndir)
266substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('VARLOGDIR', varlogdir)
268substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400269substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
270substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400271substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
272substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
273substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
274substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100275substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200276substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277
278#####################################################################
279
280cc = meson.get_compiler('c')
281pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400282check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100283meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400284
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200285want_tests = get_option('tests')
286slow_tests = want_tests != 'false' and get_option('slow-tests')
287install_tests = get_option('install-tests')
288
James Hilliard46e63a22018-12-27 09:16:20 +0800289if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200290 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200291 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200292else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200293 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400294endif
295
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500296if want_libfuzzer
297 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200298elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500299 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
300endif
301
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900302possible_cc_flags = [
303 '-Wextra',
304 '-Werror=undef',
305 '-Wlogical-op',
306 '-Wmissing-include-dirs',
307 '-Wold-style-definition',
308 '-Wpointer-arith',
309 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900310 '-Wfloat-equal',
311 '-Wsuggest-attribute=noreturn',
312 '-Werror=missing-prototypes',
313 '-Werror=implicit-function-declaration',
314 '-Werror=missing-declarations',
315 '-Werror=return-type',
316 '-Werror=incompatible-pointer-types',
317 '-Werror=format=2',
318 '-Wstrict-prototypes',
319 '-Wredundant-decls',
320 '-Wmissing-noreturn',
321 '-Wimplicit-fallthrough=5',
322 '-Wshadow',
323 '-Wendif-labels',
324 '-Wstrict-aliasing=2',
325 '-Wwrite-strings',
326 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200327 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200328 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900329 '-Wdate-time',
330 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700331
332 # negative arguments are correctly detected starting with meson 0.46.
333 '-Wno-unused-parameter',
334 '-Wno-missing-field-initializers',
335 '-Wno-unused-result',
336 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmek3b8951c2019-02-22 11:20:18 +0100337 '-Wno-error=#warnings',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700338
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
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900363if cc.get_id() == 'clang'
364 possible_cc_flags += [
365 '-Wno-typedef-redefinition',
366 '-Wno-gnu-variable-sized-type-not-at-end',
367 ]
368endif
369
370if get_option('buildtype') != 'debug'
371 possible_cc_flags += [
372 '-ffunction-sections',
373 '-fdata-sections',
374 ]
375
376 possible_link_flags += '-Wl,--gc-sections'
377endif
378
379add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900380add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900381
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800382if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400383 #include <time.h>
384 #include <inttypes.h>
385 typedef uint64_t usec_t;
386 usec_t now(clockid_t clock);
387 int main(void) {
388 struct timespec now;
389 return 0;
390 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100391''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400392 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400393endif
394
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200395cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400396
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400397#####################################################################
398# compilation result tests
399
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400400conf.set('_GNU_SOURCE', true)
401conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402
403conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
409conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
410
411decl_headers = '''
412#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100413#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400414'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400415
416foreach decl : ['char16_t',
417 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100418 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400419 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400420
421 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200422 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
423
424 if decl == 'struct statx'
425 if have
426 want_linux_stat_h = false
427 else
428 have = cc.sizeof(decl,
429 prefix : decl_headers + '#include <linux/stat.h>',
430 args : '-D_GNU_SOURCE') > 0
431 want_linux_stat_h = have
432 endif
433 endif
434
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200435 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436endforeach
437
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200438conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700439
Yu Watanabe9714c022018-12-02 16:27:02 +0100440foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900441 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
442 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
443 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
444 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
445 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100446 ['FRA_TUN_ID', 'linux/fib_rules.h'],
447 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100448 ['FRA_PAD', 'linux/fib_rules.h'],
449 ['FRA_L3MDEV', 'linux/fib_rules.h'],
450 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
451 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
452 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
453 ['FOU_CMD_GET', 'linux/fou.h'],
454 ['IFA_FLAGS', 'linux/if_addr.h'],
455 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
456 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
457 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
458 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
459 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
460 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
461 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
462 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
463 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
464 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
465 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
466 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
467 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
468 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
469 ['IFLA_PAD', 'linux/if_link.h'],
470 ['IFLA_XDP', 'linux/if_link.h'],
471 ['IFLA_EVENT', 'linux/if_link.h'],
472 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
473 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
474 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
475 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100476 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100477 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
478 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
479 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
480 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
481 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
482 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
483 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
484 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
485 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
486 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
487 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
488 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
489 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
490 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
491 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
492 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
493 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
494 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
495 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
496 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
497 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
498 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
499 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
500 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
501 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
502 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
503 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
504 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
505 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
506 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
507 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
508 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
509 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
510 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
511 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
512 # if_tunnel.h is buggy and cannot be included on its own
513 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
514 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
515 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
516 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
517 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
518 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
519 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
520 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
521 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
522 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
523 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400525 prefix = decl.length() > 2 ? decl[2] : ''
526 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200527 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528endforeach
529
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200531 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532endforeach
533
534foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100535 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100536 ['gettid', '''#include <sys/types.h>
537 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100538 ['pivot_root', '''#include <stdlib.h>
539 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100540 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400541 #include <sys/stat.h>
542 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100543 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100544 ['renameat2', '''#include <stdio.h>
545 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400546 ['kcmp', '''#include <linux/kcmp.h>'''],
547 ['keyctl', '''#include <sys/types.h>
548 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100549 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400550 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200551 ['bpf', '''#include <sys/syscall.h>
552 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100553 ['statx', '''#include <sys/types.h>
554 #include <sys/stat.h>
555 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100556 ['explicit_bzero' , '''#include <string.h>'''],
557 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400558]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400559
Lennart Poettering85db59b2017-12-25 12:01:14 +0100560 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200561 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562endforeach
563
Lennart Poettering85db59b2017-12-25 12:01:14 +0100564if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200565 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200566 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400567else
568 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200569 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200570 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400571endif
572
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573#####################################################################
574
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100575vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100576 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100577 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100578 meson.project_version()]
579
Louis Taylord1084aa2019-01-21 21:45:36 +0000580version_h = vcs_tag(
581 input : 'src/version/version.h.in',
582 output : 'version.h',
583 command: vcs_tagger)
584
585versiondep = declare_dependency(sources: version_h)
586
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400589m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400591git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100592env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100593perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400595meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400596mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400597test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
598splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400599
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
601# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500602progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604 ['kmod', '/usr/bin/kmod' ],
605 ['kexec', '/usr/sbin/kexec' ],
606 ['sulogin', '/usr/sbin/sulogin' ],
607 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
608 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
609 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
610 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
611 ]
612foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 path = get_option(prog[0] + '-path')
614 if path != ''
615 message('Using @1@ for @0@'.format(prog[0], path))
616 else
617 exe = find_program(prog[0],
618 '/usr/sbin/' + prog[0],
619 '/sbin/' + prog[0],
620 required: false)
621 path = exe.found() ? exe.path() : prog[1]
622 endif
623 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
624 conf.set_quoted(name, path)
625 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endforeach
627
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500628conf.set_quoted('TELINIT', get_option('telinit-path'))
629
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400630if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100631 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400632endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634############################################################
635
636gperf = find_program('gperf')
637
638gperf_test_format = '''
639#include <string.h>
640const char * in_word_set(const char *, @0@);
641@1@
642'''
643gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
644gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
645gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
646if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
650 if cc.compiles(gperf_test)
651 gperf_len_type = 'unsigned'
652 else
653 error('unable to determine gperf len type')
654 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657conf.set('GPERF_LEN_TYPE', gperf_len_type,
658 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660############################################################
661
662if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100665foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100666 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900667 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668 'linux/memfd.h',
669 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100670 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200671 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672 'valgrind/memcheck.h',
673 'valgrind/valgrind.h',
674 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400675
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200676 conf.set10('HAVE_' + header.underscorify().to_upper(),
677 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endforeach
679
680############################################################
681
682conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400683conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
684gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685
686default_hierarchy = get_option('default-hierarchy')
687conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
688 description : 'default cgroup hierarchy as string')
689if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695endif
696
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100697default_net_naming_scheme = get_option('default-net-naming-scheme')
698conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
699
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900701if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400702 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900703 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705conf.set('TIME_EPOCH', time_epoch)
706
707system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900708if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 system_uid_max = run_command(
710 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800711 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
712 '/etc/login.defs').stdout().strip()
713 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900714 system_uid_max = 999
715 else
716 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800717 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400719conf.set('SYSTEM_UID_MAX', system_uid_max)
720substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900723if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400724 system_gid_max = run_command(
725 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800726 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
727 '/etc/login.defs').stdout().strip()
728 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900729 system_gid_max = 999
730 else
731 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800732 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734conf.set('SYSTEM_GID_MAX', system_gid_max)
735substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736
Yu Watanabeac093402018-05-10 16:04:16 +0900737dynamic_uid_min = get_option('dynamic-uid-min')
738dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100739conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
740conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
741substs.set('dynamicuidmin', dynamic_uid_min)
742substs.set('dynamicuidmax', dynamic_uid_max)
743
Yu Watanabeac093402018-05-10 16:04:16 +0900744container_uid_base_min = get_option('container-uid-base-min')
745container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100746conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
747conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
748substs.set('containeruidbasemin', container_uid_base_min)
749substs.set('containeruidbasemax', container_uid_base_max)
750
Lennart Poetteringafde4572017-12-05 11:00:24 +0100751nobody_user = get_option('nobody-user')
752nobody_group = get_option('nobody-group')
753
Chen Qi2484bff2018-07-23 14:53:09 +0800754if not meson.is_cross_build()
755 getent_result = run_command('getent', 'passwd', '65534')
756 if getent_result.returncode() == 0
757 name = getent_result.stdout().split(':')[0]
758 if name != nobody_user
759 warning('\n' +
760 '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) +
761 'Your build will result in an user table setup that is incompatible with the local system.')
762 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100763 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800764 id_result = run_command('id', '-u', nobody_user)
765 if id_result.returncode() == 0
766 id = id_result.stdout().to_int()
767 if id != 65534
768 warning('\n' +
769 '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) +
770 'Your build will result in an user table setup that is incompatible with the local system.')
771 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100772 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100773
Chen Qi2484bff2018-07-23 14:53:09 +0800774 getent_result = run_command('getent', 'group', '65534')
775 if getent_result.returncode() == 0
776 name = getent_result.stdout().split(':')[0]
777 if name != nobody_group
778 warning('\n' +
779 '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) +
780 'Your build will result in an group table setup that is incompatible with the local system.')
781 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100782 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800783 id_result = run_command('id', '-g', nobody_group)
784 if id_result.returncode() == 0
785 id = id_result.stdout().to_int()
786 if id != 65534
787 warning('\n' +
788 '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) +
789 'Your build will result in an group table setup that is incompatible with the local system.')
790 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100791 endif
792endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900793if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900794 warning('\n' +
795 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
796 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900797endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100798
799conf.set_quoted('NOBODY_USER_NAME', nobody_user)
800conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900801substs.set('NOBODY_USER_NAME', nobody_user)
802substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100803
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804tty_gid = get_option('tty-gid')
805conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400806substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
Ikey Doherty84786b82017-12-03 12:28:23 +0000808# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900809users_gid = get_option('users-gid')
810substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000811
Yu Watanabe348b4432018-05-07 18:17:35 +0900812conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
813conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814
Michael Bieblace5e312018-07-13 23:36:13 +0200815dev_kvm_mode = get_option('dev-kvm-mode')
816substs.set('DEV_KVM_MODE', dev_kvm_mode)
817conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700818substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400820kill_user_processes = get_option('default-kill-user-processes')
821conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100822conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400823substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400825dns_servers = get_option('dns-servers')
826conf.set_quoted('DNS_SERVERS', dns_servers)
827substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400829ntp_servers = get_option('ntp-servers')
830conf.set_quoted('NTP_SERVERS', ntp_servers)
831substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
Dave Reisner8ca9e922018-12-28 07:38:36 -0500833default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900834if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800835 if not meson.is_cross_build()
836 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
837 default_locale = run_command(choose_default_locale_sh).stdout().strip()
838 else
839 default_locale = 'C.UTF-8'
840 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900841endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500842conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
843
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
845
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400846substs.set('SUSHELL', get_option('debug-shell'))
847substs.set('DEBUGTTY', get_option('debug-tty'))
848
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849enable_debug_hashmap = false
850enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900851enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900852enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200853foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900854 if name == 'hashmap'
855 enable_debug_hashmap = true
856 elif name == 'mmap-cache'
857 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900858 elif name == 'siphash'
859 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900860 elif name == 'udev'
861 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900862 else
863 message('unknown debug option "@0@", ignoring'.format(name))
864 endif
865endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
867conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900868conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900869conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400870
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200871conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200872conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874#####################################################################
875
876threads = dependency('threads')
877librt = cc.find_library('rt')
878libm = cc.find_library('m')
879libdl = cc.find_library('dl')
880libcrypt = cc.find_library('crypt')
881
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400882libcap = dependency('libcap', required : false)
883if not libcap.found()
884 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
885 libcap = cc.find_library('cap')
886endif
887
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100889 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890
891want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400894 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400897else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400899 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902
903want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500904if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libselinux = dependency('libselinux',
906 version : '>= 2.1.9',
907 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500916if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libapparmor = dependency('libapparmor',
918 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926smack_run_label = get_option('smack-run-label')
927if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929endif
930
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400931want_polkit = get_option('polkit')
932install_polkit = false
933install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500934if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400936
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libpolkit = dependency('polkit-gobject-1',
938 required : false)
939 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
940 message('Old polkit detected, will install pkla files')
941 install_polkit_pkla = true
942 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400943endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400946want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500947if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952 libacl = []
953endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500957if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400960else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400962 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965
966want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500967if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400972 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975
976want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500977if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400978 libkmod = dependency('libkmod',
979 version : '>= 15',
980 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987
988want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500989if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400990 libpam = cc.find_library('pam', required : want_pam == 'true')
991 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libpam.found() and libpam_misc.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 libpam = []
996 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999
1000want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001001if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001002 libmicrohttpd = dependency('libmicrohttpd',
1003 version : '>= 0.9.33',
1004 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011
1012want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001013if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libcryptsetup = dependency('libcryptsetup',
1015 version : '>= 1.6.0',
1016 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001018 have_sector = cc.has_member(
1019 'struct crypt_params_plain',
1020 'sector_size',
1021 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001024 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001028conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
1030want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001031if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libcurl = dependency('libcurl',
1033 version : '>= 7.32.0',
1034 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001038 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041
1042want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001043want_libidn2 = get_option('libidn2')
1044if want_libidn == 'true' and want_libidn2 == 'true'
1045 error('libidn and libidn2 cannot be requested simultaneously')
1046endif
1047
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001048if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001049 libidn = dependency('libidn',
1050 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001052else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001054 libidn = []
1055endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001057if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001058 # libidn is used for both libidn and libidn2 objects
1059 libidn = dependency('libidn2',
1060 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = libidn.found()
1062else
1063 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066
1067want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001068if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libiptc = dependency('libiptc',
1070 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077
1078want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001079if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001080 libqrencode = dependency('libqrencode',
1081 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001085 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001090if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1092 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = false
1096endif
1097if not have
1098 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001099 libgcrypt = []
1100 libgpg_error = []
1101endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001103
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001105if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 libgnutls = dependency('gnutls',
1107 version : '>= 3.1.4',
1108 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001110else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001116want_openssl = get_option('openssl')
1117if want_openssl != 'false' and not fuzzer_build
1118 libopenssl = dependency('openssl',
1119 version : '>= 1.1.0',
1120 required : want_openssl == 'true')
1121 have = libopenssl.found()
1122else
1123 have = false
1124 libopenssl = []
1125endif
1126conf.set10('HAVE_OPENSSL', have)
1127
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001128want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001129if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 libdw = dependency('libdw',
1131 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138
1139want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001140if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 libz = dependency('zlib',
1142 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149
1150want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001151if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libbzip2 = cc.find_library('bz2',
1153 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160
1161want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001162if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libxz = dependency('liblzma',
1164 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001168 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171
1172want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001173if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001174 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001175 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001178else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001180 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001184want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001185if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001186 libxkbcommon = dependency('xkbcommon',
1187 version : '>= 0.3.0',
1188 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001190else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001192 libxkbcommon = []
1193endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001195
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001196want_pcre2 = get_option('pcre2')
1197if want_pcre2 != 'false'
1198 libpcre2 = dependency('libpcre2-8',
1199 required : want_pcre2 == 'true')
1200 have = libpcre2.found()
1201else
1202 have = false
1203 libpcre2 = []
1204endif
1205conf.set10('HAVE_PCRE2', have)
1206
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001207want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001208if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 libglib = dependency('glib-2.0',
1210 version : '>= 2.22.0',
1211 required : want_glib == 'true')
1212 libgobject = dependency('gobject-2.0',
1213 version : '>= 2.22.0',
1214 required : want_glib == 'true')
1215 libgio = dependency('gio-2.0',
1216 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001217 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001218else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 libglib = []
1221 libgobject = []
1222 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225
1226want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001227if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001228 libdbus = dependency('dbus-1',
1229 version : '>= 1.3.2',
1230 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001232else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237
Yu Watanabe42303dc2017-06-18 05:22:32 +09001238default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001239if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001240 default_dnssec = 'no'
1241endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001243 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1244 default_dnssec = 'no'
1245endif
1246conf.set('DEFAULT_DNSSEC_MODE',
1247 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1248substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1249
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001250dns_over_tls = get_option('dns-over-tls')
1251if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001252 if dns_over_tls == 'openssl'
1253 have_gnutls = false
1254 else
1255 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1256 if dns_over_tls == 'gnutls' and not have_gnutls
1257 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1258 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001259 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001260 if dns_over_tls == 'gnutls' or have_gnutls
1261 have_openssl = false
1262 else
1263 have_openssl = conf.get('HAVE_OPENSSL') == 1
1264 if dns_over_tls != 'auto' and not have_openssl
1265 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1266 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1267 endif
1268 endif
1269 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001270else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001271 have = false
1272 have_gnutls = false
1273 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001274endif
1275conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001276conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1277conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001278
Iwan Timmerc9299be2018-06-13 20:26:24 +02001279default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001280if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001281 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001282endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001283if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1284 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 +02001285 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001286endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001287conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1288 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1289substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001290
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001292if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293 have = (conf.get('HAVE_LIBCURL') == 1 and
1294 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001295 conf.get('HAVE_XZ') == 1 and
1296 conf.get('HAVE_GCRYPT') == 1)
1297 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 error('importd support was requested, but dependencies are not available')
1299 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300else
1301 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304
1305want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001306if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001307 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1308 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1310 # it's possible to build one without the other. Complain only if
1311 # support was explictly requested. The auxiliary files like sysusers
1312 # config should be installed when any of the programs are built.
1313 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1314 error('remote support was requested, but dependencies are not available')
1315 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001316 have = have_deps[0] or have_deps[1]
1317else
1318 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001320conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001322foreach term : ['utmp',
1323 'hibernate',
1324 'environment-d',
1325 'binfmt',
1326 'coredump',
1327 'resolve',
1328 'logind',
1329 'hostnamed',
1330 'localed',
1331 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001332 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001333 'networkd',
1334 'timedated',
1335 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001336 'firstboot',
1337 'randomseed',
1338 'backlight',
1339 'vconsole',
1340 'quotacheck',
1341 'sysusers',
1342 'tmpfiles',
1343 'hwdb',
1344 'rfkill',
1345 'ldconfig',
1346 'efi',
1347 'tpm',
1348 'ima',
1349 'smack',
1350 'gshadow',
1351 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001352 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001353 'nss-systemd']
1354 have = get_option(term)
1355 name = 'ENABLE_' + term.underscorify().to_upper()
1356 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357endforeach
1358
Yu Watanabe08540a92018-07-18 09:25:57 +09001359foreach tuple : [['nss-mymachines', 'machined'],
1360 ['nss-resolve', 'resolve']]
1361 want = get_option(tuple[0])
1362 if want != 'false'
1363 have = get_option(tuple[1])
1364 if want == 'true' and not have
1365 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1366 endif
1367 else
1368 have = false
1369 endif
1370 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1371 conf.set10(name, have)
1372endforeach
1373
1374enable_nss = false
1375foreach term : ['ENABLE_NSS_MYHOSTNAME',
1376 'ENABLE_NSS_MYMACHINES',
1377 'ENABLE_NSS_RESOLVE',
1378 'ENABLE_NSS_SYSTEMD']
1379 if conf.get(term) == 1
1380 enable_nss = true
1381 endif
1382endforeach
1383conf.set10('ENABLE_NSS', enable_nss)
1384
Yu Watanabe348b4432018-05-07 18:17:35 +09001385conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001386
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001387tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001388fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001389
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001390conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001391
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001392#####################################################################
1393
1394if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001396
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001397 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001399 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 elif efi_arch == 'x86_64'
1401 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001402 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 elif efi_arch == 'arm'
1404 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001405 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 elif efi_arch == 'aarch64'
1407 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001408 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 else
1410 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001411 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001414 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001416
Yu Watanabeac093402018-05-10 16:04:16 +09001417 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001418else
1419 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001421conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422
1423#####################################################################
1424
1425config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001426 output : 'config.h',
1427 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428
Yu Watanabe348b4432018-05-07 18:17:35 +09001429meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1430
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431includes = include_directories('src/basic',
1432 'src/shared',
1433 'src/systemd',
1434 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001435 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001436 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437 'src/resolve',
1438 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001439 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 'src/login',
1441 'src/udev',
1442 'src/libudev',
1443 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001444 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445 'src/libsystemd/sd-bus',
1446 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001447 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448 'src/libsystemd/sd-hwdb',
1449 'src/libsystemd/sd-id128',
1450 'src/libsystemd/sd-netlink',
1451 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001452 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001454 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455
1456add_project_arguments('-include', 'config.h', language : 'c')
1457
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001458generate_gperfs = find_program('tools/generate-gperfs.py')
1459
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460subdir('po')
1461subdir('catalog')
1462subdir('src/systemd')
1463subdir('src/basic')
1464subdir('src/libsystemd')
1465subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001466subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468
1469libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 'journal-core',
1471 libjournal_core_sources,
1472 journald_gperf_c,
1473 include_directories : includes,
1474 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001475
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001476libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001479 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001480 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 include_directories : includes,
1482 link_args : ['-shared',
1483 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001484 link_with : [libbasic,
1485 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001486 link_whole : [libsystemd_static,
1487 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001488 dependencies : [threads,
1489 librt,
1490 libxz,
1491 liblz4],
1492 link_depends : libsystemd_sym,
1493 install : true,
1494 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495
Davide Cavalca70848ec2018-04-09 02:43:35 -07001496static_libsystemd = get_option('static-libsystemd')
1497static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1498
1499install_libsystemd_static = static_library(
1500 'systemd',
1501 libsystemd_sources,
1502 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001503 basic_sources,
1504 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001505 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001506 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001507 build_by_default : static_libsystemd != 'false',
1508 install : static_libsystemd != 'false',
1509 install_dir : rootlibdir,
1510 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1511 dependencies : [threads,
1512 librt,
1513 libxz,
1514 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001515 libcap,
1516 libblkid,
1517 libmount,
1518 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001519 libgcrypt],
1520 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1521
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522############################################################
1523
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001524# binaries that have --help and are intended for use by humans,
1525# usually, but not always, installed in /bin.
1526public_programs = []
1527
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528subdir('src/libudev')
1529subdir('src/shared')
1530subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001531subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532subdir('src/udev')
1533subdir('src/network')
1534
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001535subdir('src/analyze')
1536subdir('src/journal-remote')
1537subdir('src/coredump')
1538subdir('src/hostname')
1539subdir('src/import')
1540subdir('src/kernel-install')
1541subdir('src/locale')
1542subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001543subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001544subdir('src/nspawn')
1545subdir('src/resolve')
1546subdir('src/timedate')
1547subdir('src/timesync')
1548subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001549subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001550
1551subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001552subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001553subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001554subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001555
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001556############################################################
1557
1558# only static linking apart from libdl, to make sure that the
1559# module is linked to all libraries that it uses.
1560test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 'test-dlopen',
1562 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001563 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 include_directories : includes,
1565 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001566 dependencies : [libdl],
1567 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001568
Yu Watanabe08540a92018-07-18 09:25:57 +09001569foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001570 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001571 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1572 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001573
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001574 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 if condition
1576 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001577
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001579 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 nss = shared_library(
1582 'nss_' + module,
1583 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001584 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 version : '2',
1586 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001587 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1588 link_args : ['-Wl,-z,nodelete',
1589 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 '-Wl,--version-script=' + version_script_arg,
1591 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001592 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 libbasic],
1594 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001595 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 link_depends : sym,
1597 install : true,
1598 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001599
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 # We cannot use shared_module because it does not support version suffix.
1601 # Unfortunately shared_library insists on creating the symlink…
1602 meson.add_install_script('sh', '-c',
1603 'rm $DESTDIR@0@/libnss_@1@.so'
1604 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001605
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001606 if want_tests != 'false'
1607 test('dlopen-nss_' + module,
1608 test_dlopen,
1609 # path to dlopen must include a slash
1610 args : nss.full_path())
1611 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001613endforeach
1614
1615############################################################
1616
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617executable('systemd',
1618 systemd_sources,
1619 include_directories : includes,
1620 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001621 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001622 dependencies : [versiondep,
1623 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001624 librt,
1625 libseccomp,
1626 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001627 libmount,
1628 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001629 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001630 install : true,
1631 install_dir : rootlibexecdir)
1632
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001633meson.add_install_script(meson_make_symlink,
1634 join_paths(rootlibexecdir, 'systemd'),
1635 join_paths(rootsbindir, 'init'))
1636
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001637exe = executable('systemd-analyze',
1638 systemd_analyze_sources,
1639 include_directories : includes,
1640 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001641 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001642 dependencies : [versiondep,
1643 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 librt,
1645 libseccomp,
1646 libselinux,
1647 libmount,
1648 libblkid],
1649 install_rpath : rootlibexecdir,
1650 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001651public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652
1653executable('systemd-journald',
1654 systemd_journald_sources,
1655 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001656 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001657 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658 dependencies : [threads,
1659 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001660 liblz4,
1661 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001662 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663 install : true,
1664 install_dir : rootlibexecdir)
1665
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666exe = executable('systemd-cat',
1667 systemd_cat_sources,
1668 include_directories : includes,
1669 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001670 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001671 dependencies : [threads],
1672 install_rpath : rootlibexecdir,
1673 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001674public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001675
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001676exe = executable('journalctl',
1677 journalctl_sources,
1678 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001679 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 dependencies : [threads,
1681 libqrencode,
1682 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001683 liblz4,
1684 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001685 install_rpath : rootlibexecdir,
1686 install : true,
1687 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001688public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689
1690executable('systemd-getty-generator',
1691 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001693 link_with : [libshared],
1694 install_rpath : rootlibexecdir,
1695 install : true,
1696 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697
1698executable('systemd-debug-generator',
1699 'src/debug-generator/debug-generator.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
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001706executable('systemd-run-generator',
1707 'src/run-generator/run-generator.c',
1708 include_directories : includes,
1709 link_with : [libshared],
1710 install_rpath : rootlibexecdir,
1711 install : true,
1712 install_dir : systemgeneratordir)
1713
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714executable('systemd-fstab-generator',
1715 'src/fstab-generator/fstab-generator.c',
1716 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001718 link_with : [libshared],
1719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('30-systemd-environment-d-generator',
1725 'src/environment-d-generator/environment-d-generator.c',
1726 include_directories : includes,
1727 link_with : [libshared],
1728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001731
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 meson.add_install_script(meson_make_symlink,
1733 join_paths(sysconfdir, 'environment'),
1734 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001735endif
1736
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001737if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 executable('systemd-hibernate-resume-generator',
1739 'src/hibernate-resume/hibernate-resume-generator.c',
1740 include_directories : includes,
1741 link_with : [libshared],
1742 install_rpath : rootlibexecdir,
1743 install : true,
1744 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001745
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 executable('systemd-hibernate-resume',
1747 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001748 include_directories : includes,
1749 link_with : [libshared],
1750 install_rpath : rootlibexecdir,
1751 install : true,
1752 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753endif
1754
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001755if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 executable('systemd-gpt-auto-generator',
1757 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001758 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 dependencies : libblkid,
1762 install_rpath : rootlibexecdir,
1763 install : true,
1764 install_dir : systemgeneratordir)
1765
1766 exe = executable('systemd-dissect',
1767 'src/dissect/dissect.c',
1768 include_directories : includes,
1769 link_with : [libshared],
1770 install_rpath : rootlibexecdir,
1771 install : true,
1772 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001773 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001774endif
1775
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001776if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-resolved',
1778 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001779 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001780 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001781 libbasic_gcrypt,
1782 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001783 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001784 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 install : true,
1786 install_dir : rootlibexecdir)
1787
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001788 exe = executable('resolvectl',
1789 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001791 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001792 libbasic_gcrypt,
1793 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001795 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 libm,
1797 libidn],
1798 install_rpath : rootlibexecdir,
1799 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001800 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001801
1802 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001803 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001804 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001805
1806 meson.add_install_script(meson_make_symlink,
1807 join_paths(bindir, 'resolvectl'),
1808 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 executable('systemd-logind',
1813 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001814 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001816 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001819 install_rpath : rootlibexecdir,
1820 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001822
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 exe = executable('loginctl',
1824 loginctl_sources,
1825 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001826 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 dependencies : [threads,
1828 liblz4,
1829 libxz],
1830 install_rpath : rootlibexecdir,
1831 install : true,
1832 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001833 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001834
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 exe = executable('systemd-inhibit',
1836 'src/login/inhibit.c',
1837 include_directories : includes,
1838 link_with : [libshared],
1839 install_rpath : rootlibexecdir,
1840 install : true,
1841 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001842 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001843
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001844 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001845 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 pam_systemd = shared_library(
1847 'pam_systemd',
1848 pam_systemd_c,
1849 name_prefix : '',
1850 include_directories : includes,
1851 link_args : ['-shared',
1852 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001853 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 libshared_static],
1855 dependencies : [threads,
1856 libpam,
1857 libpam_misc],
1858 link_depends : pam_systemd_sym,
1859 install : true,
1860 install_dir : pamlibdir)
1861
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001862 if want_tests != 'false'
1863 test('dlopen-pam_systemd',
1864 test_dlopen,
1865 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001866 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001867 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001869
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001870 executable('systemd-user-runtime-dir',
1871 user_runtime_dir_sources,
1872 include_directories : includes,
1873 link_with : [libshared],
1874 install_rpath : rootlibexecdir,
1875 install : true,
1876 install_dir : rootlibexecdir)
1877endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001878
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001879if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001880 executable('systemd-user-sessions',
1881 'src/user-sessions/user-sessions.c',
1882 include_directories : includes,
1883 link_with : [libshared],
1884 install_rpath : rootlibexecdir,
1885 install : true,
1886 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 exe = executable('bootctl',
1891 'src/boot/bootctl.c',
1892 include_directories : includes,
1893 link_with : [libshared],
1894 dependencies : [libblkid],
1895 install_rpath : rootlibexecdir,
1896 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001897 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001898
1899 executable('systemd-bless-boot',
1900 'src/boot/bless-boot.c',
1901 include_directories : includes,
1902 link_with : [libshared],
1903 dependencies : [libblkid],
1904 install_rpath : rootlibexecdir,
1905 install : true,
1906 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001907
1908 executable('systemd-bless-boot-generator',
1909 'src/boot/bless-boot-generator.c',
1910 include_directories : includes,
1911 link_with : [libshared],
1912 install_rpath : rootlibexecdir,
1913 install : true,
1914 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001915endif
1916
Lennart Poetteringf876f532018-06-25 16:07:33 +02001917executable('systemd-boot-check-no-failures',
1918 'src/boot/boot-check-no-failures.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [libblkid],
1922 install_rpath : rootlibexecdir,
1923 install : true,
1924 install_dir : rootlibexecdir)
1925
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001926exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1927 include_directories : includes,
1928 link_with : [libshared],
1929 dependencies : [threads],
1930 install_rpath : rootlibexecdir,
1931 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001932public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001933
Felipe Satelerf3794362018-05-22 15:08:57 -04001934
1935if get_option('link-systemctl-shared')
1936 systemctl_link_with = [libshared]
1937else
1938 systemctl_link_with = [libsystemd_static,
1939 libshared_static,
1940 libjournal_client,
1941 libbasic_gcrypt]
1942endif
1943
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001944exe = executable('systemctl', 'src/systemctl/systemctl.c',
1945 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001946 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001947 dependencies : [threads,
1948 libcap,
1949 libselinux,
1950 libxz,
1951 liblz4],
1952 install_rpath : rootlibexecdir,
1953 install : true,
1954 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001955public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001956
Lennart Poettering61d05782018-04-16 21:41:40 +02001957if conf.get('ENABLE_PORTABLED') == 1
1958 executable('systemd-portabled',
1959 systemd_portabled_sources,
1960 include_directories : includes,
1961 link_with : [libshared],
1962 dependencies : [threads],
1963 install_rpath : rootlibexecdir,
1964 install : true,
1965 install_dir : rootlibexecdir)
1966
1967 exe = executable('portablectl', 'src/portable/portablectl.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 dependencies : [threads],
1971 install_rpath : rootlibexecdir,
1972 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001973 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001974 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001975endif
1976
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001977foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1978 meson.add_install_script(meson_make_symlink,
1979 join_paths(rootbindir, 'systemctl'),
1980 join_paths(rootsbindir, alias))
1981endforeach
1982
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001983if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 executable('systemd-backlight',
1985 'src/backlight/backlight.c',
1986 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001987 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001988 install_rpath : rootlibexecdir,
1989 install : true,
1990 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991endif
1992
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001993if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001994 executable('systemd-rfkill',
1995 'src/rfkill/rfkill.c',
1996 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001997 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001endif
2002
2003executable('systemd-system-update-generator',
2004 'src/system-update-generator/system-update-generator.c',
2005 include_directories : includes,
2006 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002007 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008 install : true,
2009 install_dir : systemgeneratordir)
2010
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002011if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 executable('systemd-cryptsetup',
2013 'src/cryptsetup/cryptsetup.c',
2014 include_directories : includes,
2015 link_with : [libshared],
2016 dependencies : [libcryptsetup],
2017 install_rpath : rootlibexecdir,
2018 install : true,
2019 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002020
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 executable('systemd-cryptsetup-generator',
2022 'src/cryptsetup/cryptsetup-generator.c',
2023 include_directories : includes,
2024 link_with : [libshared],
2025 dependencies : [libcryptsetup],
2026 install_rpath : rootlibexecdir,
2027 install : true,
2028 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002029
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 executable('systemd-veritysetup',
2031 'src/veritysetup/veritysetup.c',
2032 include_directories : includes,
2033 link_with : [libshared],
2034 dependencies : [libcryptsetup],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002038
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 executable('systemd-veritysetup-generator',
2040 'src/veritysetup/veritysetup-generator.c',
2041 include_directories : includes,
2042 link_with : [libshared],
2043 dependencies : [libcryptsetup],
2044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002047endif
2048
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002049if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 executable('systemd-sysv-generator',
2051 'src/sysv-generator/sysv-generator.c',
2052 include_directories : includes,
2053 link_with : [libshared],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 executable('systemd-rc-local-generator',
2059 'src/rc-local-generator/rc-local-generator.c',
2060 include_directories : includes,
2061 link_with : [libshared],
2062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002065endif
2066
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002067if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 executable('systemd-hostnamed',
2069 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002070 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002071 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002072 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 install : true,
2074 install_dir : rootlibexecdir)
2075
2076 exe = executable('hostnamectl',
2077 'src/hostname/hostnamectl.c',
2078 include_directories : includes,
2079 link_with : [libshared],
2080 install_rpath : rootlibexecdir,
2081 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002082 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002083endif
2084
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002085if conf.get('ENABLE_LOCALED') == 1
2086 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 # logind will load libxkbcommon.so dynamically on its own
2088 deps = [libdl]
2089 else
2090 deps = []
2091 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002092
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002093 executable('systemd-localed',
2094 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002095 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002096 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002099 install : true,
2100 install_dir : rootlibexecdir)
2101
2102 exe = executable('localectl',
2103 localectl_sources,
2104 include_directories : includes,
2105 link_with : [libshared],
2106 install_rpath : rootlibexecdir,
2107 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002108 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002109endif
2110
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002111if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002112 executable('systemd-timedated',
2113 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002114 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002115 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002119endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002120
Yu Watanabe6129ec82018-05-03 18:07:43 +09002121if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122 exe = executable('timedatectl',
2123 'src/timedate/timedatectl.c',
2124 include_directories : includes,
2125 install_rpath : rootlibexecdir,
2126 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002127 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002129 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130endif
2131
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002132if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002133 executable('systemd-timesyncd',
2134 systemd_timesyncd_sources,
2135 include_directories : includes,
2136 link_with : [libshared],
2137 dependencies : [threads,
2138 libm],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002142
2143 executable('systemd-time-wait-sync',
2144 'src/time-wait-sync/time-wait-sync.c',
2145 include_directories : includes,
2146 link_with : [libshared],
2147 install_rpath : rootlibexecdir,
2148 install : true,
2149 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150endif
2151
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002152if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002153 executable('systemd-machined',
2154 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002155 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002156 link_with : [libmachine_core,
2157 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158 install_rpath : rootlibexecdir,
2159 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 install_dir : rootlibexecdir)
2161
2162 exe = executable('machinectl',
2163 'src/machine/machinectl.c',
2164 include_directories : includes,
2165 link_with : [libshared],
2166 dependencies : [threads,
2167 libxz,
2168 liblz4],
2169 install_rpath : rootlibexecdir,
2170 install : true,
2171 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002172 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002173endif
2174
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002175if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002176 executable('systemd-importd',
2177 systemd_importd_sources,
2178 include_directories : includes,
2179 link_with : [libshared],
2180 dependencies : [threads],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002184
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002185 systemd_pull = executable('systemd-pull',
2186 systemd_pull_sources,
2187 include_directories : includes,
2188 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002189 dependencies : [versiondep,
2190 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002191 libz,
2192 libbzip2,
2193 libxz,
2194 libgcrypt],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 systemd_import = executable('systemd-import',
2200 systemd_import_sources,
2201 include_directories : includes,
2202 link_with : [libshared],
2203 dependencies : [libcurl,
2204 libz,
2205 libbzip2,
2206 libxz],
2207 install_rpath : rootlibexecdir,
2208 install : true,
2209 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002211 systemd_import_fs = executable('systemd-import-fs',
2212 systemd_import_fs_sources,
2213 include_directories : includes,
2214 link_with : [libshared],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootlibexecdir)
2218
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 systemd_export = executable('systemd-export',
2220 systemd_export_sources,
2221 include_directories : includes,
2222 link_with : [libshared],
2223 dependencies : [libcurl,
2224 libz,
2225 libbzip2,
2226 libxz],
2227 install_rpath : rootlibexecdir,
2228 install : true,
2229 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002230
2231 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232endif
2233
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002234if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 exe = executable('systemd-journal-upload',
2236 systemd_journal_upload_sources,
2237 include_directories : includes,
2238 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002239 dependencies : [versiondep,
2240 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 libcurl,
2242 libgnutls,
2243 libxz,
2244 liblz4],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002248 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249endif
2250
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002251if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002252 s_j_remote = executable('systemd-journal-remote',
2253 systemd_journal_remote_sources,
2254 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002255 link_with : [libshared,
2256 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002257 dependencies : [threads,
2258 libmicrohttpd,
2259 libgnutls,
2260 libxz,
2261 liblz4],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 s_j_gatewayd = executable('systemd-journal-gatewayd',
2267 systemd_journal_gatewayd_sources,
2268 include_directories : includes,
2269 link_with : [libshared],
2270 dependencies : [threads,
2271 libmicrohttpd,
2272 libgnutls,
2273 libxz,
2274 liblz4],
2275 install_rpath : rootlibexecdir,
2276 install : true,
2277 install_dir : rootlibexecdir)
2278 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279endif
2280
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002281if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002282 executable('systemd-coredump',
2283 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002285 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 libacl,
2288 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 libxz,
2290 liblz4],
2291 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002292 install : true,
2293 install_dir : rootlibexecdir)
2294
2295 exe = executable('coredumpctl',
2296 coredumpctl_sources,
2297 include_directories : includes,
2298 link_with : [libshared],
2299 dependencies : [threads,
2300 libxz,
2301 liblz4],
2302 install_rpath : rootlibexecdir,
2303 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002304 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002305endif
2306
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002307if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308 exe = executable('systemd-binfmt',
2309 'src/binfmt/binfmt.c',
2310 include_directories : includes,
2311 link_with : [libshared],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002315 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316
2317 meson.add_install_script('sh', '-c',
2318 mkdir_p.format(binfmtdir))
2319 meson.add_install_script('sh', '-c',
2320 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 executable('systemd-vconsole-setup',
2325 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002326 include_directories : includes,
2327 link_with : [libshared],
2328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331endif
2332
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002333if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 executable('systemd-random-seed',
2335 'src/random-seed/random-seed.c',
2336 include_directories : includes,
2337 link_with : [libshared],
2338 install_rpath : rootlibexecdir,
2339 install : true,
2340 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002341endif
2342
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002343if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002344 executable('systemd-firstboot',
2345 'src/firstboot/firstboot.c',
2346 include_directories : includes,
2347 link_with : [libshared],
2348 dependencies : [libcrypt],
2349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002352endif
2353
2354executable('systemd-remount-fs',
2355 'src/remount-fs/remount-fs.c',
2356 'src/core/mount-setup.c',
2357 'src/core/mount-setup.h',
2358 include_directories : includes,
2359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002360 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361 install : true,
2362 install_dir : rootlibexecdir)
2363
2364executable('systemd-machine-id-setup',
2365 'src/machine-id-setup/machine-id-setup-main.c',
2366 'src/core/machine-id-setup.c',
2367 'src/core/machine-id-setup.h',
2368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002370 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371 install : true,
2372 install_dir : rootbindir)
2373
2374executable('systemd-fsck',
2375 'src/fsck/fsck.c',
2376 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002377 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002378 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002379 install : true,
2380 install_dir : rootlibexecdir)
2381
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002382executable('systemd-growfs',
2383 'src/partition/growfs.c',
2384 include_directories : includes,
2385 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002386 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
2390
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002391executable('systemd-makefs',
2392 'src/partition/makefs.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootlibexecdir)
2398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399executable('systemd-sleep',
2400 'src/sleep/sleep.c',
2401 include_directories : includes,
2402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002403 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404 install : true,
2405 install_dir : rootlibexecdir)
2406
Yu Watanabed25e1272019-01-03 02:32:57 +09002407install_data('src/sleep/sleep.conf',
2408 install_dir : pkgsysconfdir)
2409
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002410exe = executable('systemd-sysctl',
2411 'src/sysctl/sysctl.c',
2412 include_directories : includes,
2413 link_with : [libshared],
2414 install_rpath : rootlibexecdir,
2415 install : true,
2416 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002417public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
2419executable('systemd-ac-power',
2420 'src/ac-power/ac-power.c',
2421 include_directories : includes,
2422 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002423 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002424 install : true,
2425 install_dir : rootlibexecdir)
2426
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002427exe = executable('systemd-detect-virt',
2428 'src/detect-virt/detect-virt.c',
2429 include_directories : includes,
2430 link_with : [libshared],
2431 install_rpath : rootlibexecdir,
2432 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002433public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002434
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435exe = executable('systemd-delta',
2436 'src/delta/delta.c',
2437 include_directories : includes,
2438 link_with : [libshared],
2439 install_rpath : rootlibexecdir,
2440 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002441public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002443exe = executable('systemd-escape',
2444 'src/escape/escape.c',
2445 include_directories : includes,
2446 link_with : [libshared],
2447 install_rpath : rootlibexecdir,
2448 install : true,
2449 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002450public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002451
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002452exe = executable('systemd-notify',
2453 'src/notify/notify.c',
2454 include_directories : includes,
2455 link_with : [libshared],
2456 install_rpath : rootlibexecdir,
2457 install : true,
2458 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002459public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460
2461executable('systemd-volatile-root',
2462 'src/volatile-root/volatile-root.c',
2463 include_directories : includes,
2464 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002465 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002466 install : true,
2467 install_dir : rootlibexecdir)
2468
2469executable('systemd-cgroups-agent',
2470 'src/cgroups-agent/cgroups-agent.c',
2471 include_directories : includes,
2472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002473 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474 install : true,
2475 install_dir : rootlibexecdir)
2476
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002477exe = executable('systemd-id128',
2478 'src/id128/id128.c',
2479 include_directories : includes,
2480 link_with : [libshared],
2481 install_rpath : rootlibexecdir,
2482 install : true)
2483public_programs += exe
2484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002485exe = executable('systemd-path',
2486 'src/path/path.c',
2487 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002488 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489 install_rpath : rootlibexecdir,
2490 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002491public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002492
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493exe = executable('systemd-ask-password',
2494 'src/ask-password/ask-password.c',
2495 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002496 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002497 install_rpath : rootlibexecdir,
2498 install : true,
2499 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002500public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002501
2502executable('systemd-reply-password',
2503 'src/reply-password/reply-password.c',
2504 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002505 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002506 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002507 install : true,
2508 install_dir : rootlibexecdir)
2509
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510exe = executable('systemd-tty-ask-password-agent',
2511 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2512 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002513 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514 install_rpath : rootlibexecdir,
2515 install : true,
2516 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002517public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002518
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519exe = executable('systemd-cgls',
2520 'src/cgls/cgls.c',
2521 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002522 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523 install_rpath : rootlibexecdir,
2524 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002525public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527exe = executable('systemd-cgtop',
2528 'src/cgtop/cgtop.c',
2529 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002530 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002531 install_rpath : rootlibexecdir,
2532 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002533public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534
2535executable('systemd-initctl',
2536 'src/initctl/initctl.c',
2537 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002538 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002539 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540 install : true,
2541 install_dir : rootlibexecdir)
2542
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002543exe = executable('systemd-mount',
2544 'src/mount/mount-tool.c',
2545 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002546 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002547 install_rpath : rootlibexecdir,
2548 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002549public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002550
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002551meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002552 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002553
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002554exe = executable('systemd-run',
2555 'src/run/run.c',
2556 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002558 install_rpath : rootlibexecdir,
2559 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002560public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002561
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562exe = executable('systemd-stdio-bridge',
2563 'src/stdio-bridge/stdio-bridge.c',
2564 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002565 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002566 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002567 install_rpath : rootlibexecdir,
2568 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002569public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002570
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002571exe = executable('busctl',
2572 'src/busctl/busctl.c',
2573 'src/busctl/busctl-introspect.c',
2574 'src/busctl/busctl-introspect.h',
2575 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002576 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002577 install_rpath : rootlibexecdir,
2578 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002579public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002581if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002582 exe = executable('systemd-sysusers',
2583 'src/sysusers/sysusers.c',
2584 include_directories : includes,
2585 link_with : [libshared],
2586 install_rpath : rootlibexecdir,
2587 install : true,
2588 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002589 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002590endif
2591
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002592if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002593 exe = executable('systemd-tmpfiles',
2594 'src/tmpfiles/tmpfiles.c',
2595 include_directories : includes,
2596 link_with : [libshared],
2597 dependencies : [libacl],
2598 install_rpath : rootlibexecdir,
2599 install : true,
2600 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002601 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002602
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002603 if want_tests != 'false'
2604 test('test-systemd-tmpfiles',
2605 test_systemd_tmpfiles_py,
2606 # https://github.com/mesonbuild/meson/issues/2681
2607 args : exe.full_path())
2608 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609endif
2610
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002611if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002612 exe = executable('systemd-hwdb',
2613 'src/hwdb/hwdb.c',
2614 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2615 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002616 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002617 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002618 install : true,
2619 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002620 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002621endif
2622
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002623if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002624 executable('systemd-quotacheck',
2625 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002627 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628 install_rpath : rootlibexecdir,
2629 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002630 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631endif
2632
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002633exe = executable('systemd-socket-proxyd',
2634 'src/socket-proxy/socket-proxyd.c',
2635 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002636 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002637 dependencies : [threads],
2638 install_rpath : rootlibexecdir,
2639 install : true,
2640 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002641public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643exe = executable('systemd-udevd',
2644 systemd_udevd_sources,
2645 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002646 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002649 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002650 dependencies : [versiondep,
2651 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002652 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002653 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002654 libacl,
2655 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002656 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002657 install : true,
2658 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002659public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661exe = executable('udevadm',
2662 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002663 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002664 include_directories : includes,
2665 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002667 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002668 dependencies : [versiondep,
2669 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002670 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002671 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002672 libacl,
2673 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002674 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002675 install : true,
2676 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002677public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678
2679executable('systemd-shutdown',
2680 systemd_shutdown_sources,
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01002681 'src/core/mount-setup.c',
2682 'src/core/mount-setup.h',
2683 'src/core/killall.c',
2684 'src/core/killall.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002685 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002687 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002688 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689 install : true,
2690 install_dir : rootlibexecdir)
2691
2692executable('systemd-update-done',
2693 'src/update-done/update-done.c',
2694 include_directories : includes,
2695 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002696 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002697 install : true,
2698 install_dir : rootlibexecdir)
2699
2700executable('systemd-update-utmp',
2701 'src/update-utmp/update-utmp.c',
2702 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002703 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002704 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002705 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706 install : true,
2707 install_dir : rootlibexecdir)
2708
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002709if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 executable('systemd-modules-load',
2711 'src/modules-load/modules-load.c',
2712 include_directories : includes,
2713 link_with : [libshared],
2714 dependencies : [libkmod],
2715 install_rpath : rootlibexecdir,
2716 install : true,
2717 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002718
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 meson.add_install_script('sh', '-c',
2720 mkdir_p.format(modulesloaddir))
2721 meson.add_install_script('sh', '-c',
2722 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723endif
2724
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002725exe = executable('systemd-nspawn',
2726 systemd_nspawn_sources,
2727 'src/core/mount-setup.c', # FIXME: use a variable?
2728 'src/core/mount-setup.h',
2729 'src/core/loopback-setup.c',
2730 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002731 include_directories : includes,
2732 link_with : [libnspawn_core,
2733 libshared],
2734 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002735 install_rpath : rootlibexecdir,
2736 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002737public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002739if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002740 executable('systemd-networkd',
2741 systemd_networkd_sources,
2742 include_directories : includes,
2743 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002744 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002745 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002747 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 install_rpath : rootlibexecdir,
2749 install : true,
2750 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002751
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002752 executable('systemd-networkd-wait-online',
2753 systemd_networkd_wait_online_sources,
2754 include_directories : includes,
2755 link_with : [libnetworkd_core,
2756 libshared],
2757 install_rpath : rootlibexecdir,
2758 install : true,
2759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002760
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002761 exe = executable('networkctl',
2762 networkctl_sources,
2763 include_directories : includes,
2764 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002765 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002766 install_rpath : rootlibexecdir,
2767 install : true,
2768 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002769 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002770endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002771
2772executable('systemd-sulogin-shell',
2773 ['src/sulogin-shell/sulogin-shell.c'],
2774 include_directories : includes,
2775 link_with : [libshared],
2776 install_rpath : rootlibexecdir,
2777 install : true,
2778 install_dir : rootlibexecdir)
2779
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002780############################################################
2781
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002782custom_target(
2783 'systemd-runtest.env',
2784 output : 'systemd-runtest.env',
2785 command : ['sh', '-c', '{ ' +
2786 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002787 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002788 '} >@OUTPUT@'],
2789 build_by_default : true)
2790
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002791foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002792 sources = tuple[0]
2793 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2794 dependencies = tuple[2]
2795 condition = tuple.length() >= 4 ? tuple[3] : ''
2796 type = tuple.length() >= 5 ? tuple[4] : ''
2797 defs = tuple.length() >= 6 ? tuple[5] : []
2798 incs = tuple.length() >= 7 ? tuple[6] : includes
2799 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002800
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002801 name = sources[0].split('/')[-1].split('.')[0]
2802 if type.startswith('timeout=')
2803 timeout = type.split('=')[1].to_int()
2804 type = ''
2805 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002806
2807 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 exe = executable(
2809 name,
2810 sources,
2811 include_directories : incs,
2812 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002813 dependencies : [versiondep,
2814 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002815 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002816 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002818 install : install_tests,
2819 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002820
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002821 if type == 'manual'
2822 message('@0@ is a manual test'.format(name))
2823 elif type == 'unsafe' and want_tests != 'unsafe'
2824 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002825 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002826 test(name, exe,
2827 env : test_env,
2828 timeout : timeout)
2829 endif
2830 else
2831 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2832 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002833endforeach
2834
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002835exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002836 'test-libsystemd-sym',
2837 test_libsystemd_sym_c,
2838 include_directories : includes,
2839 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002840 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002841 install : install_tests,
2842 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002843if want_tests != 'false'
2844 test('test-libsystemd-sym', exe)
2845endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002846
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002847exe = executable(
2848 'test-libsystemd-static-sym',
2849 test_libsystemd_sym_c,
2850 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002851 link_with : [install_libsystemd_static],
2852 dependencies : [threads], # threads is already included in dependencies on the library,
2853 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002854 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002855 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002856 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002857if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002858 test('test-libsystemd-static-sym', exe)
2859endif
2860
2861exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002862 'test-libudev-sym',
2863 test_libudev_sym_c,
2864 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002865 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002866 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002867 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002868 install : install_tests,
2869 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002870if want_tests != 'false'
2871 test('test-libudev-sym', exe)
2872endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002873
2874exe = executable(
2875 'test-libudev-static-sym',
2876 test_libudev_sym_c,
2877 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002878 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002879 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002880 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002881 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002882 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002883if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002884 test('test-libudev-static-sym', exe)
2885endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002886
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002887############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002888
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002889fuzzer_exes = []
2890
Michael Olbrich59967402018-11-11 11:27:35 +01002891if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002892foreach tuple : fuzzers
2893 sources = tuple[0]
2894 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2895 dependencies = tuple[2]
2896 defs = tuple.length() >= 4 ? tuple[3] : []
2897 incs = tuple.length() >= 5 ? tuple[4] : includes
2898
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002899 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002900 dependencies += fuzzing_engine
2901 else
2902 sources += 'src/fuzz/fuzz-main.c'
2903 endif
2904
2905 name = sources[0].split('/')[-1].split('.')[0]
2906
2907 fuzzer_exes += executable(
2908 name,
2909 sources,
2910 include_directories : [incs, include_directories('src/fuzz')],
2911 link_with : link_with,
2912 dependencies : dependencies,
2913 c_args : defs,
2914 install : false)
2915endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002916endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002917
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002918run_target('fuzzers',
2919 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002920 command : ['true'])
2921
2922############################################################
2923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002924make_directive_index_py = find_program('tools/make-directive-index.py')
2925make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002926xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002927hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002928
2929subdir('units')
2930subdir('sysctl.d')
2931subdir('sysusers.d')
2932subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002933subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002934subdir('hwdb')
2935subdir('network')
2936subdir('man')
2937subdir('shell-completion/bash')
2938subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002939subdir('docs/sysvinit')
2940subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002942install_subdir('factory/etc',
2943 install_dir : factorydir)
2944
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002945install_data('xorg/50-systemd-user.sh',
2946 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002947install_data('modprobe.d/systemd.conf',
2948 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002949install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002950 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002951 'NEWS',
2952 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302953 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002954 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002955 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302956 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002957 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002958 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002959 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002960 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2961 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002962
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002963meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2964meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2965
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002966############################################################
2967
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002968meson_check_help = find_program('tools/meson-check-help.sh')
2969
2970foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002971 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002972 if want_tests != 'false'
2973 test('check-help-' + name,
2974 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002975 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002976 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002977endforeach
2978
2979############################################################
2980
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002981# Enable tests for all supported sanitizers
2982foreach tuple : sanitizers
2983 sanitizer = tuple[0]
2984 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002985
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002986 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002987 prev = ''
2988 foreach p : fuzz_regression_tests
2989 b = p.split('/')[-2]
2990 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002991
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002992 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002993
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002994 if name != prev
2995 if want_tests == 'false'
2996 message('Not compiling @0@ because tests is set to false'.format(name))
2997 elif slow_tests
2998 exe = custom_target(
2999 name,
3000 output : name,
3001 depends : build,
3002 command : [env, 'ln', '-fs',
3003 join_paths(build.full_path(), b),
3004 '@OUTPUT@'],
3005 build_by_default : true)
3006 else
3007 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3008 endif
3009 endif
3010 prev = name
3011
3012 if want_tests != 'false' and slow_tests
3013 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3014 env,
3015 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02003016 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003017 endif
3018 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003019 endif
3020endforeach
3021
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003022
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003023############################################################
3024
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003025if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003026 all_files = run_command(
3027 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003028 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003029 'ls-files',
3030 ':/*.[ch]'])
3031 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003032
userwithuide85a6902017-08-09 13:41:44 +00003033 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003034 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003035 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003036 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003037 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003038 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003039 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003040endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003041
3042if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003043 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003044 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003045 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003046 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003047endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003048
3049if git.found()
3050 git_head = run_command(
3051 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003052 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003053 'rev-parse', 'HEAD']).stdout().strip()
3054 git_head_short = run_command(
3055 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003056 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003057 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3058
3059 run_target(
3060 'git-snapshot',
3061 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003062 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003063 git_head_short),
3064 '--prefix', 'systemd-@0@/'.format(git_head),
3065 'HEAD'])
3066endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003067
3068############################################################
3069
Lennart Poettering51b13862017-12-20 12:51:14 +01003070meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3071run_target(
3072 'check-api-docs',
3073 depends : [man, libsystemd, libudev],
3074 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3075
3076############################################################
3077
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078status = [
3079 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3080
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003081 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003082 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003083 'prefix directory: @0@'.format(prefixdir),
3084 'rootprefix directory: @0@'.format(rootprefixdir),
3085 'sysconf directory: @0@'.format(sysconfdir),
3086 'include directory: @0@'.format(includedir),
3087 'lib directory: @0@'.format(libdir),
3088 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003089 'SysV init scripts: @0@'.format(sysvinit_path),
3090 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003091 'PAM modules directory: @0@'.format(pamlibdir),
3092 'PAM configuration directory: @0@'.format(pamconfdir),
3093 'RPM macros directory: @0@'.format(rpmmacrosdir),
3094 'modprobe.d directory: @0@'.format(modprobedir),
3095 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3096 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3097 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3098 'bash completions directory: @0@'.format(bashcompletiondir),
3099 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100 'extra start script: @0@'.format(get_option('rc-local')),
3101 'extra stop script: @0@'.format(get_option('halt-local')),
3102 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3103 get_option('debug-tty')),
3104 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003105 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'maximum system UID: @0@'.format(system_uid_max),
3107 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003108 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3109 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3110 'minimum container UID base: @0@'.format(container_uid_base_min),
3111 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003112 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003113 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003114 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003115 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003116 'nobody user name: @0@'.format(nobody_user),
3117 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003119 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120
3121 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003122 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003123 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003124 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003125 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3126 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003127
3128alt_dns_servers = '\n '.join(dns_servers.split(' '))
3129alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3130status += [
3131 'default DNS servers: @0@'.format(alt_dns_servers),
3132 'default NTP servers: @0@'.format(alt_ntp_servers)]
3133
3134alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3135 '@@0@'.format(time_epoch)).stdout().strip()
3136status += [
3137 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3138
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003139status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003140 'static libsystemd: @0@'.format(static_libsystemd),
3141 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003142
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003143# TODO:
3144# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3145# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3146# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3147
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003148if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003149 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003150
3151 if have_gnu_efi
3152 status += [
3153 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003154 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003155 'EFI lib directory: @0@'.format(efi_libdir),
3156 'EFI lds directory: @0@'.format(efi_ldsdir),
3157 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003158 endif
3159endif
3160
3161found = []
3162missing = []
3163
3164foreach tuple : [
3165 ['libcryptsetup'],
3166 ['PAM'],
3167 ['AUDIT'],
3168 ['IMA'],
3169 ['AppArmor'],
3170 ['SELinux'],
3171 ['SECCOMP'],
3172 ['SMACK'],
3173 ['zlib'],
3174 ['xz'],
3175 ['lz4'],
3176 ['bzip2'],
3177 ['ACL'],
3178 ['gcrypt'],
3179 ['qrencode'],
3180 ['microhttpd'],
3181 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003182 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003183 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003184 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003185 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003186 ['libidn'],
3187 ['libiptc'],
3188 ['elfutils'],
3189 ['binfmt'],
3190 ['vconsole'],
3191 ['quotacheck'],
3192 ['tmpfiles'],
3193 ['environment.d'],
3194 ['sysusers'],
3195 ['firstboot'],
3196 ['randomseed'],
3197 ['backlight'],
3198 ['rfkill'],
3199 ['logind'],
3200 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003201 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003202 ['importd'],
3203 ['hostnamed'],
3204 ['timedated'],
3205 ['timesyncd'],
3206 ['localed'],
3207 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003208 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003209 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3210 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003211 ['coredump'],
3212 ['polkit'],
3213 ['legacy pkla', install_polkit_pkla],
3214 ['efi'],
3215 ['gnu-efi', have_gnu_efi],
3216 ['kmod'],
3217 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003218 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003219 ['blkid'],
3220 ['dbus'],
3221 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003222 ['nss-myhostname'],
3223 ['nss-mymachines'],
3224 ['nss-resolve'],
3225 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226 ['hwdb'],
3227 ['tpm'],
3228 ['man pages', want_man],
3229 ['html pages', want_html],
3230 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 ['SysV compat'],
3232 ['utmp'],
3233 ['ldconfig'],
3234 ['hibernate'],
3235 ['adm group', get_option('adm-group')],
3236 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003237 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238 ['debug hashmap'],
3239 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003240 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003241 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003242 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003243 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003244 ['link-udev-shared', get_option('link-udev-shared')],
3245 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246]
3247
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003248 if tuple.length() >= 2
3249 cond = tuple[1]
3250 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003251 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3252 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003253 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003254 endif
3255 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003256 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003257 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003258 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003259 endif
3260endforeach
3261
3262status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003263 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003264 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003265 '',
3266 'disabled features: @0@'.format(', '.join(missing)),
3267 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003268message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003269
3270if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003271 warning('\n' +
3272 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3273 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3274 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003275endif