blob: 3d8220e1549a271ebb45b2d11744371eff350c6e [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-Szmek23bdba62019-03-05 16:46:52 +010069rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010078conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020079
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010080# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040081# encountered, so this should canonicalize various paths when they are
82# absolute or relative.
83prefixdir = get_option('prefix')
84if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040085 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086endif
87bindir = join_paths(prefixdir, get_option('bindir'))
88libdir = join_paths(prefixdir, get_option('libdir'))
89sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
90includedir = join_paths(prefixdir, get_option('includedir'))
91datadir = join_paths(prefixdir, get_option('datadir'))
92localstatedir = join_paths('/', get_option('localstatedir'))
93
94rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010095rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
97
98rootlibdir = get_option('rootlibdir')
99if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400100 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101endif
102
103# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200104pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
105pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400106polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
107polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
108polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
109varlogdir = join_paths(localstatedir, 'log')
110xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900111rpmmacrosdir = get_option('rpmmacrosdir')
112if rpmmacrosdir != 'no'
113 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
114endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200115modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400116
117# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118pkgdatadir = join_paths(datadir, 'systemd')
119environmentdir = join_paths(prefixdir, 'lib/environment.d')
120pkgsysconfdir = join_paths(sysconfdir, 'systemd')
121userunitdir = join_paths(prefixdir, 'lib/systemd/user')
122userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
123tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
124sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
125sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
126binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
127modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
128networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
129pkgincludedir = join_paths(includedir, 'systemd')
130systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
131usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
132systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
133userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
134systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
135systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
136systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
137systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
138udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400139udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
140udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
141catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
142kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
143factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400144bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
145testsdir = join_paths(prefixdir, 'lib/systemd/tests')
146systemdstatedir = join_paths(localstatedir, 'lib/systemd')
147catalogstatedir = join_paths(systemdstatedir, 'catalog')
148randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200149profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150
tblume75aaade2018-02-01 22:46:15 +0100151docdir = get_option('docdir')
152if docdir == ''
153 docdir = join_paths(datadir, 'doc/systemd')
154endif
155
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156dbuspolicydir = get_option('dbuspolicydir')
157if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400158 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400159endif
160
161dbussessionservicedir = get_option('dbussessionservicedir')
162if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400163 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400164endif
165
166dbussystemservicedir = get_option('dbussystemservicedir')
167if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400168 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400169endif
170
171pamlibdir = get_option('pamlibdir')
172if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400173 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174endif
175
176pamconfdir = get_option('pamconfdir')
177if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400178 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400179endif
180
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100181memory_accounting_default = get_option('memory-accounting-default')
182
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400183conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
186conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
187conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400188conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100190
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100191conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100192
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400194conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
195conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400196conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
197conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
198conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
199conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100200conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100201conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400202conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
203conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
204conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
205conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
206conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100207conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400208conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
210conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
212conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
213conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
214conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
215conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
216conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
218conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700219conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700220conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400221conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400222conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400223conf.set_quoted('LIBDIR', libdir)
224conf.set_quoted('ROOTLIBDIR', rootlibdir)
225conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
226conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400227conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
228conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200229conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400230conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
231conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
232conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
233conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200234conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100235conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100238substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100239substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400240substs.set('exec_prefix', prefixdir)
241substs.set('libdir', libdir)
242substs.set('rootlibdir', rootlibdir)
243substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100244substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400245substs.set('bindir', bindir)
246substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400247substs.set('rootlibexecdir', rootlibexecdir)
248substs.set('systemunitdir', systemunitdir)
249substs.set('userunitdir', userunitdir)
250substs.set('systempresetdir', systempresetdir)
251substs.set('userpresetdir', userpresetdir)
252substs.set('udevhwdbdir', udevhwdbdir)
253substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400254substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200255substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400256substs.set('catalogdir', catalogdir)
257substs.set('tmpfilesdir', tmpfilesdir)
258substs.set('sysusersdir', sysusersdir)
259substs.set('sysctldir', sysctldir)
260substs.set('binfmtdir', binfmtdir)
261substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200262substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400263substs.set('systemgeneratordir', systemgeneratordir)
264substs.set('usergeneratordir', usergeneratordir)
265substs.set('systemenvgeneratordir', systemenvgeneratordir)
266substs.set('userenvgeneratordir', userenvgeneratordir)
267substs.set('systemshutdowndir', systemshutdowndir)
268substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400269substs.set('VARLOGDIR', varlogdir)
270substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400271substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
272substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400273substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
274substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
275substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
276substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100277substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200278substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400279
280#####################################################################
281
282cc = meson.get_compiler('c')
283pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400284check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100285meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400286
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200287want_tests = get_option('tests')
288slow_tests = want_tests != 'false' and get_option('slow-tests')
289install_tests = get_option('install-tests')
290
James Hilliard46e63a22018-12-27 09:16:20 +0800291if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200292 # Used only for tests
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200293 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200294else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200295 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400296endif
297
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500298if want_libfuzzer
299 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200300elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500301 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
302endif
303
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900304possible_cc_flags = [
305 '-Wextra',
306 '-Werror=undef',
307 '-Wlogical-op',
308 '-Wmissing-include-dirs',
309 '-Wold-style-definition',
310 '-Wpointer-arith',
311 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900312 '-Wfloat-equal',
313 '-Wsuggest-attribute=noreturn',
314 '-Werror=missing-prototypes',
315 '-Werror=implicit-function-declaration',
316 '-Werror=missing-declarations',
317 '-Werror=return-type',
318 '-Werror=incompatible-pointer-types',
319 '-Werror=format=2',
320 '-Wstrict-prototypes',
321 '-Wredundant-decls',
322 '-Wmissing-noreturn',
323 '-Wimplicit-fallthrough=5',
324 '-Wshadow',
325 '-Wendif-labels',
326 '-Wstrict-aliasing=2',
327 '-Wwrite-strings',
328 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200329 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200330 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900331 '-Wdate-time',
332 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700333
334 # negative arguments are correctly detected starting with meson 0.46.
335 '-Wno-unused-parameter',
336 '-Wno-missing-field-initializers',
337 '-Wno-unused-result',
338 '-Wno-format-signedness',
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100339 '-Wno-error=#warnings', # clang
340 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700341
342 # work-around for gcc 7.1 turning this on on its own.
343 '-Wno-error=nonnull',
344
345 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
346 # optimizations enabled, producing essentially false positives.
347 '-Wno-maybe-uninitialized',
348
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900349 '-ffast-math',
350 '-fno-common',
351 '-fdiagnostics-show-option',
352 '-fno-strict-aliasing',
353 '-fvisibility=hidden',
354 '-fstack-protector',
355 '-fstack-protector-strong',
356 '--param=ssp-buffer-size=4',
357]
358
359# --as-needed and --no-undefined are provided by meson by default,
360# run mesonconf to see what is enabled
361possible_link_flags = [
362 '-Wl,-z,relro',
363 '-Wl,-z,now',
364]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400365
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900366if cc.get_id() == 'clang'
367 possible_cc_flags += [
368 '-Wno-typedef-redefinition',
369 '-Wno-gnu-variable-sized-type-not-at-end',
370 ]
371endif
372
373if get_option('buildtype') != 'debug'
374 possible_cc_flags += [
375 '-ffunction-sections',
376 '-fdata-sections',
377 ]
378
379 possible_link_flags += '-Wl,--gc-sections'
380endif
381
382add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900383add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900384
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800385if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386 #include <time.h>
387 #include <inttypes.h>
388 typedef uint64_t usec_t;
389 usec_t now(clockid_t clock);
390 int main(void) {
391 struct timespec now;
392 return 0;
393 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100394''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400395 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400396endif
397
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200398cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400399
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400#####################################################################
401# compilation result tests
402
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400403conf.set('_GNU_SOURCE', true)
404conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405
406conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
412conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
413
414decl_headers = '''
415#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100416#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400417'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418
419foreach decl : ['char16_t',
420 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100421 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400422 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400423
424 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200425 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
426
427 if decl == 'struct statx'
428 if have
429 want_linux_stat_h = false
430 else
431 have = cc.sizeof(decl,
432 prefix : decl_headers + '#include <linux/stat.h>',
433 args : '-D_GNU_SOURCE') > 0
434 want_linux_stat_h = have
435 endif
436 endif
437
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200438 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400439endforeach
440
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200441conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700442
Yu Watanabe9714c022018-12-02 16:27:02 +0100443foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900444 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
445 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
446 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
447 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
448 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100449 ['FRA_TUN_ID', 'linux/fib_rules.h'],
450 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100451 ['FRA_PAD', 'linux/fib_rules.h'],
452 ['FRA_L3MDEV', 'linux/fib_rules.h'],
453 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
454 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
455 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
456 ['FOU_CMD_GET', 'linux/fou.h'],
457 ['IFA_FLAGS', 'linux/if_addr.h'],
458 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
459 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
460 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
461 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
462 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
463 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
464 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
465 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
466 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
467 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
468 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
469 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
470 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
471 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
472 ['IFLA_PAD', 'linux/if_link.h'],
473 ['IFLA_XDP', 'linux/if_link.h'],
474 ['IFLA_EVENT', 'linux/if_link.h'],
475 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
476 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
477 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
478 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100479 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100480 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
481 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
482 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
483 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
484 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
485 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
486 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
487 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
488 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
489 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
490 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
491 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
492 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
493 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
494 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
495 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
496 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
497 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
498 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
499 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
500 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
501 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
502 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
503 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
504 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
505 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
506 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
507 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
508 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
509 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
510 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
511 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
512 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
513 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
514 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
515 # if_tunnel.h is buggy and cannot be included on its own
516 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
517 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
518 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
519 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
520 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
521 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
522 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
523 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
524 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400527 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400528 prefix = decl.length() > 2 ? decl[2] : ''
529 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200530 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531endforeach
532
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200534 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535endforeach
536
537foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100538 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100539 ['gettid', '''#include <sys/types.h>
540 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100541 ['pivot_root', '''#include <stdlib.h>
542 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100543 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 #include <sys/stat.h>
545 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100546 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100547 ['renameat2', '''#include <stdio.h>
548 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400549 ['kcmp', '''#include <linux/kcmp.h>'''],
550 ['keyctl', '''#include <sys/types.h>
551 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400553 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200554 ['bpf', '''#include <sys/syscall.h>
555 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100556 ['statx', '''#include <sys/types.h>
557 #include <sys/stat.h>
558 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100559 ['explicit_bzero' , '''#include <string.h>'''],
560 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400561]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
Lennart Poettering85db59b2017-12-25 12:01:14 +0100563 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200564 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565endforeach
566
Lennart Poettering85db59b2017-12-25 12:01:14 +0100567if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200568 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200569 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400570else
571 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200572 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200573 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400574endif
575
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576#####################################################################
577
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100578vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100579 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100580 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100581 meson.project_version()]
582
Louis Taylord1084aa2019-01-21 21:45:36 +0000583version_h = vcs_tag(
584 input : 'src/version/version.h.in',
585 output : 'version.h',
586 command: vcs_tagger)
587
588versiondep = declare_dependency(sources: version_h)
589
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400592m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400594git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100595env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100596perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400597
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400598meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400599mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400600test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
601splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400602
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
604# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500605progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607 ['kmod', '/usr/bin/kmod' ],
608 ['kexec', '/usr/sbin/kexec' ],
609 ['sulogin', '/usr/sbin/sulogin' ],
610 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
611 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
612 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
613 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
614 ]
615foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400616 path = get_option(prog[0] + '-path')
617 if path != ''
618 message('Using @1@ for @0@'.format(prog[0], path))
619 else
620 exe = find_program(prog[0],
621 '/usr/sbin/' + prog[0],
622 '/sbin/' + prog[0],
623 required: false)
624 path = exe.found() ? exe.path() : prog[1]
625 endif
626 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
627 conf.set_quoted(name, path)
628 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endforeach
630
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500631conf.set_quoted('TELINIT', get_option('telinit-path'))
632
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400633if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100634 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400635endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636
637############################################################
638
639gperf = find_program('gperf')
640
641gperf_test_format = '''
642#include <string.h>
643const char * in_word_set(const char *, @0@);
644@1@
645'''
646gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
647gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
648gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
649if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400650 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
653 if cc.compiles(gperf_test)
654 gperf_len_type = 'unsigned'
655 else
656 error('unable to determine gperf len type')
657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
659message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400660conf.set('GPERF_LEN_TYPE', gperf_len_type,
661 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662
663############################################################
664
665if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400666 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100668foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100669 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900670 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671 'linux/memfd.h',
672 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100673 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200674 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675 'valgrind/memcheck.h',
676 'valgrind/valgrind.h',
677 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400678
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200679 conf.set10('HAVE_' + header.underscorify().to_upper(),
680 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400681endforeach
682
683############################################################
684
685conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400686conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
687gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400688
689default_hierarchy = get_option('default-hierarchy')
690conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
691 description : 'default cgroup hierarchy as string')
692if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400693 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400694elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400695 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400696else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400697 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400698endif
699
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100700default_net_naming_scheme = get_option('default-net-naming-scheme')
701conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
702
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400703time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900704if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400705 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900706 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708conf.set('TIME_EPOCH', time_epoch)
709
710system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900711if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400712 system_uid_max = run_command(
713 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800714 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
715 '/etc/login.defs').stdout().strip()
716 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900717 system_uid_max = 999
718 else
719 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800720 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722conf.set('SYSTEM_UID_MAX', system_uid_max)
723substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900726if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400727 system_gid_max = run_command(
728 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800729 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
730 '/etc/login.defs').stdout().strip()
731 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900732 system_gid_max = 999
733 else
734 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800735 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737conf.set('SYSTEM_GID_MAX', system_gid_max)
738substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400739
Yu Watanabeac093402018-05-10 16:04:16 +0900740dynamic_uid_min = get_option('dynamic-uid-min')
741dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100742conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
743conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
744substs.set('dynamicuidmin', dynamic_uid_min)
745substs.set('dynamicuidmax', dynamic_uid_max)
746
Yu Watanabeac093402018-05-10 16:04:16 +0900747container_uid_base_min = get_option('container-uid-base-min')
748container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100749conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
750conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
751substs.set('containeruidbasemin', container_uid_base_min)
752substs.set('containeruidbasemax', container_uid_base_max)
753
Lennart Poetteringafde4572017-12-05 11:00:24 +0100754nobody_user = get_option('nobody-user')
755nobody_group = get_option('nobody-group')
756
Chen Qi2484bff2018-07-23 14:53:09 +0800757if not meson.is_cross_build()
758 getent_result = run_command('getent', 'passwd', '65534')
759 if getent_result.returncode() == 0
760 name = getent_result.stdout().split(':')[0]
761 if name != nobody_user
762 warning('\n' +
763 '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) +
764 'Your build will result in an user table setup that is incompatible with the local system.')
765 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100766 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800767 id_result = run_command('id', '-u', nobody_user)
768 if id_result.returncode() == 0
769 id = id_result.stdout().to_int()
770 if id != 65534
771 warning('\n' +
772 '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) +
773 'Your build will result in an user table setup that is incompatible with the local system.')
774 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100775 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100776
Chen Qi2484bff2018-07-23 14:53:09 +0800777 getent_result = run_command('getent', 'group', '65534')
778 if getent_result.returncode() == 0
779 name = getent_result.stdout().split(':')[0]
780 if name != nobody_group
781 warning('\n' +
782 '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) +
783 'Your build will result in an group table setup that is incompatible with the local system.')
784 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100785 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800786 id_result = run_command('id', '-g', nobody_group)
787 if id_result.returncode() == 0
788 id = id_result.stdout().to_int()
789 if id != 65534
790 warning('\n' +
791 '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) +
792 'Your build will result in an group table setup that is incompatible with the local system.')
793 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100794 endif
795endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900796if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900797 warning('\n' +
798 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
799 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900800endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100801
802conf.set_quoted('NOBODY_USER_NAME', nobody_user)
803conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900804substs.set('NOBODY_USER_NAME', nobody_user)
805substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100806
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807tty_gid = get_option('tty-gid')
808conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400809substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
Ikey Doherty84786b82017-12-03 12:28:23 +0000811# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900812users_gid = get_option('users-gid')
813substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000814
Yu Watanabe348b4432018-05-07 18:17:35 +0900815conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
816conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817
Michael Bieblace5e312018-07-13 23:36:13 +0200818dev_kvm_mode = get_option('dev-kvm-mode')
819substs.set('DEV_KVM_MODE', dev_kvm_mode)
820conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700821substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400823kill_user_processes = get_option('default-kill-user-processes')
824conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100825conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400826substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400828dns_servers = get_option('dns-servers')
829conf.set_quoted('DNS_SERVERS', dns_servers)
830substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400832ntp_servers = get_option('ntp-servers')
833conf.set_quoted('NTP_SERVERS', ntp_servers)
834substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835
Dave Reisner8ca9e922018-12-28 07:38:36 -0500836default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900837if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800838 if not meson.is_cross_build()
839 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
840 default_locale = run_command(choose_default_locale_sh).stdout().strip()
841 else
842 default_locale = 'C.UTF-8'
843 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900844endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500845conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
846
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
848
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400849substs.set('SUSHELL', get_option('debug-shell'))
850substs.set('DEBUGTTY', get_option('debug-tty'))
851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852enable_debug_hashmap = false
853enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900854enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900855enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200856foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900857 if name == 'hashmap'
858 enable_debug_hashmap = true
859 elif name == 'mmap-cache'
860 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900861 elif name == 'siphash'
862 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900863 elif name == 'udev'
864 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900865 else
866 message('unknown debug option "@0@", ignoring'.format(name))
867 endif
868endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
870conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900871conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900872conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400873
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200874conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200875conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200876
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877#####################################################################
878
879threads = dependency('threads')
880librt = cc.find_library('rt')
881libm = cc.find_library('m')
882libdl = cc.find_library('dl')
883libcrypt = cc.find_library('crypt')
884
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400885libcap = dependency('libcap', required : false)
886if not libcap.found()
887 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
888 libcap = cc.find_library('cap')
889endif
890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100892 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400897 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libselinux = dependency('libselinux',
909 version : '>= 2.1.9',
910 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libapparmor = dependency('libapparmor',
921 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929smack_run_label = get_option('smack-run-label')
930if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
933
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400934want_polkit = get_option('polkit')
935install_polkit = false
936install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500937if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400939
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libpolkit = dependency('polkit-gobject-1',
941 required : false)
942 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
943 message('Old polkit detected, will install pkla files')
944 install_polkit_pkla = true
945 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400948
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400949want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500950if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955 libacl = []
956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400958
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libkmod = dependency('libkmod',
982 version : '>= 15',
983 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
991want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400993 libpam = cc.find_library('pam', required : want_pam == 'true')
994 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400998 libpam = []
999 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002
1003want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libmicrohttpd = dependency('libmicrohttpd',
1006 version : '>= 0.9.33',
1007 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
1015want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001016if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libcryptsetup = dependency('libcryptsetup',
1018 version : '>= 1.6.0',
1019 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001021 have_sector = cc.has_member(
1022 'struct crypt_params_plain',
1023 'sector_size',
1024 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001027 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001031conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032
1033want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001034if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libcurl = dependency('libcurl',
1036 version : '>= 7.32.0',
1037 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044
1045want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001046want_libidn2 = get_option('libidn2')
1047if want_libidn == 'true' and want_libidn2 == 'true'
1048 error('libidn and libidn2 cannot be requested simultaneously')
1049endif
1050
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libidn = dependency('libidn',
1053 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001057 libidn = []
1058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001060if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001061 # libidn is used for both libidn and libidn2 objects
1062 libidn = dependency('libidn2',
1063 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = libidn.found()
1065else
1066 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
1070want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001071if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001072 libiptc = dependency('libiptc',
1073 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001074 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001077 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001078endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001080
1081want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001082if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001083 libqrencode = dependency('libqrencode',
1084 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001085 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001086else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001087 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001088 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001089endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001091
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001093if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001094 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1095 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001096 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001097else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = false
1099endif
1100if not have
1101 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001102 libgcrypt = []
1103 libgpg_error = []
1104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001106
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001107want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libgnutls = dependency('gnutls',
1110 version : '>= 3.1.4',
1111 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001119want_openssl = get_option('openssl')
1120if want_openssl != 'false' and not fuzzer_build
1121 libopenssl = dependency('openssl',
1122 version : '>= 1.1.0',
1123 required : want_openssl == 'true')
1124 have = libopenssl.found()
1125else
1126 have = false
1127 libopenssl = []
1128endif
1129conf.set10('HAVE_OPENSSL', have)
1130
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001132if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001133 libdw = dependency('libdw',
1134 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001135 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141
1142want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001143if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libz = dependency('zlib',
1145 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001154if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libbzip2 = cc.find_library('bz2',
1156 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001165if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libxz = dependency('liblzma',
1167 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
1175want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001176if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001178 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001179 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001181else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001183 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001184endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001185conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001186
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001187want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001188if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001189 libxkbcommon = dependency('xkbcommon',
1190 version : '>= 0.3.0',
1191 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001192 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001193else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001194 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001195 libxkbcommon = []
1196endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001197conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001198
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001199want_pcre2 = get_option('pcre2')
1200if want_pcre2 != 'false'
1201 libpcre2 = dependency('libpcre2-8',
1202 required : want_pcre2 == 'true')
1203 have = libpcre2.found()
1204else
1205 have = false
1206 libpcre2 = []
1207endif
1208conf.set10('HAVE_PCRE2', have)
1209
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001211if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001212 libglib = dependency('glib-2.0',
1213 version : '>= 2.22.0',
1214 required : want_glib == 'true')
1215 libgobject = dependency('gobject-2.0',
1216 version : '>= 2.22.0',
1217 required : want_glib == 'true')
1218 libgio = dependency('gio-2.0',
1219 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001220 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 libglib = []
1224 libgobject = []
1225 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001227conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001228
1229want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001230if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001231 libdbus = dependency('dbus-1',
1232 version : '>= 1.3.2',
1233 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001235else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001238endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001239conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001240
Yu Watanabe42303dc2017-06-18 05:22:32 +09001241default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001242if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001243 default_dnssec = 'no'
1244endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001246 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1247 default_dnssec = 'no'
1248endif
1249conf.set('DEFAULT_DNSSEC_MODE',
1250 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1251substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1252
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001253dns_over_tls = get_option('dns-over-tls')
1254if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001255 if dns_over_tls == 'openssl'
1256 have_gnutls = false
1257 else
1258 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1259 if dns_over_tls == 'gnutls' and not have_gnutls
1260 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1261 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001262 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001263 if dns_over_tls == 'gnutls' or have_gnutls
1264 have_openssl = false
1265 else
1266 have_openssl = conf.get('HAVE_OPENSSL') == 1
1267 if dns_over_tls != 'auto' and not have_openssl
1268 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1269 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1270 endif
1271 endif
1272 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001273else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001274 have = false
1275 have_gnutls = false
1276 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001277endif
1278conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001279conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1280conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001281
Iwan Timmerc9299be2018-06-13 20:26:24 +02001282default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001283if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001284 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001285endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001286if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1287 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 +02001288 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001289endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001290conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1291 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1292substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001293
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001295if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001296 have = (conf.get('HAVE_LIBCURL') == 1 and
1297 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001298 conf.get('HAVE_XZ') == 1 and
1299 conf.get('HAVE_GCRYPT') == 1)
1300 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 error('importd support was requested, but dependencies are not available')
1302 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001303else
1304 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001306conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307
1308want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001309if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001310 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1311 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001312 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1313 # it's possible to build one without the other. Complain only if
1314 # support was explictly requested. The auxiliary files like sysusers
1315 # config should be installed when any of the programs are built.
1316 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1317 error('remote support was requested, but dependencies are not available')
1318 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001319 have = have_deps[0] or have_deps[1]
1320else
1321 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001322endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001323conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001324
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001325foreach term : ['utmp',
1326 'hibernate',
1327 'environment-d',
1328 'binfmt',
1329 'coredump',
1330 'resolve',
1331 'logind',
1332 'hostnamed',
1333 'localed',
1334 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001335 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001336 'networkd',
1337 'timedated',
1338 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001339 'firstboot',
1340 'randomseed',
1341 'backlight',
1342 'vconsole',
1343 'quotacheck',
1344 'sysusers',
1345 'tmpfiles',
1346 'hwdb',
1347 'rfkill',
1348 'ldconfig',
1349 'efi',
1350 'tpm',
1351 'ima',
1352 'smack',
1353 'gshadow',
1354 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001355 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001356 'nss-systemd']
1357 have = get_option(term)
1358 name = 'ENABLE_' + term.underscorify().to_upper()
1359 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001360endforeach
1361
Yu Watanabe08540a92018-07-18 09:25:57 +09001362foreach tuple : [['nss-mymachines', 'machined'],
1363 ['nss-resolve', 'resolve']]
1364 want = get_option(tuple[0])
1365 if want != 'false'
1366 have = get_option(tuple[1])
1367 if want == 'true' and not have
1368 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1369 endif
1370 else
1371 have = false
1372 endif
1373 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1374 conf.set10(name, have)
1375endforeach
1376
1377enable_nss = false
1378foreach term : ['ENABLE_NSS_MYHOSTNAME',
1379 'ENABLE_NSS_MYMACHINES',
1380 'ENABLE_NSS_RESOLVE',
1381 'ENABLE_NSS_SYSTEMD']
1382 if conf.get(term) == 1
1383 enable_nss = true
1384 endif
1385endforeach
1386conf.set10('ENABLE_NSS', enable_nss)
1387
Yu Watanabe348b4432018-05-07 18:17:35 +09001388conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001389
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001390tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001391fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001392
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001393conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001394
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001395#####################################################################
1396
1397if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001399
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001400 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001402 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 elif efi_arch == 'x86_64'
1404 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001405 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 elif efi_arch == 'arm'
1407 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001408 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 elif efi_arch == 'aarch64'
1410 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001411 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 else
1413 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001414 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001416
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001417 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001418 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001419
Yu Watanabeac093402018-05-10 16:04:16 +09001420 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001421else
1422 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001424conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425
1426#####################################################################
1427
1428config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001429 output : 'config.h',
1430 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001431
Yu Watanabe348b4432018-05-07 18:17:35 +09001432meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1433
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001434includes = include_directories('src/basic',
1435 'src/shared',
1436 'src/systemd',
1437 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001438 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001439 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 'src/resolve',
1441 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001442 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443 'src/login',
1444 'src/udev',
1445 'src/libudev',
1446 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001447 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448 'src/libsystemd/sd-bus',
1449 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001450 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001451 'src/libsystemd/sd-hwdb',
1452 'src/libsystemd/sd-id128',
1453 'src/libsystemd/sd-netlink',
1454 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001455 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001457 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458
1459add_project_arguments('-include', 'config.h', language : 'c')
1460
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001461generate_gperfs = find_program('tools/generate-gperfs.py')
1462
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463subdir('po')
1464subdir('catalog')
1465subdir('src/systemd')
1466subdir('src/basic')
1467subdir('src/libsystemd')
1468subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471
1472libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 'journal-core',
1474 libjournal_core_sources,
1475 journald_gperf_c,
1476 include_directories : includes,
1477 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001478
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001479libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001481 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001482 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001483 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001484 include_directories : includes,
1485 link_args : ['-shared',
1486 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001487 link_with : [libbasic,
1488 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001489 link_whole : [libsystemd_static,
1490 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 dependencies : [threads,
1492 librt,
1493 libxz,
1494 liblz4],
1495 link_depends : libsystemd_sym,
1496 install : true,
1497 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498
Davide Cavalca70848ec2018-04-09 02:43:35 -07001499static_libsystemd = get_option('static-libsystemd')
1500static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1501
1502install_libsystemd_static = static_library(
1503 'systemd',
1504 libsystemd_sources,
1505 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001506 basic_sources,
1507 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001508 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001509 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001510 build_by_default : static_libsystemd != 'false',
1511 install : static_libsystemd != 'false',
1512 install_dir : rootlibdir,
1513 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1514 dependencies : [threads,
1515 librt,
1516 libxz,
1517 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001518 libcap,
1519 libblkid,
1520 libmount,
1521 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001522 libgcrypt],
1523 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1524
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525############################################################
1526
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001527# binaries that have --help and are intended for use by humans,
1528# usually, but not always, installed in /bin.
1529public_programs = []
1530
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531subdir('src/libudev')
1532subdir('src/shared')
1533subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001534subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001535subdir('src/udev')
1536subdir('src/network')
1537
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001538subdir('src/analyze')
1539subdir('src/journal-remote')
1540subdir('src/coredump')
1541subdir('src/hostname')
1542subdir('src/import')
1543subdir('src/kernel-install')
1544subdir('src/locale')
1545subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001546subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001547subdir('src/nspawn')
1548subdir('src/resolve')
1549subdir('src/timedate')
1550subdir('src/timesync')
1551subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001552subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001553
1554subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001555subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001556subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001557subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001558
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001559############################################################
1560
1561# only static linking apart from libdl, to make sure that the
1562# module is linked to all libraries that it uses.
1563test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 'test-dlopen',
1565 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001566 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001567 include_directories : includes,
1568 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001569 dependencies : [libdl],
1570 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001571
Yu Watanabe08540a92018-07-18 09:25:57 +09001572foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001573 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001574 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1575 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001576
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001577 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001578 if condition
1579 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001580
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001582 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001583
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 nss = shared_library(
1585 'nss_' + module,
1586 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001587 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 version : '2',
1589 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001590 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1591 link_args : ['-Wl,-z,nodelete',
1592 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 '-Wl,--version-script=' + version_script_arg,
1594 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001595 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 libbasic],
1597 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001598 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 link_depends : sym,
1600 install : true,
1601 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001602
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 # We cannot use shared_module because it does not support version suffix.
1604 # Unfortunately shared_library insists on creating the symlink…
1605 meson.add_install_script('sh', '-c',
1606 'rm $DESTDIR@0@/libnss_@1@.so'
1607 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001608
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001609 if want_tests != 'false'
1610 test('dlopen-nss_' + module,
1611 test_dlopen,
1612 # path to dlopen must include a slash
1613 args : nss.full_path())
1614 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001616endforeach
1617
1618############################################################
1619
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620executable('systemd',
1621 systemd_sources,
1622 include_directories : includes,
1623 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001624 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001625 dependencies : [versiondep,
1626 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001627 librt,
1628 libseccomp,
1629 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001630 libmount,
1631 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001632 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633 install : true,
1634 install_dir : rootlibexecdir)
1635
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001636meson.add_install_script(meson_make_symlink,
1637 join_paths(rootlibexecdir, 'systemd'),
1638 join_paths(rootsbindir, 'init'))
1639
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001640exe = executable('systemd-analyze',
1641 systemd_analyze_sources,
1642 include_directories : includes,
1643 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001644 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001645 dependencies : [versiondep,
1646 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647 librt,
1648 libseccomp,
1649 libselinux,
1650 libmount,
1651 libblkid],
1652 install_rpath : rootlibexecdir,
1653 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001654public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655
1656executable('systemd-journald',
1657 systemd_journald_sources,
1658 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001659 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001660 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001661 dependencies : [threads,
1662 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001663 liblz4,
1664 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001665 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001666 install : true,
1667 install_dir : rootlibexecdir)
1668
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001669exe = executable('systemd-cat',
1670 systemd_cat_sources,
1671 include_directories : includes,
1672 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001673 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674 dependencies : [threads],
1675 install_rpath : rootlibexecdir,
1676 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001677public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001678
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001679exe = executable('journalctl',
1680 journalctl_sources,
1681 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001682 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001683 dependencies : [threads,
1684 libqrencode,
1685 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001686 liblz4,
1687 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001688 install_rpath : rootlibexecdir,
1689 install : true,
1690 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001691public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692
1693executable('systemd-getty-generator',
1694 'src/getty-generator/getty-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
1701executable('systemd-debug-generator',
1702 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001704 link_with : [libshared],
1705 install_rpath : rootlibexecdir,
1706 install : true,
1707 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001708
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001709executable('systemd-run-generator',
1710 'src/run-generator/run-generator.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : systemgeneratordir)
1716
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717executable('systemd-fstab-generator',
1718 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001720 link_with : [libcore_shared,
1721 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001722 install_rpath : rootlibexecdir,
1723 install : true,
1724 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001726if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('30-systemd-environment-d-generator',
1728 'src/environment-d-generator/environment-d-generator.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001734
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 meson.add_install_script(meson_make_symlink,
1736 join_paths(sysconfdir, 'environment'),
1737 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001738endif
1739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001740if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 executable('systemd-hibernate-resume-generator',
1742 'src/hibernate-resume/hibernate-resume-generator.c',
1743 include_directories : includes,
1744 link_with : [libshared],
1745 install_rpath : rootlibexecdir,
1746 install : true,
1747 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 executable('systemd-hibernate-resume',
1750 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001751 include_directories : includes,
1752 link_with : [libshared],
1753 install_rpath : rootlibexecdir,
1754 install : true,
1755 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001756endif
1757
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001758if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 executable('systemd-gpt-auto-generator',
1760 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001761 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001763 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001764 dependencies : libblkid,
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : systemgeneratordir)
1768
1769 exe = executable('systemd-dissect',
1770 'src/dissect/dissect.c',
1771 include_directories : includes,
1772 link_with : [libshared],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001776 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001777endif
1778
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001779if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 executable('systemd-resolved',
1781 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001782 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001783 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001784 libbasic_gcrypt,
1785 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001786 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001787 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 install : true,
1789 install_dir : rootlibexecdir)
1790
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001791 exe = executable('resolvectl',
1792 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001794 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001795 libbasic_gcrypt,
1796 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001798 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 libm,
1800 libidn],
1801 install_rpath : rootlibexecdir,
1802 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001803 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001804
1805 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001806 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001807 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001808
1809 meson.add_install_script(meson_make_symlink,
1810 join_paths(bindir, 'resolvectl'),
1811 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001812endif
1813
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001814if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 executable('systemd-logind',
1816 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001817 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001819 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001820 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001821 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001822 install_rpath : rootlibexecdir,
1823 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 exe = executable('loginctl',
1827 loginctl_sources,
1828 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001829 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 dependencies : [threads,
1831 liblz4,
1832 libxz],
1833 install_rpath : rootlibexecdir,
1834 install : true,
1835 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001836 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001837
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 exe = executable('systemd-inhibit',
1839 'src/login/inhibit.c',
1840 include_directories : includes,
1841 link_with : [libshared],
1842 install_rpath : rootlibexecdir,
1843 install : true,
1844 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001845 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001846
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001847 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001848 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 pam_systemd = shared_library(
1850 'pam_systemd',
1851 pam_systemd_c,
1852 name_prefix : '',
1853 include_directories : includes,
1854 link_args : ['-shared',
1855 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001856 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 libshared_static],
1858 dependencies : [threads,
1859 libpam,
1860 libpam_misc],
1861 link_depends : pam_systemd_sym,
1862 install : true,
1863 install_dir : pamlibdir)
1864
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001865 if want_tests != 'false'
1866 test('dlopen-pam_systemd',
1867 test_dlopen,
1868 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001869 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001870 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001873 executable('systemd-user-runtime-dir',
1874 user_runtime_dir_sources,
1875 include_directories : includes,
1876 link_with : [libshared],
1877 install_rpath : rootlibexecdir,
1878 install : true,
1879 install_dir : rootlibexecdir)
1880endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001881
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001882if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 executable('systemd-user-sessions',
1884 'src/user-sessions/user-sessions.c',
1885 include_directories : includes,
1886 link_with : [libshared],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890endif
1891
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001892if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 exe = executable('bootctl',
1894 'src/boot/bootctl.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 dependencies : [libblkid],
1898 install_rpath : rootlibexecdir,
1899 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001900 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001901
1902 executable('systemd-bless-boot',
1903 'src/boot/bless-boot.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [libblkid],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001910
1911 executable('systemd-bless-boot-generator',
1912 'src/boot/bless-boot-generator.c',
1913 include_directories : includes,
1914 link_with : [libshared],
1915 install_rpath : rootlibexecdir,
1916 install : true,
1917 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001918endif
1919
Lennart Poetteringf876f532018-06-25 16:07:33 +02001920executable('systemd-boot-check-no-failures',
1921 'src/boot/boot-check-no-failures.c',
1922 include_directories : includes,
1923 link_with : [libshared],
1924 dependencies : [libblkid],
1925 install_rpath : rootlibexecdir,
1926 install : true,
1927 install_dir : rootlibexecdir)
1928
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001929exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1930 include_directories : includes,
1931 link_with : [libshared],
1932 dependencies : [threads],
1933 install_rpath : rootlibexecdir,
1934 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001935public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936
Felipe Satelerf3794362018-05-22 15:08:57 -04001937
1938if get_option('link-systemctl-shared')
1939 systemctl_link_with = [libshared]
1940else
1941 systemctl_link_with = [libsystemd_static,
1942 libshared_static,
1943 libjournal_client,
1944 libbasic_gcrypt]
1945endif
1946
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001947exe = executable('systemctl', 'src/systemctl/systemctl.c',
1948 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001949 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001950 dependencies : [threads,
1951 libcap,
1952 libselinux,
1953 libxz,
1954 liblz4],
1955 install_rpath : rootlibexecdir,
1956 install : true,
1957 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001958public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001959
Lennart Poettering61d05782018-04-16 21:41:40 +02001960if conf.get('ENABLE_PORTABLED') == 1
1961 executable('systemd-portabled',
1962 systemd_portabled_sources,
1963 include_directories : includes,
1964 link_with : [libshared],
1965 dependencies : [threads],
1966 install_rpath : rootlibexecdir,
1967 install : true,
1968 install_dir : rootlibexecdir)
1969
1970 exe = executable('portablectl', 'src/portable/portablectl.c',
1971 include_directories : includes,
1972 link_with : [libshared],
1973 dependencies : [threads],
1974 install_rpath : rootlibexecdir,
1975 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001976 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001977 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001978endif
1979
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001980foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1981 meson.add_install_script(meson_make_symlink,
1982 join_paths(rootbindir, 'systemctl'),
1983 join_paths(rootsbindir, alias))
1984endforeach
1985
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001986if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 executable('systemd-backlight',
1988 'src/backlight/backlight.c',
1989 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001990 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001991 install_rpath : rootlibexecdir,
1992 install : true,
1993 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994endif
1995
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001996if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 executable('systemd-rfkill',
1998 'src/rfkill/rfkill.c',
1999 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002000 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002004endif
2005
2006executable('systemd-system-update-generator',
2007 'src/system-update-generator/system-update-generator.c',
2008 include_directories : includes,
2009 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002010 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011 install : true,
2012 install_dir : systemgeneratordir)
2013
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002014if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-cryptsetup',
2016 'src/cryptsetup/cryptsetup.c',
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [libcryptsetup],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 executable('systemd-cryptsetup-generator',
2025 'src/cryptsetup/cryptsetup-generator.c',
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [libcryptsetup],
2029 install_rpath : rootlibexecdir,
2030 install : true,
2031 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002033 executable('systemd-veritysetup',
2034 'src/veritysetup/veritysetup.c',
2035 include_directories : includes,
2036 link_with : [libshared],
2037 dependencies : [libcryptsetup],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-veritysetup-generator',
2043 'src/veritysetup/veritysetup-generator.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 dependencies : [libcryptsetup],
2047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050endif
2051
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002052if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-sysv-generator',
2054 'src/sysv-generator/sysv-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 -04002060
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 executable('systemd-rc-local-generator',
2062 'src/rc-local-generator/rc-local-generator.c',
2063 include_directories : includes,
2064 link_with : [libshared],
2065 install_rpath : rootlibexecdir,
2066 install : true,
2067 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068endif
2069
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002070if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 executable('systemd-hostnamed',
2072 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002073 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002074 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002075 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 install : true,
2077 install_dir : rootlibexecdir)
2078
2079 exe = executable('hostnamectl',
2080 'src/hostname/hostnamectl.c',
2081 include_directories : includes,
2082 link_with : [libshared],
2083 install_rpath : rootlibexecdir,
2084 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002085 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002086endif
2087
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002088if conf.get('ENABLE_LOCALED') == 1
2089 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002090 # logind will load libxkbcommon.so dynamically on its own
2091 deps = [libdl]
2092 else
2093 deps = []
2094 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002095
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 executable('systemd-localed',
2097 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002101 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002102 install : true,
2103 install_dir : rootlibexecdir)
2104
2105 exe = executable('localectl',
2106 localectl_sources,
2107 include_directories : includes,
2108 link_with : [libshared],
2109 install_rpath : rootlibexecdir,
2110 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002111 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112endif
2113
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002114if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002115 executable('systemd-timedated',
2116 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002117 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002118 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002119 install_rpath : rootlibexecdir,
2120 install : true,
2121 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002122endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002123
Yu Watanabe6129ec82018-05-03 18:07:43 +09002124if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002125 exe = executable('timedatectl',
2126 'src/timedate/timedatectl.c',
2127 include_directories : includes,
2128 install_rpath : rootlibexecdir,
2129 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002130 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002131 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002132 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133endif
2134
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002135if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002136 executable('systemd-timesyncd',
2137 systemd_timesyncd_sources,
2138 include_directories : includes,
2139 link_with : [libshared],
2140 dependencies : [threads,
2141 libm],
2142 install_rpath : rootlibexecdir,
2143 install : true,
2144 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002145
2146 executable('systemd-time-wait-sync',
2147 'src/time-wait-sync/time-wait-sync.c',
2148 include_directories : includes,
2149 link_with : [libshared],
2150 install_rpath : rootlibexecdir,
2151 install : true,
2152 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002153endif
2154
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002155if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002156 executable('systemd-machined',
2157 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002159 link_with : [libmachine_core,
2160 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002161 install_rpath : rootlibexecdir,
2162 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002163 install_dir : rootlibexecdir)
2164
2165 exe = executable('machinectl',
2166 'src/machine/machinectl.c',
2167 include_directories : includes,
2168 link_with : [libshared],
2169 dependencies : [threads,
2170 libxz,
2171 liblz4],
2172 install_rpath : rootlibexecdir,
2173 install : true,
2174 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002175 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176endif
2177
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002178if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 executable('systemd-importd',
2180 systemd_importd_sources,
2181 include_directories : includes,
2182 link_with : [libshared],
2183 dependencies : [threads],
2184 install_rpath : rootlibexecdir,
2185 install : true,
2186 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002188 systemd_pull = executable('systemd-pull',
2189 systemd_pull_sources,
2190 include_directories : includes,
2191 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002192 dependencies : [versiondep,
2193 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002194 libz,
2195 libbzip2,
2196 libxz,
2197 libgcrypt],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 systemd_import = executable('systemd-import',
2203 systemd_import_sources,
2204 include_directories : includes,
2205 link_with : [libshared],
2206 dependencies : [libcurl,
2207 libz,
2208 libbzip2,
2209 libxz],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002214 systemd_import_fs = executable('systemd-import-fs',
2215 systemd_import_fs_sources,
2216 include_directories : includes,
2217 link_with : [libshared],
2218 install_rpath : rootlibexecdir,
2219 install : true,
2220 install_dir : rootlibexecdir)
2221
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002222 systemd_export = executable('systemd-export',
2223 systemd_export_sources,
2224 include_directories : includes,
2225 link_with : [libshared],
2226 dependencies : [libcurl,
2227 libz,
2228 libbzip2,
2229 libxz],
2230 install_rpath : rootlibexecdir,
2231 install : true,
2232 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002233
2234 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235endif
2236
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002237if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002238 exe = executable('systemd-journal-upload',
2239 systemd_journal_upload_sources,
2240 include_directories : includes,
2241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002242 dependencies : [versiondep,
2243 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 libcurl,
2245 libgnutls,
2246 libxz,
2247 liblz4],
2248 install_rpath : rootlibexecdir,
2249 install : true,
2250 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002251 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252endif
2253
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002254if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002255 s_j_remote = executable('systemd-journal-remote',
2256 systemd_journal_remote_sources,
2257 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002258 link_with : [libshared,
2259 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002260 dependencies : [threads,
2261 libmicrohttpd,
2262 libgnutls,
2263 libxz,
2264 liblz4],
2265 install_rpath : rootlibexecdir,
2266 install : true,
2267 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002269 s_j_gatewayd = executable('systemd-journal-gatewayd',
2270 systemd_journal_gatewayd_sources,
2271 include_directories : includes,
2272 link_with : [libshared],
2273 dependencies : [threads,
2274 libmicrohttpd,
2275 libgnutls,
2276 libxz,
2277 liblz4],
2278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : rootlibexecdir)
2281 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282endif
2283
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002284if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002285 executable('systemd-coredump',
2286 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002288 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 libacl,
2291 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002292 libxz,
2293 liblz4],
2294 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295 install : true,
2296 install_dir : rootlibexecdir)
2297
2298 exe = executable('coredumpctl',
2299 coredumpctl_sources,
2300 include_directories : includes,
2301 link_with : [libshared],
2302 dependencies : [threads,
2303 libxz,
2304 liblz4],
2305 install_rpath : rootlibexecdir,
2306 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002307 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308endif
2309
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002310if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 exe = executable('systemd-binfmt',
2312 'src/binfmt/binfmt.c',
2313 include_directories : includes,
2314 link_with : [libshared],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002318 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002319
2320 meson.add_install_script('sh', '-c',
2321 mkdir_p.format(binfmtdir))
2322 meson.add_install_script('sh', '-c',
2323 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2324endif
2325
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002326if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 executable('systemd-vconsole-setup',
2328 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002329 include_directories : includes,
2330 link_with : [libshared],
2331 install_rpath : rootlibexecdir,
2332 install : true,
2333 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002336if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002337 executable('systemd-random-seed',
2338 'src/random-seed/random-seed.c',
2339 include_directories : includes,
2340 link_with : [libshared],
2341 install_rpath : rootlibexecdir,
2342 install : true,
2343 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344endif
2345
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002346if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002347 executable('systemd-firstboot',
2348 'src/firstboot/firstboot.c',
2349 include_directories : includes,
2350 link_with : [libshared],
2351 dependencies : [libcrypt],
2352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002355endif
2356
2357executable('systemd-remount-fs',
2358 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002359 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002360 link_with : [libcore_shared,
2361 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002362 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363 install : true,
2364 install_dir : rootlibexecdir)
2365
2366executable('systemd-machine-id-setup',
2367 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002368 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002369 link_with : [libcore_shared,
2370 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002371 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002372 install : true,
2373 install_dir : rootbindir)
2374
2375executable('systemd-fsck',
2376 'src/fsck/fsck.c',
2377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002379 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380 install : true,
2381 install_dir : rootlibexecdir)
2382
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002383executable('systemd-growfs',
2384 'src/partition/growfs.c',
2385 include_directories : includes,
2386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002387 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002388 install_rpath : rootlibexecdir,
2389 install : true,
2390 install_dir : rootlibexecdir)
2391
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002392executable('systemd-makefs',
2393 'src/partition/makefs.c',
2394 include_directories : includes,
2395 link_with : [libshared],
2396 install_rpath : rootlibexecdir,
2397 install : true,
2398 install_dir : rootlibexecdir)
2399
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400executable('systemd-sleep',
2401 'src/sleep/sleep.c',
2402 include_directories : includes,
2403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
Yu Watanabed25e1272019-01-03 02:32:57 +09002408install_data('src/sleep/sleep.conf',
2409 install_dir : pkgsysconfdir)
2410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-sysctl',
2412 'src/sysctl/sysctl.c',
2413 include_directories : includes,
2414 link_with : [libshared],
2415 install_rpath : rootlibexecdir,
2416 install : true,
2417 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002418public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002419
2420executable('systemd-ac-power',
2421 'src/ac-power/ac-power.c',
2422 include_directories : includes,
2423 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002424 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425 install : true,
2426 install_dir : rootlibexecdir)
2427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-detect-virt',
2429 'src/detect-virt/detect-virt.c',
2430 include_directories : includes,
2431 link_with : [libshared],
2432 install_rpath : rootlibexecdir,
2433 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002434public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002436exe = executable('systemd-delta',
2437 'src/delta/delta.c',
2438 include_directories : includes,
2439 link_with : [libshared],
2440 install_rpath : rootlibexecdir,
2441 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002442public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002443
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002444exe = executable('systemd-escape',
2445 'src/escape/escape.c',
2446 include_directories : includes,
2447 link_with : [libshared],
2448 install_rpath : rootlibexecdir,
2449 install : true,
2450 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002451public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002452
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002453exe = executable('systemd-notify',
2454 'src/notify/notify.c',
2455 include_directories : includes,
2456 link_with : [libshared],
2457 install_rpath : rootlibexecdir,
2458 install : true,
2459 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002460public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
2462executable('systemd-volatile-root',
2463 'src/volatile-root/volatile-root.c',
2464 include_directories : includes,
2465 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002466 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002467 install : true,
2468 install_dir : rootlibexecdir)
2469
2470executable('systemd-cgroups-agent',
2471 'src/cgroups-agent/cgroups-agent.c',
2472 include_directories : includes,
2473 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002474 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475 install : true,
2476 install_dir : rootlibexecdir)
2477
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002478exe = executable('systemd-id128',
2479 'src/id128/id128.c',
2480 include_directories : includes,
2481 link_with : [libshared],
2482 install_rpath : rootlibexecdir,
2483 install : true)
2484public_programs += exe
2485
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486exe = executable('systemd-path',
2487 'src/path/path.c',
2488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install_rpath : rootlibexecdir,
2491 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-ask-password',
2495 'src/ask-password/ask-password.c',
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502
2503executable('systemd-reply-password',
2504 'src/reply-password/reply-password.c',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002507 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002508 install : true,
2509 install_dir : rootlibexecdir)
2510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('systemd-tty-ask-password-agent',
2512 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515 install_rpath : rootlibexecdir,
2516 install : true,
2517 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002518public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002520exe = executable('systemd-cgls',
2521 'src/cgls/cgls.c',
2522 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002523 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002524 install_rpath : rootlibexecdir,
2525 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002526public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002527
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002528exe = executable('systemd-cgtop',
2529 'src/cgtop/cgtop.c',
2530 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002531 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002532 install_rpath : rootlibexecdir,
2533 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002534public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002535
2536executable('systemd-initctl',
2537 'src/initctl/initctl.c',
2538 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002539 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002540 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541 install : true,
2542 install_dir : rootlibexecdir)
2543
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002544exe = executable('systemd-mount',
2545 'src/mount/mount-tool.c',
2546 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002547 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002548 install_rpath : rootlibexecdir,
2549 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002550public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002551
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002552meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002553 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002554
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002555exe = executable('systemd-run',
2556 'src/run/run.c',
2557 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002558 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002559 install_rpath : rootlibexecdir,
2560 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002561public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002562
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002563exe = executable('systemd-stdio-bridge',
2564 'src/stdio-bridge/stdio-bridge.c',
2565 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002566 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002567 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002568 install_rpath : rootlibexecdir,
2569 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002570public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002571
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002572exe = executable('busctl',
2573 'src/busctl/busctl.c',
2574 'src/busctl/busctl-introspect.c',
2575 'src/busctl/busctl-introspect.h',
2576 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002577 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578 install_rpath : rootlibexecdir,
2579 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002580public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002582if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002583 exe = executable('systemd-sysusers',
2584 'src/sysusers/sysusers.c',
2585 include_directories : includes,
2586 link_with : [libshared],
2587 install_rpath : rootlibexecdir,
2588 install : true,
2589 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002590 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002591endif
2592
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002593if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002594 exe = executable('systemd-tmpfiles',
2595 'src/tmpfiles/tmpfiles.c',
2596 include_directories : includes,
2597 link_with : [libshared],
2598 dependencies : [libacl],
2599 install_rpath : rootlibexecdir,
2600 install : true,
2601 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002602 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002603
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002604 if want_tests != 'false'
2605 test('test-systemd-tmpfiles',
2606 test_systemd_tmpfiles_py,
2607 # https://github.com/mesonbuild/meson/issues/2681
2608 args : exe.full_path())
2609 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610endif
2611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002612if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002613 exe = executable('systemd-hwdb',
2614 'src/hwdb/hwdb.c',
2615 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2616 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002617 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002618 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002619 install : true,
2620 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002621 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002622endif
2623
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002624if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002625 executable('systemd-quotacheck',
2626 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002628 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002629 install_rpath : rootlibexecdir,
2630 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002631 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002632endif
2633
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634exe = executable('systemd-socket-proxyd',
2635 'src/socket-proxy/socket-proxyd.c',
2636 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002637 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638 dependencies : [threads],
2639 install_rpath : rootlibexecdir,
2640 install : true,
2641 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002642public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644exe = executable('systemd-udevd',
2645 systemd_udevd_sources,
2646 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002647 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002650 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002651 dependencies : [versiondep,
2652 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002653 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002654 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002655 libacl,
2656 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002657 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002658 install : true,
2659 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002660public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002662exe = executable('udevadm',
2663 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002664 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665 include_directories : includes,
2666 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002667 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002668 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002669 dependencies : [versiondep,
2670 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002671 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002672 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002673 libacl,
2674 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002675 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002676 install : true,
2677 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002678public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679
2680executable('systemd-shutdown',
2681 systemd_shutdown_sources,
2682 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002683 link_with : [libcore_shared,
2684 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002685 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002686 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687 install : true,
2688 install_dir : rootlibexecdir)
2689
2690executable('systemd-update-done',
2691 'src/update-done/update-done.c',
2692 include_directories : includes,
2693 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002694 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695 install : true,
2696 install_dir : rootlibexecdir)
2697
2698executable('systemd-update-utmp',
2699 'src/update-utmp/update-utmp.c',
2700 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002701 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002702 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002703 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002704 install : true,
2705 install_dir : rootlibexecdir)
2706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002707if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 executable('systemd-modules-load',
2709 'src/modules-load/modules-load.c',
2710 include_directories : includes,
2711 link_with : [libshared],
2712 dependencies : [libkmod],
2713 install_rpath : rootlibexecdir,
2714 install : true,
2715 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002716
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 meson.add_install_script('sh', '-c',
2718 mkdir_p.format(modulesloaddir))
2719 meson.add_install_script('sh', '-c',
2720 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002721endif
2722
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002723exe = executable('systemd-nspawn',
2724 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002725 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002726 link_with : [libcore_shared,
2727 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002728 libshared],
2729 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002730 install_rpath : rootlibexecdir,
2731 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002732public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002733
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002734if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002735 executable('systemd-networkd',
2736 systemd_networkd_sources,
2737 include_directories : includes,
2738 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002739 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002740 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002741 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002742 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 install_rpath : rootlibexecdir,
2744 install : true,
2745 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002746
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002747 executable('systemd-networkd-wait-online',
2748 systemd_networkd_wait_online_sources,
2749 include_directories : includes,
2750 link_with : [libnetworkd_core,
2751 libshared],
2752 install_rpath : rootlibexecdir,
2753 install : true,
2754 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002755
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002756 exe = executable('networkctl',
2757 networkctl_sources,
2758 include_directories : includes,
2759 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002760 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002761 install_rpath : rootlibexecdir,
2762 install : true,
2763 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002764 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002765endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002766
2767executable('systemd-sulogin-shell',
2768 ['src/sulogin-shell/sulogin-shell.c'],
2769 include_directories : includes,
2770 link_with : [libshared],
2771 install_rpath : rootlibexecdir,
2772 install : true,
2773 install_dir : rootlibexecdir)
2774
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002775############################################################
2776
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002777custom_target(
2778 'systemd-runtest.env',
2779 output : 'systemd-runtest.env',
2780 command : ['sh', '-c', '{ ' +
2781 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002782 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002783 '} >@OUTPUT@'],
2784 build_by_default : true)
2785
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002786foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002787 sources = tuple[0]
2788 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2789 dependencies = tuple[2]
2790 condition = tuple.length() >= 4 ? tuple[3] : ''
2791 type = tuple.length() >= 5 ? tuple[4] : ''
2792 defs = tuple.length() >= 6 ? tuple[5] : []
2793 incs = tuple.length() >= 7 ? tuple[6] : includes
2794 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002795
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002796 name = sources[0].split('/')[-1].split('.')[0]
2797 if type.startswith('timeout=')
2798 timeout = type.split('=')[1].to_int()
2799 type = ''
2800 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002801
2802 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 exe = executable(
2804 name,
2805 sources,
2806 include_directories : incs,
2807 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002808 dependencies : [versiondep,
2809 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002811 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002813 install : install_tests,
2814 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002815
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002816 if type == 'manual'
2817 message('@0@ is a manual test'.format(name))
2818 elif type == 'unsafe' and want_tests != 'unsafe'
2819 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002820 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002821 test(name, exe,
2822 env : test_env,
2823 timeout : timeout)
2824 endif
2825 else
2826 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2827 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002828endforeach
2829
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002830exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002831 'test-libsystemd-sym',
2832 test_libsystemd_sym_c,
2833 include_directories : includes,
2834 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002835 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002836 install : install_tests,
2837 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002838if want_tests != 'false'
2839 test('test-libsystemd-sym', exe)
2840endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002841
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002842exe = executable(
2843 'test-libsystemd-static-sym',
2844 test_libsystemd_sym_c,
2845 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002846 link_with : [install_libsystemd_static],
2847 dependencies : [threads], # threads is already included in dependencies on the library,
2848 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002849 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002850 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002851 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002852if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002853 test('test-libsystemd-static-sym', exe)
2854endif
2855
2856exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002857 'test-libudev-sym',
2858 test_libudev_sym_c,
2859 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002860 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002861 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002862 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002863 install : install_tests,
2864 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002865if want_tests != 'false'
2866 test('test-libudev-sym', exe)
2867endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002868
2869exe = executable(
2870 'test-libudev-static-sym',
2871 test_libudev_sym_c,
2872 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002873 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002874 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002875 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002876 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002877 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002878if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002879 test('test-libudev-static-sym', exe)
2880endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002881
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002882############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002883
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002884fuzzer_exes = []
2885
Michael Olbrich59967402018-11-11 11:27:35 +01002886if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002887foreach tuple : fuzzers
2888 sources = tuple[0]
2889 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2890 dependencies = tuple[2]
2891 defs = tuple.length() >= 4 ? tuple[3] : []
2892 incs = tuple.length() >= 5 ? tuple[4] : includes
2893
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002894 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002895 dependencies += fuzzing_engine
2896 else
2897 sources += 'src/fuzz/fuzz-main.c'
2898 endif
2899
2900 name = sources[0].split('/')[-1].split('.')[0]
2901
2902 fuzzer_exes += executable(
2903 name,
2904 sources,
2905 include_directories : [incs, include_directories('src/fuzz')],
2906 link_with : link_with,
2907 dependencies : dependencies,
2908 c_args : defs,
2909 install : false)
2910endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002911endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002912
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002913run_target('fuzzers',
2914 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002915 command : ['true'])
2916
2917############################################################
2918
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002919make_directive_index_py = find_program('tools/make-directive-index.py')
2920make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002921xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002922hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002923
2924subdir('units')
2925subdir('sysctl.d')
2926subdir('sysusers.d')
2927subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002928subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002929subdir('hwdb')
2930subdir('network')
2931subdir('man')
2932subdir('shell-completion/bash')
2933subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002934subdir('docs/sysvinit')
2935subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002936
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002937install_subdir('factory/etc',
2938 install_dir : factorydir)
2939
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002940install_data('xorg/50-systemd-user.sh',
2941 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002942install_data('modprobe.d/systemd.conf',
2943 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002944install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002945 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002946 'NEWS',
2947 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302948 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002949 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002950 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302951 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002952 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002953 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002954 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002955 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2956 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002957
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002958meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2959meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2960
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002961############################################################
2962
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002963meson_check_help = find_program('tools/meson-check-help.sh')
2964
2965foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002966 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002967 if want_tests != 'false'
2968 test('check-help-' + name,
2969 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002970 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002971 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002972endforeach
2973
2974############################################################
2975
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002976# Enable tests for all supported sanitizers
2977foreach tuple : sanitizers
2978 sanitizer = tuple[0]
2979 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002980
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002981 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002982 prev = ''
2983 foreach p : fuzz_regression_tests
2984 b = p.split('/')[-2]
2985 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002986
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002987 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002988
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002989 if name != prev
2990 if want_tests == 'false'
2991 message('Not compiling @0@ because tests is set to false'.format(name))
2992 elif slow_tests
2993 exe = custom_target(
2994 name,
2995 output : name,
2996 depends : build,
2997 command : [env, 'ln', '-fs',
2998 join_paths(build.full_path(), b),
2999 '@OUTPUT@'],
3000 build_by_default : true)
3001 else
3002 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3003 endif
3004 endif
3005 prev = name
3006
3007 if want_tests != 'false' and slow_tests
3008 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3009 env,
3010 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02003011 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003012 endif
3013 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003014 endif
3015endforeach
3016
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003017
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003018############################################################
3019
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003020if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003021 all_files = run_command(
3022 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003023 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003024 'ls-files',
3025 ':/*.[ch]'])
3026 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003027
userwithuide85a6902017-08-09 13:41:44 +00003028 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003029 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003030 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003031 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003032 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003033 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003034 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003035endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003036
3037if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003038 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003039 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003040 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003041 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003042endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003043
3044if git.found()
3045 git_head = 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', 'HEAD']).stdout().strip()
3049 git_head_short = run_command(
3050 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003051 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003052 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3053
3054 run_target(
3055 'git-snapshot',
3056 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003057 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003058 git_head_short),
3059 '--prefix', 'systemd-@0@/'.format(git_head),
3060 'HEAD'])
3061endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003062
3063############################################################
3064
Lennart Poettering51b13862017-12-20 12:51:14 +01003065meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3066run_target(
3067 'check-api-docs',
3068 depends : [man, libsystemd, libudev],
3069 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3070
3071############################################################
3072
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003073status = [
3074 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3075
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003076 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003077 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003078 'prefix directory: @0@'.format(prefixdir),
3079 'rootprefix directory: @0@'.format(rootprefixdir),
3080 'sysconf directory: @0@'.format(sysconfdir),
3081 'include directory: @0@'.format(includedir),
3082 'lib directory: @0@'.format(libdir),
3083 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003084 'SysV init scripts: @0@'.format(sysvinit_path),
3085 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003086 'PAM modules directory: @0@'.format(pamlibdir),
3087 'PAM configuration directory: @0@'.format(pamconfdir),
3088 'RPM macros directory: @0@'.format(rpmmacrosdir),
3089 'modprobe.d directory: @0@'.format(modprobedir),
3090 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3091 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3092 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3093 'bash completions directory: @0@'.format(bashcompletiondir),
3094 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 'extra start script: @0@'.format(get_option('rc-local')),
3096 'extra stop script: @0@'.format(get_option('halt-local')),
3097 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3098 get_option('debug-tty')),
3099 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003100 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 'maximum system UID: @0@'.format(system_uid_max),
3102 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003103 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3104 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3105 'minimum container UID base: @0@'.format(container_uid_base_min),
3106 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003107 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003108 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003109 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003111 'nobody user name: @0@'.format(nobody_user),
3112 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003114 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003115
3116 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003117 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003119 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003120 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3121 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122
3123alt_dns_servers = '\n '.join(dns_servers.split(' '))
3124alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3125status += [
3126 'default DNS servers: @0@'.format(alt_dns_servers),
3127 'default NTP servers: @0@'.format(alt_ntp_servers)]
3128
3129alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3130 '@@0@'.format(time_epoch)).stdout().strip()
3131status += [
3132 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3133
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003134status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003135 'static libsystemd: @0@'.format(static_libsystemd),
3136 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003137
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003138# TODO:
3139# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3140# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3141# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3142
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003143if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003144 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003145
3146 if have_gnu_efi
3147 status += [
3148 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003149 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003150 'EFI lib directory: @0@'.format(efi_libdir),
3151 'EFI lds directory: @0@'.format(efi_ldsdir),
3152 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153 endif
3154endif
3155
3156found = []
3157missing = []
3158
3159foreach tuple : [
3160 ['libcryptsetup'],
3161 ['PAM'],
3162 ['AUDIT'],
3163 ['IMA'],
3164 ['AppArmor'],
3165 ['SELinux'],
3166 ['SECCOMP'],
3167 ['SMACK'],
3168 ['zlib'],
3169 ['xz'],
3170 ['lz4'],
3171 ['bzip2'],
3172 ['ACL'],
3173 ['gcrypt'],
3174 ['qrencode'],
3175 ['microhttpd'],
3176 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003177 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003178 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003179 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003180 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003181 ['libidn'],
3182 ['libiptc'],
3183 ['elfutils'],
3184 ['binfmt'],
3185 ['vconsole'],
3186 ['quotacheck'],
3187 ['tmpfiles'],
3188 ['environment.d'],
3189 ['sysusers'],
3190 ['firstboot'],
3191 ['randomseed'],
3192 ['backlight'],
3193 ['rfkill'],
3194 ['logind'],
3195 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003196 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003197 ['importd'],
3198 ['hostnamed'],
3199 ['timedated'],
3200 ['timesyncd'],
3201 ['localed'],
3202 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003203 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003204 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3205 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003206 ['coredump'],
3207 ['polkit'],
3208 ['legacy pkla', install_polkit_pkla],
3209 ['efi'],
3210 ['gnu-efi', have_gnu_efi],
3211 ['kmod'],
3212 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003213 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003214 ['blkid'],
3215 ['dbus'],
3216 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003217 ['nss-myhostname'],
3218 ['nss-mymachines'],
3219 ['nss-resolve'],
3220 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003221 ['hwdb'],
3222 ['tpm'],
3223 ['man pages', want_man],
3224 ['html pages', want_html],
3225 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226 ['SysV compat'],
3227 ['utmp'],
3228 ['ldconfig'],
3229 ['hibernate'],
3230 ['adm group', get_option('adm-group')],
3231 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003232 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233 ['debug hashmap'],
3234 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003235 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003236 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003237 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003238 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003239 ['link-udev-shared', get_option('link-udev-shared')],
3240 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003241]
3242
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003243 if tuple.length() >= 2
3244 cond = tuple[1]
3245 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003246 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3247 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003248 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003249 endif
3250 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003251 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003252 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003253 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003254 endif
3255endforeach
3256
3257status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003258 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003259 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003260 '',
3261 'disabled features: @0@'.format(', '.join(missing)),
3262 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003263message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003264
3265if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003266 warning('\n' +
3267 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3268 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3269 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003270endif