blob: 82ecb4d0e69ba61a8c3717c90229034f86624730 [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-Szmek3131bfe2017-04-10 19:06:45 -0400237substs.set('exec_prefix', prefixdir)
238substs.set('libdir', libdir)
239substs.set('rootlibdir', rootlibdir)
240substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400241substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400242substs.set('bindir', bindir)
243substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('rootlibexecdir', rootlibexecdir)
245substs.set('systemunitdir', systemunitdir)
246substs.set('userunitdir', userunitdir)
247substs.set('systempresetdir', systempresetdir)
248substs.set('userpresetdir', userpresetdir)
249substs.set('udevhwdbdir', udevhwdbdir)
250substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400251substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200252substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('catalogdir', catalogdir)
254substs.set('tmpfilesdir', tmpfilesdir)
255substs.set('sysusersdir', sysusersdir)
256substs.set('sysctldir', sysctldir)
257substs.set('binfmtdir', binfmtdir)
258substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200259substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400260substs.set('systemgeneratordir', systemgeneratordir)
261substs.set('usergeneratordir', usergeneratordir)
262substs.set('systemenvgeneratordir', systemenvgeneratordir)
263substs.set('userenvgeneratordir', userenvgeneratordir)
264substs.set('systemshutdowndir', systemshutdowndir)
265substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400266substs.set('VARLOGDIR', varlogdir)
267substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400268substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
269substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400270substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
271substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
272substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
273substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100274substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200275substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400276
277#####################################################################
278
279cc = meson.get_compiler('c')
280pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400281check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100282meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400283
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200284want_tests = get_option('tests')
285slow_tests = want_tests != 'false' and get_option('slow-tests')
286install_tests = get_option('install-tests')
287
James Hilliard46e63a22018-12-27 09:16:20 +0800288if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200289 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200290 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200291else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200292 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400293endif
294
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500295if want_libfuzzer
296 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200297elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500298 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
299endif
300
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900301possible_cc_flags = [
302 '-Wextra',
303 '-Werror=undef',
304 '-Wlogical-op',
305 '-Wmissing-include-dirs',
306 '-Wold-style-definition',
307 '-Wpointer-arith',
308 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900309 '-Wfloat-equal',
310 '-Wsuggest-attribute=noreturn',
311 '-Werror=missing-prototypes',
312 '-Werror=implicit-function-declaration',
313 '-Werror=missing-declarations',
314 '-Werror=return-type',
315 '-Werror=incompatible-pointer-types',
316 '-Werror=format=2',
317 '-Wstrict-prototypes',
318 '-Wredundant-decls',
319 '-Wmissing-noreturn',
320 '-Wimplicit-fallthrough=5',
321 '-Wshadow',
322 '-Wendif-labels',
323 '-Wstrict-aliasing=2',
324 '-Wwrite-strings',
325 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200326 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200327 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900328 '-Wdate-time',
329 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700330
331 # negative arguments are correctly detected starting with meson 0.46.
332 '-Wno-unused-parameter',
333 '-Wno-missing-field-initializers',
334 '-Wno-unused-result',
335 '-Wno-format-signedness',
336
337 # work-around for gcc 7.1 turning this on on its own.
338 '-Wno-error=nonnull',
339
340 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
341 # optimizations enabled, producing essentially false positives.
342 '-Wno-maybe-uninitialized',
343
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 '-ffast-math',
345 '-fno-common',
346 '-fdiagnostics-show-option',
347 '-fno-strict-aliasing',
348 '-fvisibility=hidden',
349 '-fstack-protector',
350 '-fstack-protector-strong',
351 '--param=ssp-buffer-size=4',
352]
353
354# --as-needed and --no-undefined are provided by meson by default,
355# run mesonconf to see what is enabled
356possible_link_flags = [
357 '-Wl,-z,relro',
358 '-Wl,-z,now',
359]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400360
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900361if cc.get_id() == 'clang'
362 possible_cc_flags += [
363 '-Wno-typedef-redefinition',
364 '-Wno-gnu-variable-sized-type-not-at-end',
365 ]
366endif
367
368if get_option('buildtype') != 'debug'
369 possible_cc_flags += [
370 '-ffunction-sections',
371 '-fdata-sections',
372 ]
373
374 possible_link_flags += '-Wl,--gc-sections'
375endif
376
377add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900378add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900379
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800380if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381 #include <time.h>
382 #include <inttypes.h>
383 typedef uint64_t usec_t;
384 usec_t now(clockid_t clock);
385 int main(void) {
386 struct timespec now;
387 return 0;
388 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100389''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400390 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391endif
392
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200393cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395#####################################################################
396# compilation result tests
397
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400398conf.set('_GNU_SOURCE', true)
399conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400
401conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
402conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
403conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
404conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
405conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
407conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
408
409decl_headers = '''
410#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100411#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400412'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400413
414foreach decl : ['char16_t',
415 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100416 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400417 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400418
419 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200420 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
421
422 if decl == 'struct statx'
423 if have
424 want_linux_stat_h = false
425 else
426 have = cc.sizeof(decl,
427 prefix : decl_headers + '#include <linux/stat.h>',
428 args : '-D_GNU_SOURCE') > 0
429 want_linux_stat_h = have
430 endif
431 endif
432
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200433 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400434endforeach
435
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200436conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700437
Yu Watanabe9714c022018-12-02 16:27:02 +0100438foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900439 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
440 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
441 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
442 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
443 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100444 ['FRA_TUN_ID', 'linux/fib_rules.h'],
445 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100446 ['FRA_PAD', 'linux/fib_rules.h'],
447 ['FRA_L3MDEV', 'linux/fib_rules.h'],
448 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
449 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
450 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
451 ['FOU_CMD_GET', 'linux/fou.h'],
452 ['IFA_FLAGS', 'linux/if_addr.h'],
453 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
454 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
455 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
456 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
457 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
458 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
459 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
460 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
461 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
462 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
463 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
464 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
465 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
466 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
467 ['IFLA_PAD', 'linux/if_link.h'],
468 ['IFLA_XDP', 'linux/if_link.h'],
469 ['IFLA_EVENT', 'linux/if_link.h'],
470 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
471 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
472 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
473 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100474 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100475 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
476 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
477 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
478 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
479 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
480 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
481 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
482 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
483 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
484 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
485 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
486 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
487 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
488 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
489 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
490 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
491 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
492 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
493 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
494 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
495 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
496 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
497 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
498 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
499 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
500 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
501 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
502 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
503 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
504 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
505 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
506 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
507 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
508 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
509 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
510 # if_tunnel.h is buggy and cannot be included on its own
511 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
512 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
513 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
514 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
515 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
516 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
517 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
518 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
519 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
520 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
521 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400522 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400523 prefix = decl.length() > 2 ? decl[2] : ''
524 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526endforeach
527
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200529 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530endforeach
531
532foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100533 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100534 ['gettid', '''#include <sys/types.h>
535 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100536 ['pivot_root', '''#include <stdlib.h>
537 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400539 #include <sys/stat.h>
540 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100541 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100542 ['renameat2', '''#include <stdio.h>
543 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 ['kcmp', '''#include <linux/kcmp.h>'''],
545 ['keyctl', '''#include <sys/types.h>
546 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100547 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400548 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200549 ['bpf', '''#include <sys/syscall.h>
550 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100551 ['statx', '''#include <sys/types.h>
552 #include <sys/stat.h>
553 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100554 ['explicit_bzero' , '''#include <string.h>'''],
555 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400556]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557
Lennart Poettering85db59b2017-12-25 12:01:14 +0100558 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200559 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560endforeach
561
Lennart Poettering85db59b2017-12-25 12:01:14 +0100562if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200563 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200564 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400565else
566 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200567 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200568 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400569endif
570
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571#####################################################################
572
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100573vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100574 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100575 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100576 meson.project_version()]
577
Louis Taylord1084aa2019-01-21 21:45:36 +0000578version_h = vcs_tag(
579 input : 'src/version/version.h.in',
580 output : 'version.h',
581 command: vcs_tagger)
582
583versiondep = declare_dependency(sources: version_h)
584
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400587m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400589git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100590env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100591perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400593meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400594mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400595test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
596splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400597
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
599# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500600progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602 ['kmod', '/usr/bin/kmod' ],
603 ['kexec', '/usr/sbin/kexec' ],
604 ['sulogin', '/usr/sbin/sulogin' ],
605 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
606 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
607 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
608 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
609 ]
610foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400611 path = get_option(prog[0] + '-path')
612 if path != ''
613 message('Using @1@ for @0@'.format(prog[0], path))
614 else
615 exe = find_program(prog[0],
616 '/usr/sbin/' + prog[0],
617 '/sbin/' + prog[0],
618 required: false)
619 path = exe.found() ? exe.path() : prog[1]
620 endif
621 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
622 conf.set_quoted(name, path)
623 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endforeach
625
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500626conf.set_quoted('TELINIT', get_option('telinit-path'))
627
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400628if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100629 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400630endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631
632############################################################
633
634gperf = find_program('gperf')
635
636gperf_test_format = '''
637#include <string.h>
638const char * in_word_set(const char *, @0@);
639@1@
640'''
641gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
642gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
643gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
644if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400645 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
648 if cc.compiles(gperf_test)
649 gperf_len_type = 'unsigned'
650 else
651 error('unable to determine gperf len type')
652 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400653endif
654message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655conf.set('GPERF_LEN_TYPE', gperf_len_type,
656 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657
658############################################################
659
660if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100663foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100664 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900665 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666 'linux/memfd.h',
667 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100668 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200669 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670 'valgrind/memcheck.h',
671 'valgrind/valgrind.h',
672 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400673
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200674 conf.set10('HAVE_' + header.underscorify().to_upper(),
675 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676endforeach
677
678############################################################
679
680conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400681conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
682gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400683
684default_hierarchy = get_option('default-hierarchy')
685conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
686 description : 'default cgroup hierarchy as string')
687if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400688 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693endif
694
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100695default_net_naming_scheme = get_option('default-net-naming-scheme')
696conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
697
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900699if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400700 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900701 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703conf.set('TIME_EPOCH', time_epoch)
704
705system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900706if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400707 system_uid_max = run_command(
708 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800709 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
710 '/etc/login.defs').stdout().strip()
711 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900712 system_uid_max = 999
713 else
714 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800715 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400716endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400717conf.set('SYSTEM_UID_MAX', system_uid_max)
718substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400719
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900721if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400722 system_gid_max = run_command(
723 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800724 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
725 '/etc/login.defs').stdout().strip()
726 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900727 system_gid_max = 999
728 else
729 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800730 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400731endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732conf.set('SYSTEM_GID_MAX', system_gid_max)
733substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734
Yu Watanabeac093402018-05-10 16:04:16 +0900735dynamic_uid_min = get_option('dynamic-uid-min')
736dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100737conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
738conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
739substs.set('dynamicuidmin', dynamic_uid_min)
740substs.set('dynamicuidmax', dynamic_uid_max)
741
Yu Watanabeac093402018-05-10 16:04:16 +0900742container_uid_base_min = get_option('container-uid-base-min')
743container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100744conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
745conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
746substs.set('containeruidbasemin', container_uid_base_min)
747substs.set('containeruidbasemax', container_uid_base_max)
748
Lennart Poetteringafde4572017-12-05 11:00:24 +0100749nobody_user = get_option('nobody-user')
750nobody_group = get_option('nobody-group')
751
Chen Qi2484bff2018-07-23 14:53:09 +0800752if not meson.is_cross_build()
753 getent_result = run_command('getent', 'passwd', '65534')
754 if getent_result.returncode() == 0
755 name = getent_result.stdout().split(':')[0]
756 if name != nobody_user
757 warning('\n' +
758 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
759 'Your build will result in an user table setup that is incompatible with the local system.')
760 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100761 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800762 id_result = run_command('id', '-u', nobody_user)
763 if id_result.returncode() == 0
764 id = id_result.stdout().to_int()
765 if id != 65534
766 warning('\n' +
767 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
768 'Your build will result in an user table setup that is incompatible with the local system.')
769 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100771
Chen Qi2484bff2018-07-23 14:53:09 +0800772 getent_result = run_command('getent', 'group', '65534')
773 if getent_result.returncode() == 0
774 name = getent_result.stdout().split(':')[0]
775 if name != nobody_group
776 warning('\n' +
777 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
778 'Your build will result in an group table setup that is incompatible with the local system.')
779 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100780 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800781 id_result = run_command('id', '-g', nobody_group)
782 if id_result.returncode() == 0
783 id = id_result.stdout().to_int()
784 if id != 65534
785 warning('\n' +
786 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
787 'Your build will result in an group table setup that is incompatible with the local system.')
788 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100789 endif
790endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900791if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900792 warning('\n' +
793 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
794 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900795endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100796
797conf.set_quoted('NOBODY_USER_NAME', nobody_user)
798conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900799substs.set('NOBODY_USER_NAME', nobody_user)
800substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100801
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802tty_gid = get_option('tty-gid')
803conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400804substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Ikey Doherty84786b82017-12-03 12:28:23 +0000806# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900807users_gid = get_option('users-gid')
808substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000809
Yu Watanabe348b4432018-05-07 18:17:35 +0900810conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
811conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812
Michael Bieblace5e312018-07-13 23:36:13 +0200813dev_kvm_mode = get_option('dev-kvm-mode')
814substs.set('DEV_KVM_MODE', dev_kvm_mode)
815conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700816substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400818kill_user_processes = get_option('default-kill-user-processes')
819conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100820conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400821substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400823dns_servers = get_option('dns-servers')
824conf.set_quoted('DNS_SERVERS', dns_servers)
825substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400827ntp_servers = get_option('ntp-servers')
828conf.set_quoted('NTP_SERVERS', ntp_servers)
829substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
Dave Reisner8ca9e922018-12-28 07:38:36 -0500831default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900832if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800833 if not meson.is_cross_build()
834 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
835 default_locale = run_command(choose_default_locale_sh).stdout().strip()
836 else
837 default_locale = 'C.UTF-8'
838 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900839endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500840conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
841
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400842conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
843
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400844substs.set('SUSHELL', get_option('debug-shell'))
845substs.set('DEBUGTTY', get_option('debug-tty'))
846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847enable_debug_hashmap = false
848enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900849enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900850enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200851foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900852 if name == 'hashmap'
853 enable_debug_hashmap = true
854 elif name == 'mmap-cache'
855 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900856 elif name == 'siphash'
857 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900858 elif name == 'udev'
859 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900860 else
861 message('unknown debug option "@0@", ignoring'.format(name))
862 endif
863endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
865conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900866conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900867conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400868
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200869conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200870conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200871
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872#####################################################################
873
874threads = dependency('threads')
875librt = cc.find_library('rt')
876libm = cc.find_library('m')
877libdl = cc.find_library('dl')
878libcrypt = cc.find_library('crypt')
879
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400880libcap = dependency('libcap', required : false)
881if not libcap.found()
882 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
883 libcap = cc.find_library('cap')
884endif
885
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100887 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400892 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libselinux = dependency('libselinux',
904 version : '>= 2.1.9',
905 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912
913want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500914if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libapparmor = dependency('libapparmor',
916 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200919 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924smack_run_label = get_option('smack-run-label')
925if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
928
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400929want_polkit = get_option('polkit')
930install_polkit = false
931install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500932if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400934
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libpolkit = dependency('polkit-gobject-1',
936 required : false)
937 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
938 message('Old polkit detected, will install pkla files')
939 install_polkit_pkla = true
940 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400943
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400944want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500945if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400946 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950 libacl = []
951endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500955if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400956 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
964want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500965if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500975if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libkmod = dependency('libkmod',
977 version : '>= 15',
978 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
986want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500987if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libpam = cc.find_library('pam', required : want_pam == 'true')
989 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libpam = []
994 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500999if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libmicrohttpd = dependency('libmicrohttpd',
1001 version : '>= 0.9.33',
1002 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001005 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009
1010want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001011if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libcryptsetup = dependency('libcryptsetup',
1013 version : '>= 1.6.0',
1014 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001016 have_sector = cc.has_member(
1017 'struct crypt_params_plain',
1018 'sector_size',
1019 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001022 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001026conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libcurl = dependency('libcurl',
1031 version : '>= 7.32.0',
1032 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001041want_libidn2 = get_option('libidn2')
1042if want_libidn == 'true' and want_libidn2 == 'true'
1043 error('libidn and libidn2 cannot be requested simultaneously')
1044endif
1045
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001046if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libidn = dependency('libidn',
1048 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001050else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001052 libidn = []
1053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001055if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001056 # libidn is used for both libidn and libidn2 objects
1057 libidn = dependency('libidn2',
1058 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = libidn.found()
1060else
1061 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064
1065want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001066if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libiptc = dependency('libiptc',
1068 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075
1076want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001077if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libqrencode = dependency('libqrencode',
1079 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001088if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1090 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001093 have = false
1094endif
1095if not have
1096 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097 libgcrypt = []
1098 libgpg_error = []
1099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001103if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libgnutls = dependency('gnutls',
1105 version : '>= 3.1.4',
1106 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001109 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001114want_openssl = get_option('openssl')
1115if want_openssl != 'false' and not fuzzer_build
1116 libopenssl = dependency('openssl',
1117 version : '>= 1.1.0',
1118 required : want_openssl == 'true')
1119 have = libopenssl.found()
1120else
1121 have = false
1122 libopenssl = []
1123endif
1124conf.set10('HAVE_OPENSSL', have)
1125
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001127if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 libdw = dependency('libdw',
1129 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136
1137want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001138if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libz = dependency('zlib',
1140 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001145endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147
1148want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001149if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libbzip2 = cc.find_library('bz2',
1151 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001156endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158
1159want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001160if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libxz = dependency('liblzma',
1162 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169
1170want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001171if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001172 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001173 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001174 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001182want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001183if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001184 libxkbcommon = dependency('xkbcommon',
1185 version : '>= 0.3.0',
1186 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001189 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001190 libxkbcommon = []
1191endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001193
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001194want_pcre2 = get_option('pcre2')
1195if want_pcre2 != 'false'
1196 libpcre2 = dependency('libpcre2-8',
1197 required : want_pcre2 == 'true')
1198 have = libpcre2.found()
1199else
1200 have = false
1201 libpcre2 = []
1202endif
1203conf.set10('HAVE_PCRE2', have)
1204
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001205want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001206if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001207 libglib = dependency('glib-2.0',
1208 version : '>= 2.22.0',
1209 required : want_glib == 'true')
1210 libgobject = dependency('gobject-2.0',
1211 version : '>= 2.22.0',
1212 required : want_glib == 'true')
1213 libgio = dependency('gio-2.0',
1214 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001215 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 libglib = []
1219 libgobject = []
1220 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223
1224want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001225if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 libdbus = dependency('dbus-1',
1227 version : '>= 1.3.2',
1228 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001230else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001233endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235
Yu Watanabe42303dc2017-06-18 05:22:32 +09001236default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001237if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001238 default_dnssec = 'no'
1239endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001241 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1242 default_dnssec = 'no'
1243endif
1244conf.set('DEFAULT_DNSSEC_MODE',
1245 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1246substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1247
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001248dns_over_tls = get_option('dns-over-tls')
1249if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001250 if dns_over_tls == 'openssl'
1251 have_gnutls = false
1252 else
1253 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1254 if dns_over_tls == 'gnutls' and not have_gnutls
1255 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1256 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001257 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001258 if dns_over_tls == 'gnutls' or have_gnutls
1259 have_openssl = false
1260 else
1261 have_openssl = conf.get('HAVE_OPENSSL') == 1
1262 if dns_over_tls != 'auto' and not have_openssl
1263 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1264 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1265 endif
1266 endif
1267 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001268else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001269 have = false
1270 have_gnutls = false
1271 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272endif
1273conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001274conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1275conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276
Iwan Timmerc9299be2018-06-13 20:26:24 +02001277default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001278if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001279 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001280endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1282 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 +02001283 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001284endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001285conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1286 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1287substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001288
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001290if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001291 have = (conf.get('HAVE_LIBCURL') == 1 and
1292 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293 conf.get('HAVE_XZ') == 1 and
1294 conf.get('HAVE_GCRYPT') == 1)
1295 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001296 error('importd support was requested, but dependencies are not available')
1297 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001298else
1299 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001300endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001301conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001302
1303want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001304if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001305 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1306 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001307 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1308 # it's possible to build one without the other. Complain only if
1309 # support was explictly requested. The auxiliary files like sysusers
1310 # config should be installed when any of the programs are built.
1311 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1312 error('remote support was requested, but dependencies are not available')
1313 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001314 have = have_deps[0] or have_deps[1]
1315else
1316 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001317endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001319
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001320foreach term : ['utmp',
1321 'hibernate',
1322 'environment-d',
1323 'binfmt',
1324 'coredump',
1325 'resolve',
1326 'logind',
1327 'hostnamed',
1328 'localed',
1329 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001330 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001331 'networkd',
1332 'timedated',
1333 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001334 'firstboot',
1335 'randomseed',
1336 'backlight',
1337 'vconsole',
1338 'quotacheck',
1339 'sysusers',
1340 'tmpfiles',
1341 'hwdb',
1342 'rfkill',
1343 'ldconfig',
1344 'efi',
1345 'tpm',
1346 'ima',
1347 'smack',
1348 'gshadow',
1349 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001350 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001351 'nss-systemd']
1352 have = get_option(term)
1353 name = 'ENABLE_' + term.underscorify().to_upper()
1354 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355endforeach
1356
Yu Watanabe08540a92018-07-18 09:25:57 +09001357foreach tuple : [['nss-mymachines', 'machined'],
1358 ['nss-resolve', 'resolve']]
1359 want = get_option(tuple[0])
1360 if want != 'false'
1361 have = get_option(tuple[1])
1362 if want == 'true' and not have
1363 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1364 endif
1365 else
1366 have = false
1367 endif
1368 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1369 conf.set10(name, have)
1370endforeach
1371
1372enable_nss = false
1373foreach term : ['ENABLE_NSS_MYHOSTNAME',
1374 'ENABLE_NSS_MYMACHINES',
1375 'ENABLE_NSS_RESOLVE',
1376 'ENABLE_NSS_SYSTEMD']
1377 if conf.get(term) == 1
1378 enable_nss = true
1379 endif
1380endforeach
1381conf.set10('ENABLE_NSS', enable_nss)
1382
Yu Watanabe348b4432018-05-07 18:17:35 +09001383conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001384
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001385tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001386fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001387
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001388conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001389
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001390#####################################################################
1391
1392if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001394
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001397 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 elif efi_arch == 'x86_64'
1399 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001400 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 elif efi_arch == 'arm'
1402 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001403 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 elif efi_arch == 'aarch64'
1405 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001406 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 else
1408 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001409 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001412 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001414
Yu Watanabeac093402018-05-10 16:04:16 +09001415 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001416else
1417 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001419conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420
1421#####################################################################
1422
1423config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 output : 'config.h',
1425 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426
Yu Watanabe348b4432018-05-07 18:17:35 +09001427meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1428
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429includes = include_directories('src/basic',
1430 'src/shared',
1431 'src/systemd',
1432 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001433 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001434 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 'src/resolve',
1436 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001437 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438 'src/login',
1439 'src/udev',
1440 'src/libudev',
1441 'src/core',
1442 'src/libsystemd/sd-bus',
1443 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001444 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445 'src/libsystemd/sd-hwdb',
1446 'src/libsystemd/sd-id128',
1447 'src/libsystemd/sd-netlink',
1448 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001449 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001451 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452
1453add_project_arguments('-include', 'config.h', language : 'c')
1454
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001455generate_gperfs = find_program('tools/generate-gperfs.py')
1456
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457subdir('po')
1458subdir('catalog')
1459subdir('src/systemd')
1460subdir('src/basic')
1461subdir('src/libsystemd')
1462subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465
1466libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001467 'journal-core',
1468 libjournal_core_sources,
1469 journald_gperf_c,
1470 include_directories : includes,
1471 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001472
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001473libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001476 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001477 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001478 include_directories : includes,
1479 link_args : ['-shared',
1480 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001481 link_with : [libbasic,
1482 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001483 link_whole : [libsystemd_static,
1484 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001485 dependencies : [threads,
1486 librt,
1487 libxz,
1488 liblz4],
1489 link_depends : libsystemd_sym,
1490 install : true,
1491 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492
Davide Cavalca70848ec2018-04-09 02:43:35 -07001493static_libsystemd = get_option('static-libsystemd')
1494static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1495
1496install_libsystemd_static = static_library(
1497 'systemd',
1498 libsystemd_sources,
1499 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001500 basic_sources,
1501 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001502 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001503 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001504 build_by_default : static_libsystemd != 'false',
1505 install : static_libsystemd != 'false',
1506 install_dir : rootlibdir,
1507 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1508 dependencies : [threads,
1509 librt,
1510 libxz,
1511 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001512 libcap,
1513 libblkid,
1514 libmount,
1515 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001516 libgcrypt],
1517 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1518
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519############################################################
1520
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001521# binaries that have --help and are intended for use by humans,
1522# usually, but not always, installed in /bin.
1523public_programs = []
1524
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525subdir('src/libudev')
1526subdir('src/shared')
1527subdir('src/core')
1528subdir('src/udev')
1529subdir('src/network')
1530
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001531subdir('src/analyze')
1532subdir('src/journal-remote')
1533subdir('src/coredump')
1534subdir('src/hostname')
1535subdir('src/import')
1536subdir('src/kernel-install')
1537subdir('src/locale')
1538subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001539subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001540subdir('src/nspawn')
1541subdir('src/resolve')
1542subdir('src/timedate')
1543subdir('src/timesync')
1544subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001545subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001546
1547subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001548subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001549subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001550subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001551
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001552############################################################
1553
1554# only static linking apart from libdl, to make sure that the
1555# module is linked to all libraries that it uses.
1556test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 'test-dlopen',
1558 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001559 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001560 include_directories : includes,
1561 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001562 dependencies : [libdl],
1563 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001564
Yu Watanabe08540a92018-07-18 09:25:57 +09001565foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001566 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001567 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1568 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001570 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 if condition
1572 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001573
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001575 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001576
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 nss = shared_library(
1578 'nss_' + module,
1579 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001580 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 version : '2',
1582 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001583 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1584 link_args : ['-Wl,-z,nodelete',
1585 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 '-Wl,--version-script=' + version_script_arg,
1587 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001588 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 libbasic],
1590 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001591 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 link_depends : sym,
1593 install : true,
1594 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001595
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 # We cannot use shared_module because it does not support version suffix.
1597 # Unfortunately shared_library insists on creating the symlink…
1598 meson.add_install_script('sh', '-c',
1599 'rm $DESTDIR@0@/libnss_@1@.so'
1600 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001601
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001602 if want_tests != 'false'
1603 test('dlopen-nss_' + module,
1604 test_dlopen,
1605 # path to dlopen must include a slash
1606 args : nss.full_path())
1607 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001609endforeach
1610
1611############################################################
1612
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613executable('systemd',
1614 systemd_sources,
1615 include_directories : includes,
1616 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001617 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001618 dependencies : [threads,
1619 librt,
1620 libseccomp,
1621 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001622 libmount,
1623 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001624 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625 install : true,
1626 install_dir : rootlibexecdir)
1627
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001628meson.add_install_script(meson_make_symlink,
1629 join_paths(rootlibexecdir, 'systemd'),
1630 join_paths(rootsbindir, 'init'))
1631
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001632exe = executable('systemd-analyze',
1633 systemd_analyze_sources,
1634 include_directories : includes,
1635 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001636 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001637 dependencies : [versiondep,
1638 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001639 librt,
1640 libseccomp,
1641 libselinux,
1642 libmount,
1643 libblkid],
1644 install_rpath : rootlibexecdir,
1645 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001646public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647
1648executable('systemd-journald',
1649 systemd_journald_sources,
1650 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001651 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001652 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001653 dependencies : [threads,
1654 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001655 liblz4,
1656 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001657 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001658 install : true,
1659 install_dir : rootlibexecdir)
1660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001661exe = executable('systemd-cat',
1662 systemd_cat_sources,
1663 include_directories : includes,
1664 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001665 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666 dependencies : [threads],
1667 install_rpath : rootlibexecdir,
1668 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001669public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001671exe = executable('journalctl',
1672 journalctl_sources,
1673 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001674 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001675 dependencies : [threads,
1676 libqrencode,
1677 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001678 liblz4,
1679 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001683public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684
1685executable('systemd-getty-generator',
1686 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001687 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001688 link_with : [libshared],
1689 install_rpath : rootlibexecdir,
1690 install : true,
1691 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
1693executable('systemd-debug-generator',
1694 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001696 link_with : [libshared],
1697 install_rpath : rootlibexecdir,
1698 install : true,
1699 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001701executable('systemd-run-generator',
1702 'src/run-generator/run-generator.c',
1703 include_directories : includes,
1704 link_with : [libshared],
1705 install_rpath : rootlibexecdir,
1706 install : true,
1707 install_dir : systemgeneratordir)
1708
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709executable('systemd-fstab-generator',
1710 'src/fstab-generator/fstab-generator.c',
1711 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001713 link_with : [libshared],
1714 install_rpath : rootlibexecdir,
1715 install : true,
1716 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001718if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('30-systemd-environment-d-generator',
1720 'src/environment-d-generator/environment-d-generator.c',
1721 include_directories : includes,
1722 link_with : [libshared],
1723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001726
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 meson.add_install_script(meson_make_symlink,
1728 join_paths(sysconfdir, 'environment'),
1729 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730endif
1731
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001732if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001733 executable('systemd-hibernate-resume-generator',
1734 'src/hibernate-resume/hibernate-resume-generator.c',
1735 include_directories : includes,
1736 link_with : [libshared],
1737 install_rpath : rootlibexecdir,
1738 install : true,
1739 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001740
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 executable('systemd-hibernate-resume',
1742 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001743 include_directories : includes,
1744 link_with : [libshared],
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748endif
1749
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001750if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 executable('systemd-gpt-auto-generator',
1752 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001753 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001755 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756 dependencies : libblkid,
1757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : systemgeneratordir)
1760
1761 exe = executable('systemd-dissect',
1762 'src/dissect/dissect.c',
1763 include_directories : includes,
1764 link_with : [libshared],
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001768 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769endif
1770
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001771if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 executable('systemd-resolved',
1773 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001774 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001775 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001776 libbasic_gcrypt,
1777 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001778 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001779 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 install : true,
1781 install_dir : rootlibexecdir)
1782
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001783 exe = executable('resolvectl',
1784 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001786 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001787 libbasic_gcrypt,
1788 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001789 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001790 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 libm,
1792 libidn],
1793 install_rpath : rootlibexecdir,
1794 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001795 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001796
1797 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001798 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001799 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001800
1801 meson.add_install_script(meson_make_symlink,
1802 join_paths(bindir, 'resolvectl'),
1803 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001804endif
1805
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001806if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 executable('systemd-logind',
1808 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001809 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001811 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001814 install_rpath : rootlibexecdir,
1815 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001817
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 exe = executable('loginctl',
1819 loginctl_sources,
1820 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001821 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001822 dependencies : [threads,
1823 liblz4,
1824 libxz],
1825 install_rpath : rootlibexecdir,
1826 install : true,
1827 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001828 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001829
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 exe = executable('systemd-inhibit',
1831 'src/login/inhibit.c',
1832 include_directories : includes,
1833 link_with : [libshared],
1834 install_rpath : rootlibexecdir,
1835 install : true,
1836 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001837 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001838
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001839 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001840 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 pam_systemd = shared_library(
1842 'pam_systemd',
1843 pam_systemd_c,
1844 name_prefix : '',
1845 include_directories : includes,
1846 link_args : ['-shared',
1847 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001848 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 libshared_static],
1850 dependencies : [threads,
1851 libpam,
1852 libpam_misc],
1853 link_depends : pam_systemd_sym,
1854 install : true,
1855 install_dir : pamlibdir)
1856
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001857 if want_tests != 'false'
1858 test('dlopen-pam_systemd',
1859 test_dlopen,
1860 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001861 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001862 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001865 executable('systemd-user-runtime-dir',
1866 user_runtime_dir_sources,
1867 include_directories : includes,
1868 link_with : [libshared],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
1872endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 executable('systemd-user-sessions',
1876 'src/user-sessions/user-sessions.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001882endif
1883
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001884if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 exe = executable('bootctl',
1886 'src/boot/bootctl.c',
1887 include_directories : includes,
1888 link_with : [libshared],
1889 dependencies : [libblkid],
1890 install_rpath : rootlibexecdir,
1891 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001892 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001893
1894 executable('systemd-bless-boot',
1895 'src/boot/bless-boot.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [libblkid],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001902
1903 executable('systemd-bless-boot-generator',
1904 'src/boot/bless-boot-generator.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001910endif
1911
Lennart Poetteringf876f532018-06-25 16:07:33 +02001912executable('systemd-boot-check-no-failures',
1913 'src/boot/boot-check-no-failures.c',
1914 include_directories : includes,
1915 link_with : [libshared],
1916 dependencies : [libblkid],
1917 install_rpath : rootlibexecdir,
1918 install : true,
1919 install_dir : rootlibexecdir)
1920
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001921exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1922 include_directories : includes,
1923 link_with : [libshared],
1924 dependencies : [threads],
1925 install_rpath : rootlibexecdir,
1926 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001927public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928
Felipe Satelerf3794362018-05-22 15:08:57 -04001929
1930if get_option('link-systemctl-shared')
1931 systemctl_link_with = [libshared]
1932else
1933 systemctl_link_with = [libsystemd_static,
1934 libshared_static,
1935 libjournal_client,
1936 libbasic_gcrypt]
1937endif
1938
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001939exe = executable('systemctl', 'src/systemctl/systemctl.c',
1940 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001941 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001942 dependencies : [threads,
1943 libcap,
1944 libselinux,
1945 libxz,
1946 liblz4],
1947 install_rpath : rootlibexecdir,
1948 install : true,
1949 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001950public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Lennart Poettering61d05782018-04-16 21:41:40 +02001952if conf.get('ENABLE_PORTABLED') == 1
1953 executable('systemd-portabled',
1954 systemd_portabled_sources,
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [threads],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
1961
1962 exe = executable('portablectl', 'src/portable/portablectl.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [threads],
1966 install_rpath : rootlibexecdir,
1967 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001968 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001969 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001970endif
1971
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001972foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1973 meson.add_install_script(meson_make_symlink,
1974 join_paths(rootbindir, 'systemctl'),
1975 join_paths(rootsbindir, alias))
1976endforeach
1977
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001978if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 executable('systemd-backlight',
1980 'src/backlight/backlight.c',
1981 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001982 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001986endif
1987
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001988if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001989 executable('systemd-rfkill',
1990 'src/rfkill/rfkill.c',
1991 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001992 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001996endif
1997
1998executable('systemd-system-update-generator',
1999 'src/system-update-generator/system-update-generator.c',
2000 include_directories : includes,
2001 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002002 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003 install : true,
2004 install_dir : systemgeneratordir)
2005
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002006if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002007 executable('systemd-cryptsetup',
2008 'src/cryptsetup/cryptsetup.c',
2009 include_directories : includes,
2010 link_with : [libshared],
2011 dependencies : [libcryptsetup],
2012 install_rpath : rootlibexecdir,
2013 install : true,
2014 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002015
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 executable('systemd-cryptsetup-generator',
2017 'src/cryptsetup/cryptsetup-generator.c',
2018 include_directories : includes,
2019 link_with : [libshared],
2020 dependencies : [libcryptsetup],
2021 install_rpath : rootlibexecdir,
2022 install : true,
2023 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002024
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 executable('systemd-veritysetup',
2026 'src/veritysetup/veritysetup.c',
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [libcryptsetup],
2030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 executable('systemd-veritysetup-generator',
2035 'src/veritysetup/veritysetup-generator.c',
2036 include_directories : includes,
2037 link_with : [libshared],
2038 dependencies : [libcryptsetup],
2039 install_rpath : rootlibexecdir,
2040 install : true,
2041 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042endif
2043
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002044if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002045 executable('systemd-sysv-generator',
2046 'src/sysv-generator/sysv-generator.c',
2047 include_directories : includes,
2048 link_with : [libshared],
2049 install_rpath : rootlibexecdir,
2050 install : true,
2051 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002052
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-rc-local-generator',
2054 'src/rc-local-generator/rc-local-generator.c',
2055 include_directories : includes,
2056 link_with : [libshared],
2057 install_rpath : rootlibexecdir,
2058 install : true,
2059 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002060endif
2061
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002062if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 executable('systemd-hostnamed',
2064 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002065 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002066 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002067 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 install : true,
2069 install_dir : rootlibexecdir)
2070
2071 exe = executable('hostnamectl',
2072 'src/hostname/hostnamectl.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002077 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_LOCALED') == 1
2081 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 # logind will load libxkbcommon.so dynamically on its own
2083 deps = [libdl]
2084 else
2085 deps = []
2086 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002087
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002088 executable('systemd-localed',
2089 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002090 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002091 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002092 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002093 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002094 install : true,
2095 install_dir : rootlibexecdir)
2096
2097 exe = executable('localectl',
2098 localectl_sources,
2099 include_directories : includes,
2100 link_with : [libshared],
2101 install_rpath : rootlibexecdir,
2102 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002103 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104endif
2105
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002106if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 executable('systemd-timedated',
2108 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002109 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002110 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002114endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115
Yu Watanabe6129ec82018-05-03 18:07:43 +09002116if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 exe = executable('timedatectl',
2118 'src/timedate/timedatectl.c',
2119 include_directories : includes,
2120 install_rpath : rootlibexecdir,
2121 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002122 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002123 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002124 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125endif
2126
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002127if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002128 executable('systemd-timesyncd',
2129 systemd_timesyncd_sources,
2130 include_directories : includes,
2131 link_with : [libshared],
2132 dependencies : [threads,
2133 libm],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002137
2138 executable('systemd-time-wait-sync',
2139 'src/time-wait-sync/time-wait-sync.c',
2140 include_directories : includes,
2141 link_with : [libshared],
2142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145endif
2146
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002147if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002148 executable('systemd-machined',
2149 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002151 link_with : [libmachine_core,
2152 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002153 install_rpath : rootlibexecdir,
2154 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002155 install_dir : rootlibexecdir)
2156
2157 exe = executable('machinectl',
2158 'src/machine/machinectl.c',
2159 include_directories : includes,
2160 link_with : [libshared],
2161 dependencies : [threads,
2162 libxz,
2163 liblz4],
2164 install_rpath : rootlibexecdir,
2165 install : true,
2166 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002167 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168endif
2169
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002170if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002171 executable('systemd-importd',
2172 systemd_importd_sources,
2173 include_directories : includes,
2174 link_with : [libshared],
2175 dependencies : [threads],
2176 install_rpath : rootlibexecdir,
2177 install : true,
2178 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002179
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002180 systemd_pull = executable('systemd-pull',
2181 systemd_pull_sources,
2182 include_directories : includes,
2183 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002184 dependencies : [versiondep,
2185 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002186 libz,
2187 libbzip2,
2188 libxz,
2189 libgcrypt],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 systemd_import = executable('systemd-import',
2195 systemd_import_sources,
2196 include_directories : includes,
2197 link_with : [libshared],
2198 dependencies : [libcurl,
2199 libz,
2200 libbzip2,
2201 libxz],
2202 install_rpath : rootlibexecdir,
2203 install : true,
2204 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002205
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002206 systemd_import_fs = executable('systemd-import-fs',
2207 systemd_import_fs_sources,
2208 include_directories : includes,
2209 link_with : [libshared],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootlibexecdir)
2213
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002214 systemd_export = executable('systemd-export',
2215 systemd_export_sources,
2216 include_directories : includes,
2217 link_with : [libshared],
2218 dependencies : [libcurl,
2219 libz,
2220 libbzip2,
2221 libxz],
2222 install_rpath : rootlibexecdir,
2223 install : true,
2224 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002225
2226 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227endif
2228
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002229if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002230 exe = executable('systemd-journal-upload',
2231 systemd_journal_upload_sources,
2232 include_directories : includes,
2233 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002234 dependencies : [versiondep,
2235 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 libcurl,
2237 libgnutls,
2238 libxz,
2239 liblz4],
2240 install_rpath : rootlibexecdir,
2241 install : true,
2242 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002243 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244endif
2245
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002246if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002247 s_j_remote = executable('systemd-journal-remote',
2248 systemd_journal_remote_sources,
2249 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002250 link_with : [libshared,
2251 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002252 dependencies : [threads,
2253 libmicrohttpd,
2254 libgnutls,
2255 libxz,
2256 liblz4],
2257 install_rpath : rootlibexecdir,
2258 install : true,
2259 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002260
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 s_j_gatewayd = executable('systemd-journal-gatewayd',
2262 systemd_journal_gatewayd_sources,
2263 include_directories : includes,
2264 link_with : [libshared],
2265 dependencies : [threads,
2266 libmicrohttpd,
2267 libgnutls,
2268 libxz,
2269 liblz4],
2270 install_rpath : rootlibexecdir,
2271 install : true,
2272 install_dir : rootlibexecdir)
2273 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002274endif
2275
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002276if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002277 executable('systemd-coredump',
2278 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002280 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002282 libacl,
2283 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284 libxz,
2285 liblz4],
2286 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 install : true,
2288 install_dir : rootlibexecdir)
2289
2290 exe = executable('coredumpctl',
2291 coredumpctl_sources,
2292 include_directories : includes,
2293 link_with : [libshared],
2294 dependencies : [threads,
2295 libxz,
2296 liblz4],
2297 install_rpath : rootlibexecdir,
2298 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002299 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002300endif
2301
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002302if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 exe = executable('systemd-binfmt',
2304 'src/binfmt/binfmt.c',
2305 include_directories : includes,
2306 link_with : [libshared],
2307 install_rpath : rootlibexecdir,
2308 install : true,
2309 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002310 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311
2312 meson.add_install_script('sh', '-c',
2313 mkdir_p.format(binfmtdir))
2314 meson.add_install_script('sh', '-c',
2315 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2316endif
2317
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002318if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002319 executable('systemd-vconsole-setup',
2320 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321 include_directories : includes,
2322 link_with : [libshared],
2323 install_rpath : rootlibexecdir,
2324 install : true,
2325 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002326endif
2327
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002328if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002329 executable('systemd-random-seed',
2330 'src/random-seed/random-seed.c',
2331 include_directories : includes,
2332 link_with : [libshared],
2333 install_rpath : rootlibexecdir,
2334 install : true,
2335 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002336endif
2337
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002338if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339 executable('systemd-firstboot',
2340 'src/firstboot/firstboot.c',
2341 include_directories : includes,
2342 link_with : [libshared],
2343 dependencies : [libcrypt],
2344 install_rpath : rootlibexecdir,
2345 install : true,
2346 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347endif
2348
2349executable('systemd-remount-fs',
2350 'src/remount-fs/remount-fs.c',
2351 'src/core/mount-setup.c',
2352 'src/core/mount-setup.h',
2353 include_directories : includes,
2354 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002355 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356 install : true,
2357 install_dir : rootlibexecdir)
2358
2359executable('systemd-machine-id-setup',
2360 'src/machine-id-setup/machine-id-setup-main.c',
2361 'src/core/machine-id-setup.c',
2362 'src/core/machine-id-setup.h',
2363 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002365 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366 install : true,
2367 install_dir : rootbindir)
2368
2369executable('systemd-fsck',
2370 'src/fsck/fsck.c',
2371 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002372 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002373 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374 install : true,
2375 install_dir : rootlibexecdir)
2376
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002377executable('systemd-growfs',
2378 'src/partition/growfs.c',
2379 include_directories : includes,
2380 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002381 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002382 install_rpath : rootlibexecdir,
2383 install : true,
2384 install_dir : rootlibexecdir)
2385
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002386executable('systemd-makefs',
2387 'src/partition/makefs.c',
2388 include_directories : includes,
2389 link_with : [libshared],
2390 install_rpath : rootlibexecdir,
2391 install : true,
2392 install_dir : rootlibexecdir)
2393
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002394executable('systemd-sleep',
2395 'src/sleep/sleep.c',
2396 include_directories : includes,
2397 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002398 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399 install : true,
2400 install_dir : rootlibexecdir)
2401
Yu Watanabed25e1272019-01-03 02:32:57 +09002402install_data('src/sleep/sleep.conf',
2403 install_dir : pkgsysconfdir)
2404
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405exe = executable('systemd-sysctl',
2406 'src/sysctl/sysctl.c',
2407 include_directories : includes,
2408 link_with : [libshared],
2409 install_rpath : rootlibexecdir,
2410 install : true,
2411 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002412public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413
2414executable('systemd-ac-power',
2415 'src/ac-power/ac-power.c',
2416 include_directories : includes,
2417 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002418 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419 install : true,
2420 install_dir : rootlibexecdir)
2421
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422exe = executable('systemd-detect-virt',
2423 'src/detect-virt/detect-virt.c',
2424 include_directories : includes,
2425 link_with : [libshared],
2426 install_rpath : rootlibexecdir,
2427 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002428public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002430exe = executable('systemd-delta',
2431 'src/delta/delta.c',
2432 include_directories : includes,
2433 link_with : [libshared],
2434 install_rpath : rootlibexecdir,
2435 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002436public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002437
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002438exe = executable('systemd-escape',
2439 'src/escape/escape.c',
2440 include_directories : includes,
2441 link_with : [libshared],
2442 install_rpath : rootlibexecdir,
2443 install : true,
2444 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002445public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002447exe = executable('systemd-notify',
2448 'src/notify/notify.c',
2449 include_directories : includes,
2450 link_with : [libshared],
2451 install_rpath : rootlibexecdir,
2452 install : true,
2453 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002454public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002455
2456executable('systemd-volatile-root',
2457 'src/volatile-root/volatile-root.c',
2458 include_directories : includes,
2459 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002460 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461 install : true,
2462 install_dir : rootlibexecdir)
2463
2464executable('systemd-cgroups-agent',
2465 'src/cgroups-agent/cgroups-agent.c',
2466 include_directories : includes,
2467 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002468 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002469 install : true,
2470 install_dir : rootlibexecdir)
2471
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002472exe = executable('systemd-id128',
2473 'src/id128/id128.c',
2474 include_directories : includes,
2475 link_with : [libshared],
2476 install_rpath : rootlibexecdir,
2477 install : true)
2478public_programs += exe
2479
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480exe = executable('systemd-path',
2481 'src/path/path.c',
2482 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484 install_rpath : rootlibexecdir,
2485 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002486public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002487
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002488exe = executable('systemd-ask-password',
2489 'src/ask-password/ask-password.c',
2490 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002491 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002492 install_rpath : rootlibexecdir,
2493 install : true,
2494 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002495public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496
2497executable('systemd-reply-password',
2498 'src/reply-password/reply-password.c',
2499 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002500 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002501 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502 install : true,
2503 install_dir : rootlibexecdir)
2504
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002505exe = executable('systemd-tty-ask-password-agent',
2506 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2507 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002508 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002509 install_rpath : rootlibexecdir,
2510 install : true,
2511 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002512public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002514exe = executable('systemd-cgls',
2515 'src/cgls/cgls.c',
2516 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002517 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002518 install_rpath : rootlibexecdir,
2519 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002520public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002521
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002522exe = executable('systemd-cgtop',
2523 'src/cgtop/cgtop.c',
2524 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002525 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002526 install_rpath : rootlibexecdir,
2527 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002528public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529
2530executable('systemd-initctl',
2531 'src/initctl/initctl.c',
2532 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002533 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002534 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002535 install : true,
2536 install_dir : rootlibexecdir)
2537
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538exe = executable('systemd-mount',
2539 'src/mount/mount-tool.c',
2540 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002541 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 install_rpath : rootlibexecdir,
2543 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002544public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002546meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002547 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002548
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002549exe = executable('systemd-run',
2550 'src/run/run.c',
2551 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002552 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002553 install_rpath : rootlibexecdir,
2554 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002555public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002556
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002557exe = executable('systemd-stdio-bridge',
2558 'src/stdio-bridge/stdio-bridge.c',
2559 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002560 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002561 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002562 install_rpath : rootlibexecdir,
2563 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002564public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002566exe = executable('busctl',
2567 'src/busctl/busctl.c',
2568 'src/busctl/busctl-introspect.c',
2569 'src/busctl/busctl-introspect.h',
2570 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002571 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002572 install_rpath : rootlibexecdir,
2573 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002574public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002576if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002577 exe = executable('systemd-sysusers',
2578 'src/sysusers/sysusers.c',
2579 include_directories : includes,
2580 link_with : [libshared],
2581 install_rpath : rootlibexecdir,
2582 install : true,
2583 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002584 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585endif
2586
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002587if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002588 exe = executable('systemd-tmpfiles',
2589 'src/tmpfiles/tmpfiles.c',
2590 include_directories : includes,
2591 link_with : [libshared],
2592 dependencies : [libacl],
2593 install_rpath : rootlibexecdir,
2594 install : true,
2595 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002596 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002597
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002598 if want_tests != 'false'
2599 test('test-systemd-tmpfiles',
2600 test_systemd_tmpfiles_py,
2601 # https://github.com/mesonbuild/meson/issues/2681
2602 args : exe.full_path())
2603 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002604endif
2605
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002606if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002607 exe = executable('systemd-hwdb',
2608 'src/hwdb/hwdb.c',
2609 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2610 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002611 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002612 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002613 install : true,
2614 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002615 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002616endif
2617
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002618if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619 executable('systemd-quotacheck',
2620 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002621 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002622 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623 install_rpath : rootlibexecdir,
2624 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002625 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002626endif
2627
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628exe = executable('systemd-socket-proxyd',
2629 'src/socket-proxy/socket-proxyd.c',
2630 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002631 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632 dependencies : [threads],
2633 install_rpath : rootlibexecdir,
2634 install : true,
2635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002636public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638exe = executable('systemd-udevd',
2639 systemd_udevd_sources,
2640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002641 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002644 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002645 dependencies : [versiondep,
2646 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002647 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002649 libacl,
2650 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002651 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 install : true,
2653 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002654public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656exe = executable('udevadm',
2657 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002658 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659 include_directories : includes,
2660 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002662 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002663 dependencies : [versiondep,
2664 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002665 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002667 libacl,
2668 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002669 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002670 install : true,
2671 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002672public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002673
2674executable('systemd-shutdown',
2675 systemd_shutdown_sources,
2676 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002677 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002678 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002679 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680 install : true,
2681 install_dir : rootlibexecdir)
2682
2683executable('systemd-update-done',
2684 'src/update-done/update-done.c',
2685 include_directories : includes,
2686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002687 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688 install : true,
2689 install_dir : rootlibexecdir)
2690
2691executable('systemd-update-utmp',
2692 'src/update-utmp/update-utmp.c',
2693 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002694 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695 dependencies : [libaudit],
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
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002700if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002701 executable('systemd-modules-load',
2702 'src/modules-load/modules-load.c',
2703 include_directories : includes,
2704 link_with : [libshared],
2705 dependencies : [libkmod],
2706 install_rpath : rootlibexecdir,
2707 install : true,
2708 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002709
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 meson.add_install_script('sh', '-c',
2711 mkdir_p.format(modulesloaddir))
2712 meson.add_install_script('sh', '-c',
2713 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714endif
2715
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002716exe = executable('systemd-nspawn',
2717 systemd_nspawn_sources,
2718 'src/core/mount-setup.c', # FIXME: use a variable?
2719 'src/core/mount-setup.h',
2720 'src/core/loopback-setup.c',
2721 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002722 include_directories : includes,
2723 link_with : [libnspawn_core,
2724 libshared],
2725 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002726 install_rpath : rootlibexecdir,
2727 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002728public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002729
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002730if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002731 executable('systemd-networkd',
2732 systemd_networkd_sources,
2733 include_directories : includes,
2734 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002736 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002737 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002738 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 install_rpath : rootlibexecdir,
2740 install : true,
2741 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002742
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 executable('systemd-networkd-wait-online',
2744 systemd_networkd_wait_online_sources,
2745 include_directories : includes,
2746 link_with : [libnetworkd_core,
2747 libshared],
2748 install_rpath : rootlibexecdir,
2749 install : true,
2750 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002751
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002752 exe = executable('networkctl',
2753 networkctl_sources,
2754 include_directories : includes,
2755 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002756 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002757 install_rpath : rootlibexecdir,
2758 install : true,
2759 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002760 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002761endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002762
2763executable('systemd-sulogin-shell',
2764 ['src/sulogin-shell/sulogin-shell.c'],
2765 include_directories : includes,
2766 link_with : [libshared],
2767 install_rpath : rootlibexecdir,
2768 install : true,
2769 install_dir : rootlibexecdir)
2770
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002771############################################################
2772
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002773custom_target(
2774 'systemd-runtest.env',
2775 output : 'systemd-runtest.env',
2776 command : ['sh', '-c', '{ ' +
2777 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002778 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002779 '} >@OUTPUT@'],
2780 build_by_default : true)
2781
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002782foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002783 sources = tuple[0]
2784 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2785 dependencies = tuple[2]
2786 condition = tuple.length() >= 4 ? tuple[3] : ''
2787 type = tuple.length() >= 5 ? tuple[4] : ''
2788 defs = tuple.length() >= 6 ? tuple[5] : []
2789 incs = tuple.length() >= 7 ? tuple[6] : includes
2790 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002791
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002792 name = sources[0].split('/')[-1].split('.')[0]
2793 if type.startswith('timeout=')
2794 timeout = type.split('=')[1].to_int()
2795 type = ''
2796 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002797
2798 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002799 exe = executable(
2800 name,
2801 sources,
2802 include_directories : incs,
2803 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002804 dependencies : [versiondep,
2805 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002806 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002807 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002809 install : install_tests,
2810 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002811
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 if type == 'manual'
2813 message('@0@ is a manual test'.format(name))
2814 elif type == 'unsafe' and want_tests != 'unsafe'
2815 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002816 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 test(name, exe,
2818 env : test_env,
2819 timeout : timeout)
2820 endif
2821 else
2822 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2823 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002824endforeach
2825
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002826exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002827 'test-libsystemd-sym',
2828 test_libsystemd_sym_c,
2829 include_directories : includes,
2830 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002831 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002832 install : install_tests,
2833 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002834if want_tests != 'false'
2835 test('test-libsystemd-sym', exe)
2836endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002837
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002838exe = executable(
2839 'test-libsystemd-static-sym',
2840 test_libsystemd_sym_c,
2841 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002842 link_with : [install_libsystemd_static],
2843 dependencies : [threads], # threads is already included in dependencies on the library,
2844 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002845 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002846 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002847 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002848if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849 test('test-libsystemd-static-sym', exe)
2850endif
2851
2852exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002853 'test-libudev-sym',
2854 test_libudev_sym_c,
2855 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002856 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002857 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002858 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002859 install : install_tests,
2860 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002861if want_tests != 'false'
2862 test('test-libudev-sym', exe)
2863endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002864
2865exe = executable(
2866 'test-libudev-static-sym',
2867 test_libudev_sym_c,
2868 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002869 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002870 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002871 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002872 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002873 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002874if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002875 test('test-libudev-static-sym', exe)
2876endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002877
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002878############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002879
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002880fuzzer_exes = []
2881
Michael Olbrich59967402018-11-11 11:27:35 +01002882if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002883foreach tuple : fuzzers
2884 sources = tuple[0]
2885 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2886 dependencies = tuple[2]
2887 defs = tuple.length() >= 4 ? tuple[3] : []
2888 incs = tuple.length() >= 5 ? tuple[4] : includes
2889
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002890 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002891 dependencies += fuzzing_engine
2892 else
2893 sources += 'src/fuzz/fuzz-main.c'
2894 endif
2895
2896 name = sources[0].split('/')[-1].split('.')[0]
2897
2898 fuzzer_exes += executable(
2899 name,
2900 sources,
2901 include_directories : [incs, include_directories('src/fuzz')],
2902 link_with : link_with,
2903 dependencies : dependencies,
2904 c_args : defs,
2905 install : false)
2906endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002907endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002908
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002909run_target('fuzzers',
2910 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002911 command : ['true'])
2912
2913############################################################
2914
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002915make_directive_index_py = find_program('tools/make-directive-index.py')
2916make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002917xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002918hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002919
2920subdir('units')
2921subdir('sysctl.d')
2922subdir('sysusers.d')
2923subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002924subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002925subdir('hwdb')
2926subdir('network')
2927subdir('man')
2928subdir('shell-completion/bash')
2929subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002930subdir('docs/sysvinit')
2931subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002933install_subdir('factory/etc',
2934 install_dir : factorydir)
2935
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002936install_data('xorg/50-systemd-user.sh',
2937 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002938install_data('modprobe.d/systemd.conf',
2939 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002940install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002941 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002942 'NEWS',
2943 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302944 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002945 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002946 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302947 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002948 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002949 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002950 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002951 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2952 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002953
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002954meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2955meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2956
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002957############################################################
2958
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002959meson_check_help = find_program('tools/meson-check-help.sh')
2960
2961foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002962 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002963 if want_tests != 'false'
2964 test('check-help-' + name,
2965 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002966 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002967 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002968endforeach
2969
2970############################################################
2971
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002972# Enable tests for all supported sanitizers
2973foreach tuple : sanitizers
2974 sanitizer = tuple[0]
2975 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002976
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002977 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002978 prev = ''
2979 foreach p : fuzz_regression_tests
2980 b = p.split('/')[-2]
2981 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002982
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002983 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002984
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002985 if name != prev
2986 if want_tests == 'false'
2987 message('Not compiling @0@ because tests is set to false'.format(name))
2988 elif slow_tests
2989 exe = custom_target(
2990 name,
2991 output : name,
2992 depends : build,
2993 command : [env, 'ln', '-fs',
2994 join_paths(build.full_path(), b),
2995 '@OUTPUT@'],
2996 build_by_default : true)
2997 else
2998 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2999 endif
3000 endif
3001 prev = name
3002
3003 if want_tests != 'false' and slow_tests
3004 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3005 env,
3006 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02003007 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003008 endif
3009 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003010 endif
3011endforeach
3012
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003013
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003014############################################################
3015
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003016if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003017 all_files = run_command(
3018 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003019 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003020 'ls-files',
3021 ':/*.[ch]'])
3022 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003023
userwithuide85a6902017-08-09 13:41:44 +00003024 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003025 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003026 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003027 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003028 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003029 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003030 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003031endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003032
3033if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003034 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003035 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003036 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003037 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003038endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003039
3040if git.found()
3041 git_head = run_command(
3042 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003043 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003044 'rev-parse', 'HEAD']).stdout().strip()
3045 git_head_short = run_command(
3046 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003047 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003048 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3049
3050 run_target(
3051 'git-snapshot',
3052 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003053 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003054 git_head_short),
3055 '--prefix', 'systemd-@0@/'.format(git_head),
3056 'HEAD'])
3057endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058
3059############################################################
3060
Lennart Poettering51b13862017-12-20 12:51:14 +01003061meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3062run_target(
3063 'check-api-docs',
3064 depends : [man, libsystemd, libudev],
3065 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3066
3067############################################################
3068
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003069status = [
3070 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3071
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003072 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003073 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003074 'prefix directory: @0@'.format(prefixdir),
3075 'rootprefix directory: @0@'.format(rootprefixdir),
3076 'sysconf directory: @0@'.format(sysconfdir),
3077 'include directory: @0@'.format(includedir),
3078 'lib directory: @0@'.format(libdir),
3079 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003080 'SysV init scripts: @0@'.format(sysvinit_path),
3081 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003082 'PAM modules directory: @0@'.format(pamlibdir),
3083 'PAM configuration directory: @0@'.format(pamconfdir),
3084 'RPM macros directory: @0@'.format(rpmmacrosdir),
3085 'modprobe.d directory: @0@'.format(modprobedir),
3086 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3087 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3088 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3089 'bash completions directory: @0@'.format(bashcompletiondir),
3090 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091 'extra start script: @0@'.format(get_option('rc-local')),
3092 'extra stop script: @0@'.format(get_option('halt-local')),
3093 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3094 get_option('debug-tty')),
3095 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003096 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003097 'maximum system UID: @0@'.format(system_uid_max),
3098 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003099 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3100 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3101 'minimum container UID base: @0@'.format(container_uid_base_min),
3102 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003104 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003105 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003106 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003107 'nobody user name: @0@'.format(nobody_user),
3108 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003109 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003110 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003111
3112 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003113 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003115 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003116 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3117 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118
3119alt_dns_servers = '\n '.join(dns_servers.split(' '))
3120alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3121status += [
3122 'default DNS servers: @0@'.format(alt_dns_servers),
3123 'default NTP servers: @0@'.format(alt_ntp_servers)]
3124
3125alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3126 '@@0@'.format(time_epoch)).stdout().strip()
3127status += [
3128 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3129
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003130status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003131 'static libsystemd: @0@'.format(static_libsystemd),
3132 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003133
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134# TODO:
3135# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3136# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3137# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3138
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003139if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003140 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003141
3142 if have_gnu_efi
3143 status += [
3144 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003145 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003146 'EFI lib directory: @0@'.format(efi_libdir),
3147 'EFI lds directory: @0@'.format(efi_ldsdir),
3148 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003149 endif
3150endif
3151
3152found = []
3153missing = []
3154
3155foreach tuple : [
3156 ['libcryptsetup'],
3157 ['PAM'],
3158 ['AUDIT'],
3159 ['IMA'],
3160 ['AppArmor'],
3161 ['SELinux'],
3162 ['SECCOMP'],
3163 ['SMACK'],
3164 ['zlib'],
3165 ['xz'],
3166 ['lz4'],
3167 ['bzip2'],
3168 ['ACL'],
3169 ['gcrypt'],
3170 ['qrencode'],
3171 ['microhttpd'],
3172 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003173 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003174 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003175 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003176 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177 ['libidn'],
3178 ['libiptc'],
3179 ['elfutils'],
3180 ['binfmt'],
3181 ['vconsole'],
3182 ['quotacheck'],
3183 ['tmpfiles'],
3184 ['environment.d'],
3185 ['sysusers'],
3186 ['firstboot'],
3187 ['randomseed'],
3188 ['backlight'],
3189 ['rfkill'],
3190 ['logind'],
3191 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003192 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003193 ['importd'],
3194 ['hostnamed'],
3195 ['timedated'],
3196 ['timesyncd'],
3197 ['localed'],
3198 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003199 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003200 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3201 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003202 ['coredump'],
3203 ['polkit'],
3204 ['legacy pkla', install_polkit_pkla],
3205 ['efi'],
3206 ['gnu-efi', have_gnu_efi],
3207 ['kmod'],
3208 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003209 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003210 ['blkid'],
3211 ['dbus'],
3212 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003213 ['nss-myhostname'],
3214 ['nss-mymachines'],
3215 ['nss-resolve'],
3216 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003217 ['hwdb'],
3218 ['tpm'],
3219 ['man pages', want_man],
3220 ['html pages', want_html],
3221 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003222 ['SysV compat'],
3223 ['utmp'],
3224 ['ldconfig'],
3225 ['hibernate'],
3226 ['adm group', get_option('adm-group')],
3227 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003228 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003229 ['debug hashmap'],
3230 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003231 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003232 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003233 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003234 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003235 ['link-udev-shared', get_option('link-udev-shared')],
3236 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003237]
3238
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003239 if tuple.length() >= 2
3240 cond = tuple[1]
3241 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003242 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3243 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003244 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003245 endif
3246 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003247 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003249 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003250 endif
3251endforeach
3252
3253status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003254 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003255 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003256 '',
3257 'disabled features: @0@'.format(', '.join(missing)),
3258 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003259message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003260
3261if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003262 warning('\n' +
3263 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3264 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3265 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003266endif