blob: 23a606fb90aaf2cbc543c9daac6f9e932354dd87 [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-Szmek3b8951c2019-02-22 11:20:18 +0100339 '-Wno-error=#warnings',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700340
341 # work-around for gcc 7.1 turning this on on its own.
342 '-Wno-error=nonnull',
343
344 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
345 # optimizations enabled, producing essentially false positives.
346 '-Wno-maybe-uninitialized',
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-ffast-math',
349 '-fno-common',
350 '-fdiagnostics-show-option',
351 '-fno-strict-aliasing',
352 '-fvisibility=hidden',
353 '-fstack-protector',
354 '-fstack-protector-strong',
355 '--param=ssp-buffer-size=4',
356]
357
358# --as-needed and --no-undefined are provided by meson by default,
359# run mesonconf to see what is enabled
360possible_link_flags = [
361 '-Wl,-z,relro',
362 '-Wl,-z,now',
363]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900365if cc.get_id() == 'clang'
366 possible_cc_flags += [
367 '-Wno-typedef-redefinition',
368 '-Wno-gnu-variable-sized-type-not-at-end',
369 ]
370endif
371
372if get_option('buildtype') != 'debug'
373 possible_cc_flags += [
374 '-ffunction-sections',
375 '-fdata-sections',
376 ]
377
378 possible_link_flags += '-Wl,--gc-sections'
379endif
380
381add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900382add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900383
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800384if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400385 #include <time.h>
386 #include <inttypes.h>
387 typedef uint64_t usec_t;
388 usec_t now(clockid_t clock);
389 int main(void) {
390 struct timespec now;
391 return 0;
392 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100393''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400394 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endif
396
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200397cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400398
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400399#####################################################################
400# compilation result tests
401
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400402conf.set('_GNU_SOURCE', true)
403conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
405conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
406conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
407conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
408conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
409conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
410conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
411conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
412
413decl_headers = '''
414#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100415#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400416'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400417
418foreach decl : ['char16_t',
419 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100420 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400421 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400422
423 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200424 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
425
426 if decl == 'struct statx'
427 if have
428 want_linux_stat_h = false
429 else
430 have = cc.sizeof(decl,
431 prefix : decl_headers + '#include <linux/stat.h>',
432 args : '-D_GNU_SOURCE') > 0
433 want_linux_stat_h = have
434 endif
435 endif
436
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200437 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200440conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700441
Yu Watanabe9714c022018-12-02 16:27:02 +0100442foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900443 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
444 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
445 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
446 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
447 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100448 ['FRA_TUN_ID', 'linux/fib_rules.h'],
449 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100450 ['FRA_PAD', 'linux/fib_rules.h'],
451 ['FRA_L3MDEV', 'linux/fib_rules.h'],
452 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
453 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
454 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
455 ['FOU_CMD_GET', 'linux/fou.h'],
456 ['IFA_FLAGS', 'linux/if_addr.h'],
457 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
458 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
459 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
460 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
461 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
462 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
463 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
464 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
465 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
466 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
467 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
468 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
469 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
470 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
471 ['IFLA_PAD', 'linux/if_link.h'],
472 ['IFLA_XDP', 'linux/if_link.h'],
473 ['IFLA_EVENT', 'linux/if_link.h'],
474 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
475 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
476 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
477 ['IFLA_MAX_MTU', 'linux/if_link.h'],
Fabrice Fontaine6a9eb112019-01-11 17:08:48 +0100478 ['IFLA_BOND_MODE', 'linux/if_link.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100479 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
480 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
481 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
482 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
483 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
484 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
485 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
486 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
487 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
488 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
489 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
490 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
491 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
492 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
493 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
494 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
495 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
496 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
497 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
498 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
499 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
500 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
501 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
502 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
503 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
504 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
505 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
506 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
507 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
508 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
509 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
510 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
511 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
512 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
513 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
514 # if_tunnel.h is buggy and cannot be included on its own
515 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
516 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
517 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
518 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
519 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
520 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
521 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
522 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
523 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
524 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400527 prefix = decl.length() > 2 ? decl[2] : ''
528 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200529 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400530endforeach
531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200533 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534endforeach
535
536foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100537 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100538 ['gettid', '''#include <sys/types.h>
539 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100540 ['pivot_root', '''#include <stdlib.h>
541 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100542 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400543 #include <sys/stat.h>
544 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100545 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100546 ['renameat2', '''#include <stdio.h>
547 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400548 ['kcmp', '''#include <linux/kcmp.h>'''],
549 ['keyctl', '''#include <sys/types.h>
550 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100551 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200553 ['bpf', '''#include <sys/syscall.h>
554 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100555 ['statx', '''#include <sys/types.h>
556 #include <sys/stat.h>
557 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100558 ['explicit_bzero' , '''#include <string.h>'''],
559 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400560]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561
Lennart Poettering85db59b2017-12-25 12:01:14 +0100562 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200563 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564endforeach
565
Lennart Poettering85db59b2017-12-25 12:01:14 +0100566if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200567 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200568 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400569else
570 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200571 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200572 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400573endif
574
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400575#####################################################################
576
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100577vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100578 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100579 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100580 meson.project_version()]
581
Louis Taylord1084aa2019-01-21 21:45:36 +0000582version_h = vcs_tag(
583 input : 'src/version/version.h.in',
584 output : 'version.h',
585 command: vcs_tagger)
586
587versiondep = declare_dependency(sources: version_h)
588
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400589sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400591m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400593git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100594env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100595perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400597meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400598mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400599test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
600splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400601
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
603# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500604progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400606 ['kmod', '/usr/bin/kmod' ],
607 ['kexec', '/usr/sbin/kexec' ],
608 ['sulogin', '/usr/sbin/sulogin' ],
609 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
610 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
611 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
612 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
613 ]
614foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400615 path = get_option(prog[0] + '-path')
616 if path != ''
617 message('Using @1@ for @0@'.format(prog[0], path))
618 else
619 exe = find_program(prog[0],
620 '/usr/sbin/' + prog[0],
621 '/sbin/' + prog[0],
622 required: false)
623 path = exe.found() ? exe.path() : prog[1]
624 endif
625 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
626 conf.set_quoted(name, path)
627 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endforeach
629
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500630conf.set_quoted('TELINIT', get_option('telinit-path'))
631
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400632if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100633 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400634endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400635
636############################################################
637
638gperf = find_program('gperf')
639
640gperf_test_format = '''
641#include <string.h>
642const char * in_word_set(const char *, @0@);
643@1@
644'''
645gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
646gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
647gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
648if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
652 if cc.compiles(gperf_test)
653 gperf_len_type = 'unsigned'
654 else
655 error('unable to determine gperf len type')
656 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400657endif
658message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400659conf.set('GPERF_LEN_TYPE', gperf_len_type,
660 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
662############################################################
663
664if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100667foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100668 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900669 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670 'linux/memfd.h',
671 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100672 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200673 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400674 'valgrind/memcheck.h',
675 'valgrind/valgrind.h',
676 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400677
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200678 conf.set10('HAVE_' + header.underscorify().to_upper(),
679 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680endforeach
681
682############################################################
683
684conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400685conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
686gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400687
688default_hierarchy = get_option('default-hierarchy')
689conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
690 description : 'default cgroup hierarchy as string')
691if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697endif
698
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100699default_net_naming_scheme = get_option('default-net-naming-scheme')
700conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
701
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900703if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400704 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900705 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400706endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707conf.set('TIME_EPOCH', time_epoch)
708
709system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900710if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400711 system_uid_max = run_command(
712 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800713 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
714 '/etc/login.defs').stdout().strip()
715 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900716 system_uid_max = 999
717 else
718 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800719 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400720endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721conf.set('SYSTEM_UID_MAX', system_uid_max)
722substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400723
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400724system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900725if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400726 system_gid_max = run_command(
727 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800728 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
729 '/etc/login.defs').stdout().strip()
730 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900731 system_gid_max = 999
732 else
733 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800734 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400735endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736conf.set('SYSTEM_GID_MAX', system_gid_max)
737substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738
Yu Watanabeac093402018-05-10 16:04:16 +0900739dynamic_uid_min = get_option('dynamic-uid-min')
740dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100741conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
742conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
743substs.set('dynamicuidmin', dynamic_uid_min)
744substs.set('dynamicuidmax', dynamic_uid_max)
745
Yu Watanabeac093402018-05-10 16:04:16 +0900746container_uid_base_min = get_option('container-uid-base-min')
747container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100748conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
749conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
750substs.set('containeruidbasemin', container_uid_base_min)
751substs.set('containeruidbasemax', container_uid_base_max)
752
Lennart Poetteringafde4572017-12-05 11:00:24 +0100753nobody_user = get_option('nobody-user')
754nobody_group = get_option('nobody-group')
755
Chen Qi2484bff2018-07-23 14:53:09 +0800756if not meson.is_cross_build()
757 getent_result = run_command('getent', 'passwd', '65534')
758 if getent_result.returncode() == 0
759 name = getent_result.stdout().split(':')[0]
760 if name != nobody_user
761 warning('\n' +
762 '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) +
763 'Your build will result in an user table setup that is incompatible with the local system.')
764 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100765 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800766 id_result = run_command('id', '-u', nobody_user)
767 if id_result.returncode() == 0
768 id = id_result.stdout().to_int()
769 if id != 65534
770 warning('\n' +
771 '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) +
772 'Your build will result in an user table setup that is incompatible with the local system.')
773 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100774 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100775
Chen Qi2484bff2018-07-23 14:53:09 +0800776 getent_result = run_command('getent', 'group', '65534')
777 if getent_result.returncode() == 0
778 name = getent_result.stdout().split(':')[0]
779 if name != nobody_group
780 warning('\n' +
781 '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) +
782 'Your build will result in an group table setup that is incompatible with the local system.')
783 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100784 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800785 id_result = run_command('id', '-g', nobody_group)
786 if id_result.returncode() == 0
787 id = id_result.stdout().to_int()
788 if id != 65534
789 warning('\n' +
790 '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) +
791 'Your build will result in an group table setup that is incompatible with the local system.')
792 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100793 endif
794endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900795if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900796 warning('\n' +
797 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
798 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900799endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100800
801conf.set_quoted('NOBODY_USER_NAME', nobody_user)
802conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900803substs.set('NOBODY_USER_NAME', nobody_user)
804substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100805
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806tty_gid = get_option('tty-gid')
807conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400808substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
Ikey Doherty84786b82017-12-03 12:28:23 +0000810# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900811users_gid = get_option('users-gid')
812substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000813
Yu Watanabe348b4432018-05-07 18:17:35 +0900814conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
815conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816
Michael Bieblace5e312018-07-13 23:36:13 +0200817dev_kvm_mode = get_option('dev-kvm-mode')
818substs.set('DEV_KVM_MODE', dev_kvm_mode)
819conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700820substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400822kill_user_processes = get_option('default-kill-user-processes')
823conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100824conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400825substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400827dns_servers = get_option('dns-servers')
828conf.set_quoted('DNS_SERVERS', dns_servers)
829substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400831ntp_servers = get_option('ntp-servers')
832conf.set_quoted('NTP_SERVERS', ntp_servers)
833substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
Dave Reisner8ca9e922018-12-28 07:38:36 -0500835default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900836if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800837 if not meson.is_cross_build()
838 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
839 default_locale = run_command(choose_default_locale_sh).stdout().strip()
840 else
841 default_locale = 'C.UTF-8'
842 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900843endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500844conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
847
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400848substs.set('SUSHELL', get_option('debug-shell'))
849substs.set('DEBUGTTY', get_option('debug-tty'))
850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851enable_debug_hashmap = false
852enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900853enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900854enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200855foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900856 if name == 'hashmap'
857 enable_debug_hashmap = true
858 elif name == 'mmap-cache'
859 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900860 elif name == 'siphash'
861 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900862 elif name == 'udev'
863 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900864 else
865 message('unknown debug option "@0@", ignoring'.format(name))
866 endif
867endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
869conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900870conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900871conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400872
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200873conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200874conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876#####################################################################
877
878threads = dependency('threads')
879librt = cc.find_library('rt')
880libm = cc.find_library('m')
881libdl = cc.find_library('dl')
882libcrypt = cc.find_library('crypt')
883
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400884libcap = dependency('libcap', required : false)
885if not libcap.found()
886 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
887 libcap = cc.find_library('cap')
888endif
889
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100891 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892
893want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500894if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400896 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libselinux = dependency('libselinux',
908 version : '>= 2.1.9',
909 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500918if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libapparmor = dependency('libapparmor',
920 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928smack_run_label = get_option('smack-run-label')
929if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931endif
932
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400933want_polkit = get_option('polkit')
934install_polkit = false
935install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400938
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libpolkit = dependency('polkit-gobject-1',
940 required : false)
941 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
942 message('Old polkit detected, will install pkla files')
943 install_polkit_pkla = true
944 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400945endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200946conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400947
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400950 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400954 libacl = []
955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500959if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
968want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libkmod = dependency('libkmod',
981 version : '>= 15',
982 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
990want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400992 libpam = cc.find_library('pam', required : want_pam == 'true')
993 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libpam = []
998 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libmicrohttpd = dependency('libmicrohttpd',
1005 version : '>= 0.9.33',
1006 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001010 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013
1014want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001015if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001016 libcryptsetup = dependency('libcryptsetup',
1017 version : '>= 1.6.0',
1018 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001020 have_sector = cc.has_member(
1021 'struct crypt_params_plain',
1022 'sector_size',
1023 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001026 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001030conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001033if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcurl = dependency('libcurl',
1035 version : '>= 7.32.0',
1036 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001045want_libidn2 = get_option('libidn2')
1046if want_libidn == 'true' and want_libidn2 == 'true'
1047 error('libidn and libidn2 cannot be requested simultaneously')
1048endif
1049
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libidn = dependency('libidn',
1052 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001054else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001056 libidn = []
1057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001059if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001060 # libidn is used for both libidn and libidn2 objects
1061 libidn = dependency('libidn2',
1062 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = libidn.found()
1064else
1065 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001070if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libiptc = dependency('libiptc',
1072 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001081if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libqrencode = dependency('libqrencode',
1083 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001092if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1094 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
1098endif
1099if not have
1100 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libgcrypt = []
1102 libgpg_error = []
1103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001107if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libgnutls = dependency('gnutls',
1109 version : '>= 3.1.4',
1110 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001118want_openssl = get_option('openssl')
1119if want_openssl != 'false' and not fuzzer_build
1120 libopenssl = dependency('openssl',
1121 version : '>= 1.1.0',
1122 required : want_openssl == 'true')
1123 have = libopenssl.found()
1124else
1125 have = false
1126 libopenssl = []
1127endif
1128conf.set10('HAVE_OPENSSL', have)
1129
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001131if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libdw = dependency('libdw',
1133 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001137 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140
1141want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001142if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libz = dependency('zlib',
1144 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001148 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001153if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libbzip2 = cc.find_library('bz2',
1155 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162
1163want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001164if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 libxz = dependency('liblzma',
1166 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001173
1174want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001175if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001176 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001177 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001178 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001186want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001187if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188 libxkbcommon = dependency('xkbcommon',
1189 version : '>= 0.3.0',
1190 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001192else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001194 libxkbcommon = []
1195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001197
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001198want_pcre2 = get_option('pcre2')
1199if want_pcre2 != 'false'
1200 libpcre2 = dependency('libpcre2-8',
1201 required : want_pcre2 == 'true')
1202 have = libpcre2.found()
1203else
1204 have = false
1205 libpcre2 = []
1206endif
1207conf.set10('HAVE_PCRE2', have)
1208
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001210if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001211 libglib = dependency('glib-2.0',
1212 version : '>= 2.22.0',
1213 required : want_glib == 'true')
1214 libgobject = dependency('gobject-2.0',
1215 version : '>= 2.22.0',
1216 required : want_glib == 'true')
1217 libgio = dependency('gio-2.0',
1218 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001219 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001220else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001221 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001222 libglib = []
1223 libgobject = []
1224 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001227
1228want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001229if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 libdbus = dependency('dbus-1',
1231 version : '>= 1.3.2',
1232 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001234else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001236 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239
Yu Watanabe42303dc2017-06-18 05:22:32 +09001240default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001241if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001242 default_dnssec = 'no'
1243endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001245 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1246 default_dnssec = 'no'
1247endif
1248conf.set('DEFAULT_DNSSEC_MODE',
1249 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1250substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1251
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001252dns_over_tls = get_option('dns-over-tls')
1253if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001254 if dns_over_tls == 'openssl'
1255 have_gnutls = false
1256 else
1257 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1258 if dns_over_tls == 'gnutls' and not have_gnutls
1259 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1260 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001261 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001262 if dns_over_tls == 'gnutls' or have_gnutls
1263 have_openssl = false
1264 else
1265 have_openssl = conf.get('HAVE_OPENSSL') == 1
1266 if dns_over_tls != 'auto' and not have_openssl
1267 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1268 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1269 endif
1270 endif
1271 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001273 have = false
1274 have_gnutls = false
1275 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276endif
1277conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001278conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1279conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001280
Iwan Timmerc9299be2018-06-13 20:26:24 +02001281default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001282if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001283 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001284endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001285if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1286 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 +02001287 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001288endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001289conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1290 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1291substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001292
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001294if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001295 have = (conf.get('HAVE_LIBCURL') == 1 and
1296 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001297 conf.get('HAVE_XZ') == 1 and
1298 conf.get('HAVE_GCRYPT') == 1)
1299 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001300 error('importd support was requested, but dependencies are not available')
1301 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001302else
1303 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001304endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001305conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001306
1307want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001308if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001309 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1310 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1312 # it's possible to build one without the other. Complain only if
1313 # support was explictly requested. The auxiliary files like sysusers
1314 # config should be installed when any of the programs are built.
1315 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1316 error('remote support was requested, but dependencies are not available')
1317 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001318 have = have_deps[0] or have_deps[1]
1319else
1320 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001321endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001322conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001323
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001324foreach term : ['utmp',
1325 'hibernate',
1326 'environment-d',
1327 'binfmt',
1328 'coredump',
1329 'resolve',
1330 'logind',
1331 'hostnamed',
1332 'localed',
1333 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001334 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001335 'networkd',
1336 'timedated',
1337 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001338 'firstboot',
1339 'randomseed',
1340 'backlight',
1341 'vconsole',
1342 'quotacheck',
1343 'sysusers',
1344 'tmpfiles',
1345 'hwdb',
1346 'rfkill',
1347 'ldconfig',
1348 'efi',
1349 'tpm',
1350 'ima',
1351 'smack',
1352 'gshadow',
1353 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001354 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001355 'nss-systemd']
1356 have = get_option(term)
1357 name = 'ENABLE_' + term.underscorify().to_upper()
1358 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001359endforeach
1360
Yu Watanabe08540a92018-07-18 09:25:57 +09001361foreach tuple : [['nss-mymachines', 'machined'],
1362 ['nss-resolve', 'resolve']]
1363 want = get_option(tuple[0])
1364 if want != 'false'
1365 have = get_option(tuple[1])
1366 if want == 'true' and not have
1367 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1368 endif
1369 else
1370 have = false
1371 endif
1372 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1373 conf.set10(name, have)
1374endforeach
1375
1376enable_nss = false
1377foreach term : ['ENABLE_NSS_MYHOSTNAME',
1378 'ENABLE_NSS_MYMACHINES',
1379 'ENABLE_NSS_RESOLVE',
1380 'ENABLE_NSS_SYSTEMD']
1381 if conf.get(term) == 1
1382 enable_nss = true
1383 endif
1384endforeach
1385conf.set10('ENABLE_NSS', enable_nss)
1386
Yu Watanabe348b4432018-05-07 18:17:35 +09001387conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001388
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001389tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001390fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001391
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001392conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001393
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001394#####################################################################
1395
1396if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001398
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001399 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001401 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 elif efi_arch == 'x86_64'
1403 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001404 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 elif efi_arch == 'arm'
1406 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001407 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 elif efi_arch == 'aarch64'
1409 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001410 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 else
1412 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001413 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001416 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001418
Yu Watanabeac093402018-05-10 16:04:16 +09001419 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001420else
1421 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001422endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001423conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424
1425#####################################################################
1426
1427config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001428 output : 'config.h',
1429 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430
Yu Watanabe348b4432018-05-07 18:17:35 +09001431meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1432
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433includes = include_directories('src/basic',
1434 'src/shared',
1435 'src/systemd',
1436 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001437 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001438 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439 'src/resolve',
1440 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001441 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 'src/login',
1443 'src/udev',
1444 'src/libudev',
1445 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001446 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447 'src/libsystemd/sd-bus',
1448 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001449 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 'src/libsystemd/sd-hwdb',
1451 'src/libsystemd/sd-id128',
1452 'src/libsystemd/sd-netlink',
1453 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001454 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001456 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457
1458add_project_arguments('-include', 'config.h', language : 'c')
1459
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001460generate_gperfs = find_program('tools/generate-gperfs.py')
1461
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462subdir('po')
1463subdir('catalog')
1464subdir('src/systemd')
1465subdir('src/basic')
1466subdir('src/libsystemd')
1467subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001470
1471libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 'journal-core',
1473 libjournal_core_sources,
1474 journald_gperf_c,
1475 include_directories : includes,
1476 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001478libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001481 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001482 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001483 include_directories : includes,
1484 link_args : ['-shared',
1485 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001486 link_with : [libbasic,
1487 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001488 link_whole : [libsystemd_static,
1489 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001490 dependencies : [threads,
1491 librt,
1492 libxz,
1493 liblz4],
1494 link_depends : libsystemd_sym,
1495 install : true,
1496 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497
Davide Cavalca70848ec2018-04-09 02:43:35 -07001498static_libsystemd = get_option('static-libsystemd')
1499static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1500
1501install_libsystemd_static = static_library(
1502 'systemd',
1503 libsystemd_sources,
1504 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001505 basic_sources,
1506 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001507 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001508 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001509 build_by_default : static_libsystemd != 'false',
1510 install : static_libsystemd != 'false',
1511 install_dir : rootlibdir,
1512 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1513 dependencies : [threads,
1514 librt,
1515 libxz,
1516 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001517 libcap,
1518 libblkid,
1519 libmount,
1520 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001521 libgcrypt],
1522 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1523
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524############################################################
1525
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001526# binaries that have --help and are intended for use by humans,
1527# usually, but not always, installed in /bin.
1528public_programs = []
1529
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530subdir('src/libudev')
1531subdir('src/shared')
1532subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001533subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001534subdir('src/udev')
1535subdir('src/network')
1536
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001537subdir('src/analyze')
1538subdir('src/journal-remote')
1539subdir('src/coredump')
1540subdir('src/hostname')
1541subdir('src/import')
1542subdir('src/kernel-install')
1543subdir('src/locale')
1544subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001545subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001546subdir('src/nspawn')
1547subdir('src/resolve')
1548subdir('src/timedate')
1549subdir('src/timesync')
1550subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001551subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001552
1553subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001554subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001555subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001556subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001557
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001558############################################################
1559
1560# only static linking apart from libdl, to make sure that the
1561# module is linked to all libraries that it uses.
1562test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 'test-dlopen',
1564 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001565 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 include_directories : includes,
1567 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001568 dependencies : [libdl],
1569 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001570
Yu Watanabe08540a92018-07-18 09:25:57 +09001571foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001572 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001573 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1574 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001575
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001576 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 if condition
1578 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001579
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001581 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001582
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001583 nss = shared_library(
1584 'nss_' + module,
1585 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001586 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 version : '2',
1588 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001589 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1590 link_args : ['-Wl,-z,nodelete',
1591 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001592 '-Wl,--version-script=' + version_script_arg,
1593 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001594 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 libbasic],
1596 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001597 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 link_depends : sym,
1599 install : true,
1600 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001601
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 # We cannot use shared_module because it does not support version suffix.
1603 # Unfortunately shared_library insists on creating the symlink…
1604 meson.add_install_script('sh', '-c',
1605 'rm $DESTDIR@0@/libnss_@1@.so'
1606 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001607
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001608 if want_tests != 'false'
1609 test('dlopen-nss_' + module,
1610 test_dlopen,
1611 # path to dlopen must include a slash
1612 args : nss.full_path())
1613 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001615endforeach
1616
1617############################################################
1618
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619executable('systemd',
1620 systemd_sources,
1621 include_directories : includes,
1622 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001623 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001624 dependencies : [versiondep,
1625 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001626 librt,
1627 libseccomp,
1628 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001629 libmount,
1630 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001631 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001632 install : true,
1633 install_dir : rootlibexecdir)
1634
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001635meson.add_install_script(meson_make_symlink,
1636 join_paths(rootlibexecdir, 'systemd'),
1637 join_paths(rootsbindir, 'init'))
1638
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001639exe = executable('systemd-analyze',
1640 systemd_analyze_sources,
1641 include_directories : includes,
1642 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001643 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001644 dependencies : [versiondep,
1645 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001646 librt,
1647 libseccomp,
1648 libselinux,
1649 libmount,
1650 libblkid],
1651 install_rpath : rootlibexecdir,
1652 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001653public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001654
1655executable('systemd-journald',
1656 systemd_journald_sources,
1657 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001658 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001659 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660 dependencies : [threads,
1661 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001662 liblz4,
1663 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001664 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665 install : true,
1666 install_dir : rootlibexecdir)
1667
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001668exe = executable('systemd-cat',
1669 systemd_cat_sources,
1670 include_directories : includes,
1671 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001672 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001673 dependencies : [threads],
1674 install_rpath : rootlibexecdir,
1675 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001676public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001677
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001678exe = executable('journalctl',
1679 journalctl_sources,
1680 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001681 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001682 dependencies : [threads,
1683 libqrencode,
1684 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001685 liblz4,
1686 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001690public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691
1692executable('systemd-getty-generator',
1693 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001695 link_with : [libshared],
1696 install_rpath : rootlibexecdir,
1697 install : true,
1698 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699
1700executable('systemd-debug-generator',
1701 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001703 link_with : [libshared],
1704 install_rpath : rootlibexecdir,
1705 install : true,
1706 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001708executable('systemd-run-generator',
1709 'src/run-generator/run-generator.c',
1710 include_directories : includes,
1711 link_with : [libshared],
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : systemgeneratordir)
1715
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716executable('systemd-fstab-generator',
1717 'src/fstab-generator/fstab-generator.c',
1718 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001720 link_with : [libshared],
1721 install_rpath : rootlibexecdir,
1722 install : true,
1723 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001725if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 executable('30-systemd-environment-d-generator',
1727 'src/environment-d-generator/environment-d-generator.c',
1728 include_directories : includes,
1729 link_with : [libshared],
1730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001733
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 meson.add_install_script(meson_make_symlink,
1735 join_paths(sysconfdir, 'environment'),
1736 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-hibernate-resume-generator',
1741 'src/hibernate-resume/hibernate-resume-generator.c',
1742 include_directories : includes,
1743 link_with : [libshared],
1744 install_rpath : rootlibexecdir,
1745 install : true,
1746 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001747
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 executable('systemd-hibernate-resume',
1749 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001750 include_directories : includes,
1751 link_with : [libshared],
1752 install_rpath : rootlibexecdir,
1753 install : true,
1754 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755endif
1756
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001757if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 executable('systemd-gpt-auto-generator',
1759 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001760 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001762 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 dependencies : libblkid,
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : systemgeneratordir)
1767
1768 exe = executable('systemd-dissect',
1769 'src/dissect/dissect.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 install_rpath : rootlibexecdir,
1773 install : true,
1774 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001775 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776endif
1777
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001778if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 executable('systemd-resolved',
1780 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001781 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001782 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001783 libbasic_gcrypt,
1784 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001785 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001786 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001787 install : true,
1788 install_dir : rootlibexecdir)
1789
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001790 exe = executable('resolvectl',
1791 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001793 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001794 libbasic_gcrypt,
1795 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001797 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 libm,
1799 libidn],
1800 install_rpath : rootlibexecdir,
1801 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001802 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001803
1804 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001805 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001806 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001807
1808 meson.add_install_script(meson_make_symlink,
1809 join_paths(bindir, 'resolvectl'),
1810 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811endif
1812
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001813if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 executable('systemd-logind',
1815 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001816 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001818 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001819 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001821 install_rpath : rootlibexecdir,
1822 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 exe = executable('loginctl',
1826 loginctl_sources,
1827 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001828 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 dependencies : [threads,
1830 liblz4,
1831 libxz],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001835 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001836
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 exe = executable('systemd-inhibit',
1838 'src/login/inhibit.c',
1839 include_directories : includes,
1840 link_with : [libshared],
1841 install_rpath : rootlibexecdir,
1842 install : true,
1843 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001844 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001845
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001846 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001847 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 pam_systemd = shared_library(
1849 'pam_systemd',
1850 pam_systemd_c,
1851 name_prefix : '',
1852 include_directories : includes,
1853 link_args : ['-shared',
1854 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001855 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 libshared_static],
1857 dependencies : [threads,
1858 libpam,
1859 libpam_misc],
1860 link_depends : pam_systemd_sym,
1861 install : true,
1862 install_dir : pamlibdir)
1863
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001864 if want_tests != 'false'
1865 test('dlopen-pam_systemd',
1866 test_dlopen,
1867 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001868 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001869 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001872 executable('systemd-user-runtime-dir',
1873 user_runtime_dir_sources,
1874 include_directories : includes,
1875 link_with : [libshared],
1876 install_rpath : rootlibexecdir,
1877 install : true,
1878 install_dir : rootlibexecdir)
1879endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001880
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001881if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 executable('systemd-user-sessions',
1883 'src/user-sessions/user-sessions.c',
1884 include_directories : includes,
1885 link_with : [libshared],
1886 install_rpath : rootlibexecdir,
1887 install : true,
1888 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001889endif
1890
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001891if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001892 exe = executable('bootctl',
1893 'src/boot/bootctl.c',
1894 include_directories : includes,
1895 link_with : [libshared],
1896 dependencies : [libblkid],
1897 install_rpath : rootlibexecdir,
1898 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001899 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001900
1901 executable('systemd-bless-boot',
1902 'src/boot/bless-boot.c',
1903 include_directories : includes,
1904 link_with : [libshared],
1905 dependencies : [libblkid],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001909
1910 executable('systemd-bless-boot-generator',
1911 'src/boot/bless-boot-generator.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917endif
1918
Lennart Poetteringf876f532018-06-25 16:07:33 +02001919executable('systemd-boot-check-no-failures',
1920 'src/boot/boot-check-no-failures.c',
1921 include_directories : includes,
1922 link_with : [libshared],
1923 dependencies : [libblkid],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootlibexecdir)
1927
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001928exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [threads],
1932 install_rpath : rootlibexecdir,
1933 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001934public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935
Felipe Satelerf3794362018-05-22 15:08:57 -04001936
1937if get_option('link-systemctl-shared')
1938 systemctl_link_with = [libshared]
1939else
1940 systemctl_link_with = [libsystemd_static,
1941 libshared_static,
1942 libjournal_client,
1943 libbasic_gcrypt]
1944endif
1945
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001946exe = executable('systemctl', 'src/systemctl/systemctl.c',
1947 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001948 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001949 dependencies : [threads,
1950 libcap,
1951 libselinux,
1952 libxz,
1953 liblz4],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001957public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001958
Lennart Poettering61d05782018-04-16 21:41:40 +02001959if conf.get('ENABLE_PORTABLED') == 1
1960 executable('systemd-portabled',
1961 systemd_portabled_sources,
1962 include_directories : includes,
1963 link_with : [libshared],
1964 dependencies : [threads],
1965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : rootlibexecdir)
1968
1969 exe = executable('portablectl', 'src/portable/portablectl.c',
1970 include_directories : includes,
1971 link_with : [libshared],
1972 dependencies : [threads],
1973 install_rpath : rootlibexecdir,
1974 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001975 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001976 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001977endif
1978
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001979foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1980 meson.add_install_script(meson_make_symlink,
1981 join_paths(rootbindir, 'systemctl'),
1982 join_paths(rootsbindir, alias))
1983endforeach
1984
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001985if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 executable('systemd-backlight',
1987 'src/backlight/backlight.c',
1988 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001989 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001990 install_rpath : rootlibexecdir,
1991 install : true,
1992 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993endif
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 executable('systemd-rfkill',
1997 'src/rfkill/rfkill.c',
1998 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001999 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 install_rpath : rootlibexecdir,
2001 install : true,
2002 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002003endif
2004
2005executable('systemd-system-update-generator',
2006 'src/system-update-generator/system-update-generator.c',
2007 include_directories : includes,
2008 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010 install : true,
2011 install_dir : systemgeneratordir)
2012
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002013if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002014 executable('systemd-cryptsetup',
2015 'src/cryptsetup/cryptsetup.c',
2016 include_directories : includes,
2017 link_with : [libshared],
2018 dependencies : [libcryptsetup],
2019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 executable('systemd-cryptsetup-generator',
2024 'src/cryptsetup/cryptsetup-generator.c',
2025 include_directories : includes,
2026 link_with : [libshared],
2027 dependencies : [libcryptsetup],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002032 executable('systemd-veritysetup',
2033 'src/veritysetup/veritysetup.c',
2034 include_directories : includes,
2035 link_with : [libshared],
2036 dependencies : [libcryptsetup],
2037 install_rpath : rootlibexecdir,
2038 install : true,
2039 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002040
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002041 executable('systemd-veritysetup-generator',
2042 'src/veritysetup/veritysetup-generator.c',
2043 include_directories : includes,
2044 link_with : [libshared],
2045 dependencies : [libcryptsetup],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049endif
2050
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002051if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-sysv-generator',
2053 'src/sysv-generator/sysv-generator.c',
2054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true,
2058 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 executable('systemd-rc-local-generator',
2061 'src/rc-local-generator/rc-local-generator.c',
2062 include_directories : includes,
2063 link_with : [libshared],
2064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 executable('systemd-hostnamed',
2071 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002072 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002073 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002074 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002075 install : true,
2076 install_dir : rootlibexecdir)
2077
2078 exe = executable('hostnamectl',
2079 'src/hostname/hostnamectl.c',
2080 include_directories : includes,
2081 link_with : [libshared],
2082 install_rpath : rootlibexecdir,
2083 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002084 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002085endif
2086
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002087if conf.get('ENABLE_LOCALED') == 1
2088 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002089 # logind will load libxkbcommon.so dynamically on its own
2090 deps = [libdl]
2091 else
2092 deps = []
2093 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002094
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002095 executable('systemd-localed',
2096 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002097 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002098 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002099 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002100 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 install : true,
2102 install_dir : rootlibexecdir)
2103
2104 exe = executable('localectl',
2105 localectl_sources,
2106 include_directories : includes,
2107 link_with : [libshared],
2108 install_rpath : rootlibexecdir,
2109 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002110 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111endif
2112
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002113if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 executable('systemd-timedated',
2115 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002116 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002117 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 install_rpath : rootlibexecdir,
2119 install : true,
2120 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002121endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122
Yu Watanabe6129ec82018-05-03 18:07:43 +09002123if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002124 exe = executable('timedatectl',
2125 'src/timedate/timedatectl.c',
2126 include_directories : includes,
2127 install_rpath : rootlibexecdir,
2128 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002129 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002130 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002131 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002132endif
2133
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002134if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002135 executable('systemd-timesyncd',
2136 systemd_timesyncd_sources,
2137 include_directories : includes,
2138 link_with : [libshared],
2139 dependencies : [threads,
2140 libm],
2141 install_rpath : rootlibexecdir,
2142 install : true,
2143 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002144
2145 executable('systemd-time-wait-sync',
2146 'src/time-wait-sync/time-wait-sync.c',
2147 include_directories : includes,
2148 link_with : [libshared],
2149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152endif
2153
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002154if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002155 executable('systemd-machined',
2156 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002157 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002158 link_with : [libmachine_core,
2159 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160 install_rpath : rootlibexecdir,
2161 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002162 install_dir : rootlibexecdir)
2163
2164 exe = executable('machinectl',
2165 'src/machine/machinectl.c',
2166 include_directories : includes,
2167 link_with : [libshared],
2168 dependencies : [threads,
2169 libxz,
2170 liblz4],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002174 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002175endif
2176
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002177if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002178 executable('systemd-importd',
2179 systemd_importd_sources,
2180 include_directories : includes,
2181 link_with : [libshared],
2182 dependencies : [threads],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002187 systemd_pull = executable('systemd-pull',
2188 systemd_pull_sources,
2189 include_directories : includes,
2190 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002191 dependencies : [versiondep,
2192 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002193 libz,
2194 libbzip2,
2195 libxz,
2196 libgcrypt],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 systemd_import = executable('systemd-import',
2202 systemd_import_sources,
2203 include_directories : includes,
2204 link_with : [libshared],
2205 dependencies : [libcurl,
2206 libz,
2207 libbzip2,
2208 libxz],
2209 install_rpath : rootlibexecdir,
2210 install : true,
2211 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002213 systemd_import_fs = executable('systemd-import-fs',
2214 systemd_import_fs_sources,
2215 include_directories : includes,
2216 link_with : [libshared],
2217 install_rpath : rootlibexecdir,
2218 install : true,
2219 install_dir : rootlibexecdir)
2220
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002221 systemd_export = executable('systemd-export',
2222 systemd_export_sources,
2223 include_directories : includes,
2224 link_with : [libshared],
2225 dependencies : [libcurl,
2226 libz,
2227 libbzip2,
2228 libxz],
2229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002232
2233 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002234endif
2235
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002236if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002237 exe = executable('systemd-journal-upload',
2238 systemd_journal_upload_sources,
2239 include_directories : includes,
2240 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002241 dependencies : [versiondep,
2242 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002243 libcurl,
2244 libgnutls,
2245 libxz,
2246 liblz4],
2247 install_rpath : rootlibexecdir,
2248 install : true,
2249 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002250 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251endif
2252
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002253if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002254 s_j_remote = executable('systemd-journal-remote',
2255 systemd_journal_remote_sources,
2256 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002257 link_with : [libshared,
2258 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002259 dependencies : [threads,
2260 libmicrohttpd,
2261 libgnutls,
2262 libxz,
2263 liblz4],
2264 install_rpath : rootlibexecdir,
2265 install : true,
2266 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 s_j_gatewayd = executable('systemd-journal-gatewayd',
2269 systemd_journal_gatewayd_sources,
2270 include_directories : includes,
2271 link_with : [libshared],
2272 dependencies : [threads,
2273 libmicrohttpd,
2274 libgnutls,
2275 libxz,
2276 liblz4],
2277 install_rpath : rootlibexecdir,
2278 install : true,
2279 install_dir : rootlibexecdir)
2280 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002281endif
2282
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002283if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002284 executable('systemd-coredump',
2285 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002287 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002289 libacl,
2290 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 libxz,
2292 liblz4],
2293 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002294 install : true,
2295 install_dir : rootlibexecdir)
2296
2297 exe = executable('coredumpctl',
2298 coredumpctl_sources,
2299 include_directories : includes,
2300 link_with : [libshared],
2301 dependencies : [threads,
2302 libxz,
2303 liblz4],
2304 install_rpath : rootlibexecdir,
2305 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002306 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307endif
2308
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002309if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002310 exe = executable('systemd-binfmt',
2311 'src/binfmt/binfmt.c',
2312 include_directories : includes,
2313 link_with : [libshared],
2314 install_rpath : rootlibexecdir,
2315 install : true,
2316 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002317 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002318
2319 meson.add_install_script('sh', '-c',
2320 mkdir_p.format(binfmtdir))
2321 meson.add_install_script('sh', '-c',
2322 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2323endif
2324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 executable('systemd-vconsole-setup',
2327 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002328 include_directories : includes,
2329 link_with : [libshared],
2330 install_rpath : rootlibexecdir,
2331 install : true,
2332 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002333endif
2334
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002335if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 executable('systemd-random-seed',
2337 'src/random-seed/random-seed.c',
2338 include_directories : includes,
2339 link_with : [libshared],
2340 install_rpath : rootlibexecdir,
2341 install : true,
2342 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343endif
2344
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002345if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 executable('systemd-firstboot',
2347 'src/firstboot/firstboot.c',
2348 include_directories : includes,
2349 link_with : [libshared],
2350 dependencies : [libcrypt],
2351 install_rpath : rootlibexecdir,
2352 install : true,
2353 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354endif
2355
2356executable('systemd-remount-fs',
2357 'src/remount-fs/remount-fs.c',
2358 'src/core/mount-setup.c',
2359 'src/core/mount-setup.h',
2360 include_directories : includes,
2361 link_with : [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',
2368 'src/core/machine-id-setup.c',
2369 'src/core/machine-id-setup.h',
2370 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002371 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002372 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373 install : true,
2374 install_dir : rootbindir)
2375
2376executable('systemd-fsck',
2377 'src/fsck/fsck.c',
2378 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002379 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002380 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381 install : true,
2382 install_dir : rootlibexecdir)
2383
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002384executable('systemd-growfs',
2385 'src/partition/growfs.c',
2386 include_directories : includes,
2387 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002388 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002389 install_rpath : rootlibexecdir,
2390 install : true,
2391 install_dir : rootlibexecdir)
2392
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002393executable('systemd-makefs',
2394 'src/partition/makefs.c',
2395 include_directories : includes,
2396 link_with : [libshared],
2397 install_rpath : rootlibexecdir,
2398 install : true,
2399 install_dir : rootlibexecdir)
2400
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401executable('systemd-sleep',
2402 'src/sleep/sleep.c',
2403 include_directories : includes,
2404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002405 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406 install : true,
2407 install_dir : rootlibexecdir)
2408
Yu Watanabed25e1272019-01-03 02:32:57 +09002409install_data('src/sleep/sleep.conf',
2410 install_dir : pkgsysconfdir)
2411
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002412exe = executable('systemd-sysctl',
2413 'src/sysctl/sysctl.c',
2414 include_directories : includes,
2415 link_with : [libshared],
2416 install_rpath : rootlibexecdir,
2417 install : true,
2418 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002419public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420
2421executable('systemd-ac-power',
2422 'src/ac-power/ac-power.c',
2423 include_directories : includes,
2424 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002425 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426 install : true,
2427 install_dir : rootlibexecdir)
2428
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002429exe = executable('systemd-detect-virt',
2430 'src/detect-virt/detect-virt.c',
2431 include_directories : includes,
2432 link_with : [libshared],
2433 install_rpath : rootlibexecdir,
2434 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002435public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437exe = executable('systemd-delta',
2438 'src/delta/delta.c',
2439 include_directories : includes,
2440 link_with : [libshared],
2441 install_rpath : rootlibexecdir,
2442 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002443public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445exe = executable('systemd-escape',
2446 'src/escape/escape.c',
2447 include_directories : includes,
2448 link_with : [libshared],
2449 install_rpath : rootlibexecdir,
2450 install : true,
2451 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002452public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002454exe = executable('systemd-notify',
2455 'src/notify/notify.c',
2456 include_directories : includes,
2457 link_with : [libshared],
2458 install_rpath : rootlibexecdir,
2459 install : true,
2460 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002461public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
2463executable('systemd-volatile-root',
2464 'src/volatile-root/volatile-root.c',
2465 include_directories : includes,
2466 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002467 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468 install : true,
2469 install_dir : rootlibexecdir)
2470
2471executable('systemd-cgroups-agent',
2472 'src/cgroups-agent/cgroups-agent.c',
2473 include_directories : includes,
2474 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002475 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476 install : true,
2477 install_dir : rootlibexecdir)
2478
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002479exe = executable('systemd-id128',
2480 'src/id128/id128.c',
2481 include_directories : includes,
2482 link_with : [libshared],
2483 install_rpath : rootlibexecdir,
2484 install : true)
2485public_programs += exe
2486
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002487exe = executable('systemd-path',
2488 'src/path/path.c',
2489 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002490 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002491 install_rpath : rootlibexecdir,
2492 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002493public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002495exe = executable('systemd-ask-password',
2496 'src/ask-password/ask-password.c',
2497 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002498 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499 install_rpath : rootlibexecdir,
2500 install : true,
2501 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002502public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002503
2504executable('systemd-reply-password',
2505 'src/reply-password/reply-password.c',
2506 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002507 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002508 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002509 install : true,
2510 install_dir : rootlibexecdir)
2511
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002512exe = executable('systemd-tty-ask-password-agent',
2513 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2514 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002515 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002516 install_rpath : rootlibexecdir,
2517 install : true,
2518 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002519public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002520
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002521exe = executable('systemd-cgls',
2522 'src/cgls/cgls.c',
2523 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002524 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002525 install_rpath : rootlibexecdir,
2526 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002527public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002528
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002529exe = executable('systemd-cgtop',
2530 'src/cgtop/cgtop.c',
2531 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002532 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533 install_rpath : rootlibexecdir,
2534 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002535public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002536
2537executable('systemd-initctl',
2538 'src/initctl/initctl.c',
2539 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002540 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002541 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002542 install : true,
2543 install_dir : rootlibexecdir)
2544
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002545exe = executable('systemd-mount',
2546 'src/mount/mount-tool.c',
2547 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002548 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002549 install_rpath : rootlibexecdir,
2550 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002551public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002552
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002553meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002554 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002555
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556exe = executable('systemd-run',
2557 'src/run/run.c',
2558 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002559 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560 install_rpath : rootlibexecdir,
2561 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002562public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002563
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002564exe = executable('systemd-stdio-bridge',
2565 'src/stdio-bridge/stdio-bridge.c',
2566 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002567 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002568 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 install_rpath : rootlibexecdir,
2570 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('busctl',
2574 'src/busctl/busctl.c',
2575 'src/busctl/busctl-introspect.c',
2576 'src/busctl/busctl-introspect.h',
2577 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002578 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002579 install_rpath : rootlibexecdir,
2580 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002581public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002583if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002584 exe = executable('systemd-sysusers',
2585 'src/sysusers/sysusers.c',
2586 include_directories : includes,
2587 link_with : [libshared],
2588 install_rpath : rootlibexecdir,
2589 install : true,
2590 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002591 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592endif
2593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002594if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 exe = executable('systemd-tmpfiles',
2596 'src/tmpfiles/tmpfiles.c',
2597 include_directories : includes,
2598 link_with : [libshared],
2599 dependencies : [libacl],
2600 install_rpath : rootlibexecdir,
2601 install : true,
2602 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002603 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002604
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002605 if want_tests != 'false'
2606 test('test-systemd-tmpfiles',
2607 test_systemd_tmpfiles_py,
2608 # https://github.com/mesonbuild/meson/issues/2681
2609 args : exe.full_path())
2610 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611endif
2612
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002613if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002614 exe = executable('systemd-hwdb',
2615 'src/hwdb/hwdb.c',
2616 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2617 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002618 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002619 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002620 install : true,
2621 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002622 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002623endif
2624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002625if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002626 executable('systemd-quotacheck',
2627 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002629 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002630 install_rpath : rootlibexecdir,
2631 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002632 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633endif
2634
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635exe = executable('systemd-socket-proxyd',
2636 'src/socket-proxy/socket-proxyd.c',
2637 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002638 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639 dependencies : [threads],
2640 install_rpath : rootlibexecdir,
2641 install : true,
2642 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002643public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002644
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002645exe = executable('systemd-udevd',
2646 systemd_udevd_sources,
2647 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002648 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002650 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002651 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002652 dependencies : [versiondep,
2653 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002654 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002655 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002656 libacl,
2657 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002658 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002659 install : true,
2660 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002661public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002663exe = executable('udevadm',
2664 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002665 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666 include_directories : includes,
2667 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002668 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002669 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002670 dependencies : [versiondep,
2671 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002672 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002673 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002674 libacl,
2675 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002676 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002677 install : true,
2678 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002679public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680
2681executable('systemd-shutdown',
2682 systemd_shutdown_sources,
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01002683 'src/core/mount-setup.c',
2684 'src/core/mount-setup.h',
2685 'src/core/killall.c',
2686 'src/core/killall.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002687 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002688 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002689 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002690 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002691 install : true,
2692 install_dir : rootlibexecdir)
2693
2694executable('systemd-update-done',
2695 'src/update-done/update-done.c',
2696 include_directories : includes,
2697 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002698 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002699 install : true,
2700 install_dir : rootlibexecdir)
2701
2702executable('systemd-update-utmp',
2703 'src/update-utmp/update-utmp.c',
2704 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002705 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002707 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002708 install : true,
2709 install_dir : rootlibexecdir)
2710
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002711if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002712 executable('systemd-modules-load',
2713 'src/modules-load/modules-load.c',
2714 include_directories : includes,
2715 link_with : [libshared],
2716 dependencies : [libkmod],
2717 install_rpath : rootlibexecdir,
2718 install : true,
2719 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002720
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002721 meson.add_install_script('sh', '-c',
2722 mkdir_p.format(modulesloaddir))
2723 meson.add_install_script('sh', '-c',
2724 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002725endif
2726
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002727exe = executable('systemd-nspawn',
2728 systemd_nspawn_sources,
2729 'src/core/mount-setup.c', # FIXME: use a variable?
2730 'src/core/mount-setup.h',
2731 'src/core/loopback-setup.c',
2732 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002733 include_directories : includes,
2734 link_with : [libnspawn_core,
2735 libshared],
2736 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002737 install_rpath : rootlibexecdir,
2738 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002739public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002740
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002741if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002742 executable('systemd-networkd',
2743 systemd_networkd_sources,
2744 include_directories : includes,
2745 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002747 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002749 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002750 install_rpath : rootlibexecdir,
2751 install : true,
2752 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002753
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002754 executable('systemd-networkd-wait-online',
2755 systemd_networkd_wait_online_sources,
2756 include_directories : includes,
2757 link_with : [libnetworkd_core,
2758 libshared],
2759 install_rpath : rootlibexecdir,
2760 install : true,
2761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002762
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002763 exe = executable('networkctl',
2764 networkctl_sources,
2765 include_directories : includes,
2766 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002767 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002768 install_rpath : rootlibexecdir,
2769 install : true,
2770 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002771 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002772endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002773
2774executable('systemd-sulogin-shell',
2775 ['src/sulogin-shell/sulogin-shell.c'],
2776 include_directories : includes,
2777 link_with : [libshared],
2778 install_rpath : rootlibexecdir,
2779 install : true,
2780 install_dir : rootlibexecdir)
2781
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002782############################################################
2783
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002784custom_target(
2785 'systemd-runtest.env',
2786 output : 'systemd-runtest.env',
2787 command : ['sh', '-c', '{ ' +
2788 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002789 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002790 '} >@OUTPUT@'],
2791 build_by_default : true)
2792
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002793foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002794 sources = tuple[0]
2795 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2796 dependencies = tuple[2]
2797 condition = tuple.length() >= 4 ? tuple[3] : ''
2798 type = tuple.length() >= 5 ? tuple[4] : ''
2799 defs = tuple.length() >= 6 ? tuple[5] : []
2800 incs = tuple.length() >= 7 ? tuple[6] : includes
2801 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002802
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002803 name = sources[0].split('/')[-1].split('.')[0]
2804 if type.startswith('timeout=')
2805 timeout = type.split('=')[1].to_int()
2806 type = ''
2807 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002808
2809 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002810 exe = executable(
2811 name,
2812 sources,
2813 include_directories : incs,
2814 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002815 dependencies : [versiondep,
2816 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002818 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002819 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002820 install : install_tests,
2821 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002822
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002823 if type == 'manual'
2824 message('@0@ is a manual test'.format(name))
2825 elif type == 'unsafe' and want_tests != 'unsafe'
2826 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002827 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002828 test(name, exe,
2829 env : test_env,
2830 timeout : timeout)
2831 endif
2832 else
2833 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2834 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002835endforeach
2836
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002837exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 'test-libsystemd-sym',
2839 test_libsystemd_sym_c,
2840 include_directories : includes,
2841 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002842 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002843 install : install_tests,
2844 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002845if want_tests != 'false'
2846 test('test-libsystemd-sym', exe)
2847endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002848
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849exe = executable(
2850 'test-libsystemd-static-sym',
2851 test_libsystemd_sym_c,
2852 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002853 link_with : [install_libsystemd_static],
2854 dependencies : [threads], # threads is already included in dependencies on the library,
2855 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002856 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002857 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002858 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002859if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002860 test('test-libsystemd-static-sym', exe)
2861endif
2862
2863exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002864 'test-libudev-sym',
2865 test_libudev_sym_c,
2866 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002867 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002868 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002869 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002870 install : install_tests,
2871 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002872if want_tests != 'false'
2873 test('test-libudev-sym', exe)
2874endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002875
2876exe = executable(
2877 'test-libudev-static-sym',
2878 test_libudev_sym_c,
2879 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002880 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002881 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002882 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002883 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002884 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002885if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002886 test('test-libudev-static-sym', exe)
2887endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002888
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002889############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002890
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002891fuzzer_exes = []
2892
Michael Olbrich59967402018-11-11 11:27:35 +01002893if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002894foreach tuple : fuzzers
2895 sources = tuple[0]
2896 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2897 dependencies = tuple[2]
2898 defs = tuple.length() >= 4 ? tuple[3] : []
2899 incs = tuple.length() >= 5 ? tuple[4] : includes
2900
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002901 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002902 dependencies += fuzzing_engine
2903 else
2904 sources += 'src/fuzz/fuzz-main.c'
2905 endif
2906
2907 name = sources[0].split('/')[-1].split('.')[0]
2908
2909 fuzzer_exes += executable(
2910 name,
2911 sources,
2912 include_directories : [incs, include_directories('src/fuzz')],
2913 link_with : link_with,
2914 dependencies : dependencies,
2915 c_args : defs,
2916 install : false)
2917endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002918endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002919
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01002920run_target('fuzzers',
2921 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002922 command : ['true'])
2923
2924############################################################
2925
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002926make_directive_index_py = find_program('tools/make-directive-index.py')
2927make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002928xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002929hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002930
2931subdir('units')
2932subdir('sysctl.d')
2933subdir('sysusers.d')
2934subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002935subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002936subdir('hwdb')
2937subdir('network')
2938subdir('man')
2939subdir('shell-completion/bash')
2940subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002941subdir('docs/sysvinit')
2942subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002943
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002944install_subdir('factory/etc',
2945 install_dir : factorydir)
2946
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002947install_data('xorg/50-systemd-user.sh',
2948 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002949install_data('modprobe.d/systemd.conf',
2950 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002951install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002952 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002953 'NEWS',
2954 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302955 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002956 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002957 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302958 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002959 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002960 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002961 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002962 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2963 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002964
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002965meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2966meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2967
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002968############################################################
2969
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002970meson_check_help = find_program('tools/meson-check-help.sh')
2971
2972foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002973 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002974 if want_tests != 'false'
2975 test('check-help-' + name,
2976 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002977 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002978 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002979endforeach
2980
2981############################################################
2982
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002983# Enable tests for all supported sanitizers
2984foreach tuple : sanitizers
2985 sanitizer = tuple[0]
2986 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002987
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002988 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002989 prev = ''
2990 foreach p : fuzz_regression_tests
2991 b = p.split('/')[-2]
2992 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002993
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002994 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002995
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002996 if name != prev
2997 if want_tests == 'false'
2998 message('Not compiling @0@ because tests is set to false'.format(name))
2999 elif slow_tests
3000 exe = custom_target(
3001 name,
3002 output : name,
3003 depends : build,
3004 command : [env, 'ln', '-fs',
3005 join_paths(build.full_path(), b),
3006 '@OUTPUT@'],
3007 build_by_default : true)
3008 else
3009 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3010 endif
3011 endif
3012 prev = name
3013
3014 if want_tests != 'false' and slow_tests
3015 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3016 env,
3017 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02003018 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003019 endif
3020 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003021 endif
3022endforeach
3023
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003024
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003025############################################################
3026
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003027if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003028 all_files = run_command(
3029 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003030 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003031 'ls-files',
3032 ':/*.[ch]'])
3033 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003034
userwithuide85a6902017-08-09 13:41:44 +00003035 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003036 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003037 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003038 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003039 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003040 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003041 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003042endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003043
3044if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003045 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003046 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003047 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003048 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003049endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003050
3051if git.found()
3052 git_head = run_command(
3053 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003054 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003055 'rev-parse', 'HEAD']).stdout().strip()
3056 git_head_short = run_command(
3057 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003058 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003059 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3060
3061 run_target(
3062 'git-snapshot',
3063 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003064 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003065 git_head_short),
3066 '--prefix', 'systemd-@0@/'.format(git_head),
3067 'HEAD'])
3068endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003069
3070############################################################
3071
Lennart Poettering51b13862017-12-20 12:51:14 +01003072meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3073run_target(
3074 'check-api-docs',
3075 depends : [man, libsystemd, libudev],
3076 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3077
3078############################################################
3079
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003080status = [
3081 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3082
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003083 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003084 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003085 'prefix directory: @0@'.format(prefixdir),
3086 'rootprefix directory: @0@'.format(rootprefixdir),
3087 'sysconf directory: @0@'.format(sysconfdir),
3088 'include directory: @0@'.format(includedir),
3089 'lib directory: @0@'.format(libdir),
3090 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091 'SysV init scripts: @0@'.format(sysvinit_path),
3092 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003093 'PAM modules directory: @0@'.format(pamlibdir),
3094 'PAM configuration directory: @0@'.format(pamconfdir),
3095 'RPM macros directory: @0@'.format(rpmmacrosdir),
3096 'modprobe.d directory: @0@'.format(modprobedir),
3097 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3098 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3099 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3100 'bash completions directory: @0@'.format(bashcompletiondir),
3101 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003102 'extra start script: @0@'.format(get_option('rc-local')),
3103 'extra stop script: @0@'.format(get_option('halt-local')),
3104 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3105 get_option('debug-tty')),
3106 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003107 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003108 'maximum system UID: @0@'.format(system_uid_max),
3109 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003110 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3111 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3112 'minimum container UID base: @0@'.format(container_uid_base_min),
3113 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003114 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003115 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003116 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003118 'nobody user name: @0@'.format(nobody_user),
3119 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003121 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122
3123 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003124 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003125 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003126 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003127 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
3128 'default locale: @0@'.format(default_locale)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129
3130alt_dns_servers = '\n '.join(dns_servers.split(' '))
3131alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3132status += [
3133 'default DNS servers: @0@'.format(alt_dns_servers),
3134 'default NTP servers: @0@'.format(alt_ntp_servers)]
3135
3136alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3137 '@@0@'.format(time_epoch)).stdout().strip()
3138status += [
3139 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3140
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003141status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003142 'static libsystemd: @0@'.format(static_libsystemd),
3143 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003144
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003145# TODO:
3146# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3147# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3148# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3149
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003150if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003151 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003152
3153 if have_gnu_efi
3154 status += [
3155 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003156 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003157 'EFI lib directory: @0@'.format(efi_libdir),
3158 'EFI lds directory: @0@'.format(efi_ldsdir),
3159 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003160 endif
3161endif
3162
3163found = []
3164missing = []
3165
3166foreach tuple : [
3167 ['libcryptsetup'],
3168 ['PAM'],
3169 ['AUDIT'],
3170 ['IMA'],
3171 ['AppArmor'],
3172 ['SELinux'],
3173 ['SECCOMP'],
3174 ['SMACK'],
3175 ['zlib'],
3176 ['xz'],
3177 ['lz4'],
3178 ['bzip2'],
3179 ['ACL'],
3180 ['gcrypt'],
3181 ['qrencode'],
3182 ['microhttpd'],
3183 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003184 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003185 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003186 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003187 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003188 ['libidn'],
3189 ['libiptc'],
3190 ['elfutils'],
3191 ['binfmt'],
3192 ['vconsole'],
3193 ['quotacheck'],
3194 ['tmpfiles'],
3195 ['environment.d'],
3196 ['sysusers'],
3197 ['firstboot'],
3198 ['randomseed'],
3199 ['backlight'],
3200 ['rfkill'],
3201 ['logind'],
3202 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003203 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003204 ['importd'],
3205 ['hostnamed'],
3206 ['timedated'],
3207 ['timesyncd'],
3208 ['localed'],
3209 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003210 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003211 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3212 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003213 ['coredump'],
3214 ['polkit'],
3215 ['legacy pkla', install_polkit_pkla],
3216 ['efi'],
3217 ['gnu-efi', have_gnu_efi],
3218 ['kmod'],
3219 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003220 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003221 ['blkid'],
3222 ['dbus'],
3223 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003224 ['nss-myhostname'],
3225 ['nss-mymachines'],
3226 ['nss-resolve'],
3227 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003228 ['hwdb'],
3229 ['tpm'],
3230 ['man pages', want_man],
3231 ['html pages', want_html],
3232 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233 ['SysV compat'],
3234 ['utmp'],
3235 ['ldconfig'],
3236 ['hibernate'],
3237 ['adm group', get_option('adm-group')],
3238 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003239 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003240 ['debug hashmap'],
3241 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003242 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003243 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003244 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003245 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003246 ['link-udev-shared', get_option('link-udev-shared')],
3247 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003248]
3249
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003250 if tuple.length() >= 2
3251 cond = tuple[1]
3252 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003253 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3254 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003255 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003256 endif
3257 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003258 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003259 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003260 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003261 endif
3262endforeach
3263
3264status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003265 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003266 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003267 '',
3268 'disabled features: @0@'.format(', '.join(missing)),
3269 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003270message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003271
3272if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003273 warning('\n' +
3274 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3275 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3276 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003277endif