blob: f528b4125f0fa0f106463100a66b51e09c11b25f [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024
25substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010026substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
27substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040028
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020029want_ossfuzz = get_option('oss-fuzz')
30want_libfuzzer = get_option('llvm-fuzz')
31if want_ossfuzz and want_libfuzzer
32 error('only one of oss-fuzz and llvm-fuzz can be specified')
33endif
34fuzzer_build = want_ossfuzz or want_libfuzzer
35
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040036#####################################################################
37
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040038# Try to install the git pre-commit hook
39git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
40if git_hook.returncode() == 0
41 message(git_hook.stdout().strip())
42endif
43
44#####################################################################
45
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010046if get_option('split-usr') == 'auto'
47 split_usr = run_command('test', '-L', '/bin').returncode() != 0
48else
49 split_usr = get_option('split-usr') == 'true'
50endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010051conf.set10('HAVE_SPLIT_USR', split_usr,
52 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010053
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010054if get_option('split-bin') == 'auto'
55 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
56else
57 split_bin = get_option('split-bin') == 'true'
58endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010059conf.set10('HAVE_SPLIT_BIN', split_bin,
60 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010061
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010062rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063# Unusual rootprefixdir values are used by some distros
64# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010065rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010066if rootprefixdir == ''
67 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010068endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040069
70sysvinit_path = get_option('sysvinit-path')
71sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090072conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020073 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040074
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020075conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
76conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010077conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020078
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040079# join_paths ignore the preceding arguments if an absolute component is
80# encountered, so this should canonicalize various paths when they are
81# absolute or relative.
82prefixdir = get_option('prefix')
83if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040084 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040085endif
86bindir = join_paths(prefixdir, get_option('bindir'))
87libdir = join_paths(prefixdir, get_option('libdir'))
88sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
89includedir = join_paths(prefixdir, get_option('includedir'))
90datadir = join_paths(prefixdir, get_option('datadir'))
91localstatedir = join_paths('/', get_option('localstatedir'))
92
93rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010094rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040095rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
96
97rootlibdir = get_option('rootlibdir')
98if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040099 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400100endif
101
102# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200103pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
104pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400105polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
106polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
107polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
108varlogdir = join_paths(localstatedir, 'log')
109xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900110rpmmacrosdir = get_option('rpmmacrosdir')
111if rpmmacrosdir != 'no'
112 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
113endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200114modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400115
116# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400117pkgdatadir = join_paths(datadir, 'systemd')
118environmentdir = join_paths(prefixdir, 'lib/environment.d')
119pkgsysconfdir = join_paths(sysconfdir, 'systemd')
120userunitdir = join_paths(prefixdir, 'lib/systemd/user')
121userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
122tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
123sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
124sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
125binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
126modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
127networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
128pkgincludedir = join_paths(includedir, 'systemd')
129systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
130usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
131systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
132userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
133systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
134systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
135systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
136systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
137udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
138udevhomedir = udevlibexecdir
139udevrulesdir = 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-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('exec_prefix', prefixdir)
239substs.set('libdir', libdir)
240substs.set('rootlibdir', rootlibdir)
241substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('bindir', bindir)
244substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('rootlibexecdir', rootlibexecdir)
246substs.set('systemunitdir', systemunitdir)
247substs.set('userunitdir', userunitdir)
248substs.set('systempresetdir', systempresetdir)
249substs.set('userpresetdir', userpresetdir)
250substs.set('udevhwdbdir', udevhwdbdir)
251substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200253substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('catalogdir', catalogdir)
255substs.set('tmpfilesdir', tmpfilesdir)
256substs.set('sysusersdir', sysusersdir)
257substs.set('sysctldir', sysctldir)
258substs.set('binfmtdir', binfmtdir)
259substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200260substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('systemgeneratordir', systemgeneratordir)
262substs.set('usergeneratordir', usergeneratordir)
263substs.set('systemenvgeneratordir', systemenvgeneratordir)
264substs.set('userenvgeneratordir', userenvgeneratordir)
265substs.set('systemshutdowndir', systemshutdowndir)
266substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('VARLOGDIR', varlogdir)
268substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400269substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
270substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400271substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
272substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
273substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
274substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100275substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200276substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277
278#####################################################################
279
280cc = meson.get_compiler('c')
281pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400282check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100283meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400284
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200285want_tests = get_option('tests')
286slow_tests = want_tests != 'false' and get_option('slow-tests')
287install_tests = get_option('install-tests')
288
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200289cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200290if cxx.found()
291 # Used only for tests
292 add_languages('cpp')
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',
339
340 # work-around for gcc 7.1 turning this on on its own.
341 '-Wno-error=nonnull',
342
343 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
344 # optimizations enabled, producing essentially false positives.
345 '-Wno-maybe-uninitialized',
346
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347 '-ffast-math',
348 '-fno-common',
349 '-fdiagnostics-show-option',
350 '-fno-strict-aliasing',
351 '-fvisibility=hidden',
352 '-fstack-protector',
353 '-fstack-protector-strong',
354 '--param=ssp-buffer-size=4',
355]
356
357# --as-needed and --no-undefined are provided by meson by default,
358# run mesonconf to see what is enabled
359possible_link_flags = [
360 '-Wl,-z,relro',
361 '-Wl,-z,now',
362]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400363
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500364# the oss-fuzz fuzzers are not built with -fPIE, so don't
365# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500366if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900367 possible_cc_flags += '-fPIE'
368 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500369endif
370
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900371if cc.get_id() == 'clang'
372 possible_cc_flags += [
373 '-Wno-typedef-redefinition',
374 '-Wno-gnu-variable-sized-type-not-at-end',
375 ]
376endif
377
378if get_option('buildtype') != 'debug'
379 possible_cc_flags += [
380 '-ffunction-sections',
381 '-fdata-sections',
382 ]
383
384 possible_link_flags += '-Wl,--gc-sections'
385endif
386
387add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900388add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900389
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800390if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391 #include <time.h>
392 #include <inttypes.h>
393 typedef uint64_t usec_t;
394 usec_t now(clockid_t clock);
395 int main(void) {
396 struct timespec now;
397 return 0;
398 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100399''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401endif
402
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200403cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405#####################################################################
406# compilation result tests
407
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400408conf.set('_GNU_SOURCE', true)
409conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410
411conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
417conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
418
419decl_headers = '''
420#include <uchar.h>
421#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000422#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100423#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425
426foreach decl : ['char16_t',
427 'char32_t',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000428 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530429 'struct fib_rule_port_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100430 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400431 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400432
433 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200434 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
435
436 if decl == 'struct statx'
437 if have
438 want_linux_stat_h = false
439 else
440 have = cc.sizeof(decl,
441 prefix : decl_headers + '#include <linux/stat.h>',
442 args : '-D_GNU_SOURCE') > 0
443 want_linux_stat_h = have
444 endif
445 endif
446
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200447 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448endforeach
449
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200450conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700451
Yu Watanabe9714c022018-12-02 16:27:02 +0100452foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900453 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
454 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
455 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
456 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
457 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100458 ['FRA_TUN_ID', 'linux/fib_rules.h'],
459 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100460 ['FRA_PAD', 'linux/fib_rules.h'],
461 ['FRA_L3MDEV', 'linux/fib_rules.h'],
462 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
463 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
464 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
465 ['FOU_CMD_GET', 'linux/fou.h'],
466 ['IFA_FLAGS', 'linux/if_addr.h'],
467 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
468 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
469 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
470 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
471 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
472 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
473 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
474 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
475 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
476 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
477 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
478 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
479 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
480 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
481 ['IFLA_PAD', 'linux/if_link.h'],
482 ['IFLA_XDP', 'linux/if_link.h'],
483 ['IFLA_EVENT', 'linux/if_link.h'],
484 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
485 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
486 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
487 ['IFLA_MAX_MTU', 'linux/if_link.h'],
488 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
489 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
490 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
491 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
492 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
493 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
494 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
495 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
496 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
497 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
498 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
499 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
500 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
501 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
502 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
503 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
504 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
505 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
506 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
507 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
508 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
509 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
510 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
511 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
512 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
513 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
514 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
515 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
516 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
517 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
518 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
519 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
520 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
521 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
522 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
523 # if_tunnel.h is buggy and cannot be included on its own
524 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
525 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
527 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
528 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
529 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
530 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
531 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
532 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
533 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
534 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400536 prefix = decl.length() > 2 ? decl[2] : ''
537 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200538 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400539endforeach
540
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400541foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200542 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543endforeach
544
545foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100546 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100547 ['gettid', '''#include <sys/types.h>
548 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100549 ['pivot_root', '''#include <stdlib.h>
550 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100551 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400552 #include <sys/stat.h>
553 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100554 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100555 ['renameat2', '''#include <stdio.h>
556 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400557 ['kcmp', '''#include <linux/kcmp.h>'''],
558 ['keyctl', '''#include <sys/types.h>
559 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100560 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400561 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200562 ['bpf', '''#include <sys/syscall.h>
563 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100564 ['statx', '''#include <sys/types.h>
565 #include <sys/stat.h>
566 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100567 ['explicit_bzero' , '''#include <string.h>'''],
568 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400569]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400570
Lennart Poettering85db59b2017-12-25 12:01:14 +0100571 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200572 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573endforeach
574
Lennart Poettering85db59b2017-12-25 12:01:14 +0100575if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200576 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200577 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400578else
579 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200580 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200581 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400582endif
583
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584#####################################################################
585
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100586vcs_tagger = [meson.source_root() + '/tools/meson-vcs-tag.sh',
Zbigniew Jędrzejewski-Szmeke4d57532018-12-19 13:25:07 +0100587 meson.source_root(),
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100588 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100589 meson.project_version()]
590
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400592awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400593m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400595git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100596env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100597perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400599meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400600mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400601test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
602splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400603
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
605# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500606progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608 ['kmod', '/usr/bin/kmod' ],
609 ['kexec', '/usr/sbin/kexec' ],
610 ['sulogin', '/usr/sbin/sulogin' ],
611 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
612 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
613 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
614 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
615 ]
616foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 path = get_option(prog[0] + '-path')
618 if path != ''
619 message('Using @1@ for @0@'.format(prog[0], path))
620 else
621 exe = find_program(prog[0],
622 '/usr/sbin/' + prog[0],
623 '/sbin/' + prog[0],
624 required: false)
625 path = exe.found() ? exe.path() : prog[1]
626 endif
627 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
628 conf.set_quoted(name, path)
629 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endforeach
631
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500632conf.set_quoted('TELINIT', get_option('telinit-path'))
633
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400634if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100635 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400636endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400637
638############################################################
639
640gperf = find_program('gperf')
641
642gperf_test_format = '''
643#include <string.h>
644const char * in_word_set(const char *, @0@);
645@1@
646'''
647gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
648gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
649gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
650if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400652else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400653 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
654 if cc.compiles(gperf_test)
655 gperf_len_type = 'unsigned'
656 else
657 error('unable to determine gperf len type')
658 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659endif
660message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661conf.set('GPERF_LEN_TYPE', gperf_len_type,
662 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663
664############################################################
665
666if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400667 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100669foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100670 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900671 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672 'linux/memfd.h',
673 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100674 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200675 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676 'valgrind/memcheck.h',
677 'valgrind/valgrind.h',
678 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400679
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200680 conf.set10('HAVE_' + header.underscorify().to_upper(),
681 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682endforeach
683
684############################################################
685
686conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400687conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
688gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689
690default_hierarchy = get_option('default-hierarchy')
691conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
692 description : 'default cgroup hierarchy as string')
693if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400696 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400697else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400698 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400699endif
700
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100701default_net_naming_scheme = get_option('default-net-naming-scheme')
702conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
703
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900705if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400706 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900707 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400708endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400709conf.set('TIME_EPOCH', time_epoch)
710
711system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900712if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400713 system_uid_max = run_command(
714 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800715 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
716 '/etc/login.defs').stdout().strip()
717 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900718 system_uid_max = 999
719 else
720 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800721 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400723conf.set('SYSTEM_UID_MAX', system_uid_max)
724substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400725
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400726system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900727if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400728 system_gid_max = run_command(
729 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800730 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
731 '/etc/login.defs').stdout().strip()
732 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900733 system_gid_max = 999
734 else
735 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800736 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400737endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400738conf.set('SYSTEM_GID_MAX', system_gid_max)
739substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400740
Yu Watanabeac093402018-05-10 16:04:16 +0900741dynamic_uid_min = get_option('dynamic-uid-min')
742dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100743conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
744conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
745substs.set('dynamicuidmin', dynamic_uid_min)
746substs.set('dynamicuidmax', dynamic_uid_max)
747
Yu Watanabeac093402018-05-10 16:04:16 +0900748container_uid_base_min = get_option('container-uid-base-min')
749container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100750conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
751conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
752substs.set('containeruidbasemin', container_uid_base_min)
753substs.set('containeruidbasemax', container_uid_base_max)
754
Lennart Poetteringafde4572017-12-05 11:00:24 +0100755nobody_user = get_option('nobody-user')
756nobody_group = get_option('nobody-group')
757
Chen Qi2484bff2018-07-23 14:53:09 +0800758if not meson.is_cross_build()
759 getent_result = run_command('getent', 'passwd', '65534')
760 if getent_result.returncode() == 0
761 name = getent_result.stdout().split(':')[0]
762 if name != nobody_user
763 warning('\n' +
764 '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) +
765 'Your build will result in an user table setup that is incompatible with the local system.')
766 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100767 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800768 id_result = run_command('id', '-u', nobody_user)
769 if id_result.returncode() == 0
770 id = id_result.stdout().to_int()
771 if id != 65534
772 warning('\n' +
773 '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) +
774 'Your build will result in an user table setup that is incompatible with the local system.')
775 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100776 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100777
Chen Qi2484bff2018-07-23 14:53:09 +0800778 getent_result = run_command('getent', 'group', '65534')
779 if getent_result.returncode() == 0
780 name = getent_result.stdout().split(':')[0]
781 if name != nobody_group
782 warning('\n' +
783 '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) +
784 'Your build will result in an group table setup that is incompatible with the local system.')
785 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100786 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800787 id_result = run_command('id', '-g', nobody_group)
788 if id_result.returncode() == 0
789 id = id_result.stdout().to_int()
790 if id != 65534
791 warning('\n' +
792 '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) +
793 'Your build will result in an group table setup that is incompatible with the local system.')
794 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100795 endif
796endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900797if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900798 warning('\n' +
799 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
800 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900801endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100802
803conf.set_quoted('NOBODY_USER_NAME', nobody_user)
804conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900805substs.set('NOBODY_USER_NAME', nobody_user)
806substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808tty_gid = get_option('tty-gid')
809conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400810substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811
Ikey Doherty84786b82017-12-03 12:28:23 +0000812# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900813users_gid = get_option('users-gid')
814substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000815
Yu Watanabe348b4432018-05-07 18:17:35 +0900816conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
817conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818
Michael Bieblace5e312018-07-13 23:36:13 +0200819dev_kvm_mode = get_option('dev-kvm-mode')
820substs.set('DEV_KVM_MODE', dev_kvm_mode)
821conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700822substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400824kill_user_processes = get_option('default-kill-user-processes')
825conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100826conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400827substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400829dns_servers = get_option('dns-servers')
830conf.set_quoted('DNS_SERVERS', dns_servers)
831substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400833ntp_servers = get_option('ntp-servers')
834conf.set_quoted('NTP_SERVERS', ntp_servers)
835substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836
837conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
838
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400839substs.set('SUSHELL', get_option('debug-shell'))
840substs.set('DEBUGTTY', get_option('debug-tty'))
841
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200842enable_debug_hashmap = false
843enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900844enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900845enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200846foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900847 if name == 'hashmap'
848 enable_debug_hashmap = true
849 elif name == 'mmap-cache'
850 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900851 elif name == 'siphash'
852 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900853 elif name == 'udev'
854 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900855 else
856 message('unknown debug option "@0@", ignoring'.format(name))
857 endif
858endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
860conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900861conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900862conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400863
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200864conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200865conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200866
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867#####################################################################
868
869threads = dependency('threads')
870librt = cc.find_library('rt')
871libm = cc.find_library('m')
872libdl = cc.find_library('dl')
873libcrypt = cc.find_library('crypt')
874
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400875libcap = dependency('libcap', required : false)
876if not libcap.found()
877 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
878 libcap = cc.find_library('cap')
879endif
880
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100882 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
884want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500885if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400887 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libselinux = dependency('libselinux',
899 version : '>= 2.1.9',
900 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libapparmor = dependency('libapparmor',
911 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919smack_run_label = get_option('smack-run-label')
920if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922endif
923
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400924want_polkit = get_option('polkit')
925install_polkit = false
926install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500927if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400929
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libpolkit = dependency('polkit-gobject-1',
931 required : false)
932 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
933 message('Old polkit detected, will install pkla files')
934 install_polkit_pkla = true
935 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400938
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400939want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500940if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400941 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400943else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200944 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400945 libacl = []
946endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400948
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500950if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400955 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400958
959want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500960if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400965 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libkmod = dependency('libkmod',
972 version : '>= 15',
973 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500982if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libpam = cc.find_library('pam', required : want_pam == 'true')
984 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libpam = []
989 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500994if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libmicrohttpd = dependency('libmicrohttpd',
996 version : '>= 0.9.33',
997 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001001 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004
1005want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001006if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libcryptsetup = dependency('libcryptsetup',
1008 version : '>= 1.6.0',
1009 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001011 have_sector = cc.has_member(
1012 'struct crypt_params_plain',
1013 'sector_size',
1014 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001017 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001019endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001021conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022
1023want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001024if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libcurl = dependency('libcurl',
1026 version : '>= 7.32.0',
1027 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
1035want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001036want_libidn2 = get_option('libidn2')
1037if want_libidn == 'true' and want_libidn2 == 'true'
1038 error('libidn and libidn2 cannot be requested simultaneously')
1039endif
1040
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libidn = dependency('libidn',
1043 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001047 libidn = []
1048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001051 # libidn is used for both libidn and libidn2 objects
1052 libidn = dependency('libidn2',
1053 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libidn.found()
1055else
1056 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059
1060want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001061if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 libiptc = dependency('libiptc',
1063 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070
1071want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001072if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001073 libqrencode = dependency('libqrencode',
1074 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001078 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001081
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001082want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001083if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001084 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1085 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088 have = false
1089endif
1090if not have
1091 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092 libgcrypt = []
1093 libgpg_error = []
1094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001097want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001098if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001099 libgnutls = dependency('gnutls',
1100 version : '>= 3.1.4',
1101 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001103else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001105 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001108
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001109want_openssl = get_option('openssl')
1110if want_openssl != 'false' and not fuzzer_build
1111 libopenssl = dependency('openssl',
1112 version : '>= 1.1.0',
1113 required : want_openssl == 'true')
1114 have = libopenssl.found()
1115else
1116 have = false
1117 libopenssl = []
1118endif
1119conf.set10('HAVE_OPENSSL', have)
1120
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001121want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001122if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001123 libdw = dependency('libdw',
1124 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001126else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001127 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001128 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001129endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001131
1132want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001133if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001134 libz = dependency('zlib',
1135 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001139 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001140endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142
1143want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001144if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 libbzip2 = cc.find_library('bz2',
1146 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001150 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153
1154want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001155if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 libxz = dependency('liblzma',
1157 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001158 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001159else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001161 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001162endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164
1165want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001166if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001167 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001168 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001171else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001172 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001173 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001176
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001177want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001178if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001179 libxkbcommon = dependency('xkbcommon',
1180 version : '>= 0.3.0',
1181 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001182 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001183else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001185 libxkbcommon = []
1186endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001187conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001188
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001189want_pcre2 = get_option('pcre2')
1190if want_pcre2 != 'false'
1191 libpcre2 = dependency('libpcre2-8',
1192 required : want_pcre2 == 'true')
1193 have = libpcre2.found()
1194else
1195 have = false
1196 libpcre2 = []
1197endif
1198conf.set10('HAVE_PCRE2', have)
1199
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001200want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001201if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001202 libglib = dependency('glib-2.0',
1203 version : '>= 2.22.0',
1204 required : want_glib == 'true')
1205 libgobject = dependency('gobject-2.0',
1206 version : '>= 2.22.0',
1207 required : want_glib == 'true')
1208 libgio = dependency('gio-2.0',
1209 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001210 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001211else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001212 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001213 libglib = []
1214 libgobject = []
1215 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001216endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001218
1219want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001220if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001221 libdbus = dependency('dbus-1',
1222 version : '>= 1.3.2',
1223 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001224 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001225else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001226 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001227 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001228endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001229conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001230
Yu Watanabe42303dc2017-06-18 05:22:32 +09001231default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001232if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001233 default_dnssec = 'no'
1234endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001236 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1237 default_dnssec = 'no'
1238endif
1239conf.set('DEFAULT_DNSSEC_MODE',
1240 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1241substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1242
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001243dns_over_tls = get_option('dns-over-tls')
1244if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001245 if dns_over_tls == 'openssl'
1246 have_gnutls = false
1247 else
1248 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1249 if dns_over_tls == 'gnutls' and not have_gnutls
1250 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1251 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001252 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001253 if dns_over_tls == 'gnutls' or have_gnutls
1254 have_openssl = false
1255 else
1256 have_openssl = conf.get('HAVE_OPENSSL') == 1
1257 if dns_over_tls != 'auto' and not have_openssl
1258 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1259 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1260 endif
1261 endif
1262 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001263else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001264 have = false
1265 have_gnutls = false
1266 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001267endif
1268conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001269conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1270conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001271
Iwan Timmerc9299be2018-06-13 20:26:24 +02001272default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001273if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001274 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001275endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001276if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1277 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 +02001278 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001279endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001280conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1281 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1282substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001283
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001285if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286 have = (conf.get('HAVE_LIBCURL') == 1 and
1287 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001288 conf.get('HAVE_XZ') == 1 and
1289 conf.get('HAVE_GCRYPT') == 1)
1290 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 error('importd support was requested, but dependencies are not available')
1292 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293else
1294 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001295endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001296conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001297
1298want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001299if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001300 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1301 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001302 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1303 # it's possible to build one without the other. Complain only if
1304 # support was explictly requested. The auxiliary files like sysusers
1305 # config should be installed when any of the programs are built.
1306 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1307 error('remote support was requested, but dependencies are not available')
1308 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001309 have = have_deps[0] or have_deps[1]
1310else
1311 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001313conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001314
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001315foreach term : ['utmp',
1316 'hibernate',
1317 'environment-d',
1318 'binfmt',
1319 'coredump',
1320 'resolve',
1321 'logind',
1322 'hostnamed',
1323 'localed',
1324 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001325 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001326 'networkd',
1327 'timedated',
1328 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001329 'firstboot',
1330 'randomseed',
1331 'backlight',
1332 'vconsole',
1333 'quotacheck',
1334 'sysusers',
1335 'tmpfiles',
1336 'hwdb',
1337 'rfkill',
1338 'ldconfig',
1339 'efi',
1340 'tpm',
1341 'ima',
1342 'smack',
1343 'gshadow',
1344 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001345 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001346 'nss-systemd']
1347 have = get_option(term)
1348 name = 'ENABLE_' + term.underscorify().to_upper()
1349 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001350endforeach
1351
Yu Watanabe08540a92018-07-18 09:25:57 +09001352foreach tuple : [['nss-mymachines', 'machined'],
1353 ['nss-resolve', 'resolve']]
1354 want = get_option(tuple[0])
1355 if want != 'false'
1356 have = get_option(tuple[1])
1357 if want == 'true' and not have
1358 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1359 endif
1360 else
1361 have = false
1362 endif
1363 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1364 conf.set10(name, have)
1365endforeach
1366
1367enable_nss = false
1368foreach term : ['ENABLE_NSS_MYHOSTNAME',
1369 'ENABLE_NSS_MYMACHINES',
1370 'ENABLE_NSS_RESOLVE',
1371 'ENABLE_NSS_SYSTEMD']
1372 if conf.get(term) == 1
1373 enable_nss = true
1374 endif
1375endforeach
1376conf.set10('ENABLE_NSS', enable_nss)
1377
Yu Watanabe348b4432018-05-07 18:17:35 +09001378conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001379
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001380tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001381fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001382
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001383conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001384
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001385#####################################################################
1386
1387if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001389
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001390 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001392 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 elif efi_arch == 'x86_64'
1394 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001395 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001396 elif efi_arch == 'arm'
1397 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001398 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 elif efi_arch == 'aarch64'
1400 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001401 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 else
1403 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001404 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001407 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001408 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001409
Yu Watanabeac093402018-05-10 16:04:16 +09001410 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001411else
1412 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001414conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001415
1416#####################################################################
1417
1418config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 output : 'config.h',
1420 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421
Yu Watanabe348b4432018-05-07 18:17:35 +09001422meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1423
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424includes = include_directories('src/basic',
1425 'src/shared',
1426 'src/systemd',
1427 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001428 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001429 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430 'src/resolve',
1431 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001432 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433 'src/login',
1434 'src/udev',
1435 'src/libudev',
1436 'src/core',
1437 'src/libsystemd/sd-bus',
1438 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001439 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001440 'src/libsystemd/sd-hwdb',
1441 'src/libsystemd/sd-id128',
1442 'src/libsystemd/sd-netlink',
1443 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001444 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001445 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001446 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447
1448add_project_arguments('-include', 'config.h', language : 'c')
1449
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001450generate_gperfs = find_program('tools/generate-gperfs.py')
1451
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452subdir('po')
1453subdir('catalog')
1454subdir('src/systemd')
1455subdir('src/basic')
1456subdir('src/libsystemd')
1457subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460
1461libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 'journal-core',
1463 libjournal_core_sources,
1464 journald_gperf_c,
1465 include_directories : includes,
1466 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001468libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001470 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001471 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001472 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001473 include_directories : includes,
1474 link_args : ['-shared',
1475 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001476 link_with : [libbasic,
1477 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001478 link_whole : [libsystemd_static,
1479 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 dependencies : [threads,
1481 librt,
1482 libxz,
1483 liblz4],
1484 link_depends : libsystemd_sym,
1485 install : true,
1486 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487
Davide Cavalca70848ec2018-04-09 02:43:35 -07001488static_libsystemd = get_option('static-libsystemd')
1489static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1490
1491install_libsystemd_static = static_library(
1492 'systemd',
1493 libsystemd_sources,
1494 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001495 basic_sources,
1496 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001497 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001498 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001499 build_by_default : static_libsystemd != 'false',
1500 install : static_libsystemd != 'false',
1501 install_dir : rootlibdir,
1502 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1503 dependencies : [threads,
1504 librt,
1505 libxz,
1506 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001507 libcap,
1508 libblkid,
1509 libmount,
1510 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001511 libgcrypt],
1512 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1513
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514############################################################
1515
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001516# binaries that have --help and are intended for use by humans,
1517# usually, but not always, installed in /bin.
1518public_programs = []
1519
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520subdir('src/libudev')
1521subdir('src/shared')
1522subdir('src/core')
1523subdir('src/udev')
1524subdir('src/network')
1525
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001526subdir('src/analyze')
1527subdir('src/journal-remote')
1528subdir('src/coredump')
1529subdir('src/hostname')
1530subdir('src/import')
1531subdir('src/kernel-install')
1532subdir('src/locale')
1533subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001534subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001535subdir('src/nspawn')
1536subdir('src/resolve')
1537subdir('src/timedate')
1538subdir('src/timesync')
1539subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001540subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001541
1542subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001543subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001544subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001545subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001546
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001547############################################################
1548
1549# only static linking apart from libdl, to make sure that the
1550# module is linked to all libraries that it uses.
1551test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 'test-dlopen',
1553 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001554 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 include_directories : includes,
1556 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001557 dependencies : [libdl],
1558 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001559
Yu Watanabe08540a92018-07-18 09:25:57 +09001560foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001561 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001562 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1563 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001564
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001565 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001566 if condition
1567 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001568
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001569 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001570 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001571
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 nss = shared_library(
1573 'nss_' + module,
1574 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001575 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 version : '2',
1577 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001578 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1579 link_args : ['-Wl,-z,nodelete',
1580 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001581 '-Wl,--version-script=' + version_script_arg,
1582 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001583 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 libbasic],
1585 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001586 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 link_depends : sym,
1588 install : true,
1589 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001590
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 # We cannot use shared_module because it does not support version suffix.
1592 # Unfortunately shared_library insists on creating the symlink…
1593 meson.add_install_script('sh', '-c',
1594 'rm $DESTDIR@0@/libnss_@1@.so'
1595 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001596
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001597 if want_tests != 'false'
1598 test('dlopen-nss_' + module,
1599 test_dlopen,
1600 # path to dlopen must include a slash
1601 args : nss.full_path())
1602 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001603 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001604endforeach
1605
1606############################################################
1607
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608executable('systemd',
1609 systemd_sources,
1610 include_directories : includes,
1611 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001612 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001613 dependencies : [threads,
1614 librt,
1615 libseccomp,
1616 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001617 libmount,
1618 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001619 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620 install : true,
1621 install_dir : rootlibexecdir)
1622
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001623meson.add_install_script(meson_make_symlink,
1624 join_paths(rootlibexecdir, 'systemd'),
1625 join_paths(rootsbindir, 'init'))
1626
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627exe = executable('systemd-analyze',
1628 systemd_analyze_sources,
1629 include_directories : includes,
1630 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001631 libshared],
1632 dependencies : [threads,
1633 librt,
1634 libseccomp,
1635 libselinux,
1636 libmount,
1637 libblkid],
1638 install_rpath : rootlibexecdir,
1639 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001640public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001641
1642executable('systemd-journald',
1643 systemd_journald_sources,
1644 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001645 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001646 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647 dependencies : [threads,
1648 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001649 liblz4,
1650 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001651 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001652 install : true,
1653 install_dir : rootlibexecdir)
1654
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001655exe = executable('systemd-cat',
1656 systemd_cat_sources,
1657 include_directories : includes,
1658 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001659 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001660 dependencies : [threads],
1661 install_rpath : rootlibexecdir,
1662 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001663public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001664
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665exe = executable('journalctl',
1666 journalctl_sources,
1667 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001669 dependencies : [threads,
1670 libqrencode,
1671 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001672 liblz4,
1673 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001674 install_rpath : rootlibexecdir,
1675 install : true,
1676 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001677public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001678
1679executable('systemd-getty-generator',
1680 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001682 link_with : [libshared],
1683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686
1687executable('systemd-debug-generator',
1688 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001690 link_with : [libshared],
1691 install_rpath : rootlibexecdir,
1692 install : true,
1693 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001695executable('systemd-run-generator',
1696 'src/run-generator/run-generator.c',
1697 include_directories : includes,
1698 link_with : [libshared],
1699 install_rpath : rootlibexecdir,
1700 install : true,
1701 install_dir : systemgeneratordir)
1702
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703executable('systemd-fstab-generator',
1704 'src/fstab-generator/fstab-generator.c',
1705 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001707 link_with : [libshared],
1708 install_rpath : rootlibexecdir,
1709 install : true,
1710 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001711
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001712if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 executable('30-systemd-environment-d-generator',
1714 'src/environment-d-generator/environment-d-generator.c',
1715 include_directories : includes,
1716 link_with : [libshared],
1717 install_rpath : rootlibexecdir,
1718 install : true,
1719 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001720
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001721 meson.add_install_script(meson_make_symlink,
1722 join_paths(sysconfdir, 'environment'),
1723 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001724endif
1725
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001726if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-hibernate-resume-generator',
1728 'src/hibernate-resume/hibernate-resume-generator.c',
1729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 executable('systemd-hibernate-resume',
1736 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001737 include_directories : includes,
1738 link_with : [libshared],
1739 install_rpath : rootlibexecdir,
1740 install : true,
1741 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742endif
1743
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001744if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 executable('systemd-gpt-auto-generator',
1746 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001747 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001748 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001749 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 dependencies : libblkid,
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : systemgeneratordir)
1754
1755 exe = executable('systemd-dissect',
1756 'src/dissect/dissect.c',
1757 include_directories : includes,
1758 link_with : [libshared],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001762 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763endif
1764
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001765if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 executable('systemd-resolved',
1767 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001768 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001769 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001770 libbasic_gcrypt,
1771 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001772 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001773 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 install : true,
1775 install_dir : rootlibexecdir)
1776
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001777 exe = executable('resolvectl',
1778 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001780 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001781 libbasic_gcrypt,
1782 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001783 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001784 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 libm,
1786 libidn],
1787 install_rpath : rootlibexecdir,
1788 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001789 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001790
1791 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001792 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001793 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001794
1795 meson.add_install_script(meson_make_symlink,
1796 join_paths(bindir, 'resolvectl'),
1797 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001798endif
1799
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001800if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001801 executable('systemd-logind',
1802 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001803 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001805 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001806 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001808 install_rpath : rootlibexecdir,
1809 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001811
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 exe = executable('loginctl',
1813 loginctl_sources,
1814 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001815 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 dependencies : [threads,
1817 liblz4,
1818 libxz],
1819 install_rpath : rootlibexecdir,
1820 install : true,
1821 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001822 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001823
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001824 exe = executable('systemd-inhibit',
1825 'src/login/inhibit.c',
1826 include_directories : includes,
1827 link_with : [libshared],
1828 install_rpath : rootlibexecdir,
1829 install : true,
1830 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001831 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001832
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001833 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001834 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 pam_systemd = shared_library(
1836 'pam_systemd',
1837 pam_systemd_c,
1838 name_prefix : '',
1839 include_directories : includes,
1840 link_args : ['-shared',
1841 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001842 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001843 libshared_static],
1844 dependencies : [threads,
1845 libpam,
1846 libpam_misc],
1847 link_depends : pam_systemd_sym,
1848 install : true,
1849 install_dir : pamlibdir)
1850
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001851 if want_tests != 'false'
1852 test('dlopen-pam_systemd',
1853 test_dlopen,
1854 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001855 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001856 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001858
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001859 executable('systemd-user-runtime-dir',
1860 user_runtime_dir_sources,
1861 include_directories : includes,
1862 link_with : [libshared],
1863 install_rpath : rootlibexecdir,
1864 install : true,
1865 install_dir : rootlibexecdir)
1866endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001867
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001868if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869 executable('systemd-user-sessions',
1870 'src/user-sessions/user-sessions.c',
1871 include_directories : includes,
1872 link_with : [libshared],
1873 install_rpath : rootlibexecdir,
1874 install : true,
1875 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876endif
1877
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001878if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 exe = executable('bootctl',
1880 'src/boot/bootctl.c',
1881 include_directories : includes,
1882 link_with : [libshared],
1883 dependencies : [libblkid],
1884 install_rpath : rootlibexecdir,
1885 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001886 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001887
1888 executable('systemd-bless-boot',
1889 'src/boot/bless-boot.c',
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [libblkid],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001896
1897 executable('systemd-bless-boot-generator',
1898 'src/boot/bless-boot-generator.c',
1899 include_directories : includes,
1900 link_with : [libshared],
1901 install_rpath : rootlibexecdir,
1902 install : true,
1903 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001904endif
1905
Lennart Poetteringf876f532018-06-25 16:07:33 +02001906executable('systemd-boot-check-no-failures',
1907 'src/boot/boot-check-no-failures.c',
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [libblkid],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootlibexecdir)
1914
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001915exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1916 include_directories : includes,
1917 link_with : [libshared],
1918 dependencies : [threads],
1919 install_rpath : rootlibexecdir,
1920 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001921public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922
Felipe Satelerf3794362018-05-22 15:08:57 -04001923
1924if get_option('link-systemctl-shared')
1925 systemctl_link_with = [libshared]
1926else
1927 systemctl_link_with = [libsystemd_static,
1928 libshared_static,
1929 libjournal_client,
1930 libbasic_gcrypt]
1931endif
1932
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001933exe = executable('systemctl', 'src/systemctl/systemctl.c',
1934 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001935 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001936 dependencies : [threads,
1937 libcap,
1938 libselinux,
1939 libxz,
1940 liblz4],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001944public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001945
Lennart Poettering61d05782018-04-16 21:41:40 +02001946if conf.get('ENABLE_PORTABLED') == 1
1947 executable('systemd-portabled',
1948 systemd_portabled_sources,
1949 include_directories : includes,
1950 link_with : [libshared],
1951 dependencies : [threads],
1952 install_rpath : rootlibexecdir,
1953 install : true,
1954 install_dir : rootlibexecdir)
1955
1956 exe = executable('portablectl', 'src/portable/portablectl.c',
1957 include_directories : includes,
1958 link_with : [libshared],
1959 dependencies : [threads],
1960 install_rpath : rootlibexecdir,
1961 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001962 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001963 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001964endif
1965
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001966foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1967 meson.add_install_script(meson_make_symlink,
1968 join_paths(rootbindir, 'systemctl'),
1969 join_paths(rootsbindir, alias))
1970endforeach
1971
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001972if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 executable('systemd-backlight',
1974 'src/backlight/backlight.c',
1975 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001976 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 install_rpath : rootlibexecdir,
1978 install : true,
1979 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 executable('systemd-rfkill',
1984 'src/rfkill/rfkill.c',
1985 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001986 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001987 install_rpath : rootlibexecdir,
1988 install : true,
1989 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001990endif
1991
1992executable('systemd-system-update-generator',
1993 'src/system-update-generator/system-update-generator.c',
1994 include_directories : includes,
1995 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001996 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001997 install : true,
1998 install_dir : systemgeneratordir)
1999
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002000if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 executable('systemd-cryptsetup',
2002 'src/cryptsetup/cryptsetup.c',
2003 include_directories : includes,
2004 link_with : [libshared],
2005 dependencies : [libcryptsetup],
2006 install_rpath : rootlibexecdir,
2007 install : true,
2008 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 executable('systemd-cryptsetup-generator',
2011 'src/cryptsetup/cryptsetup-generator.c',
2012 include_directories : includes,
2013 link_with : [libshared],
2014 dependencies : [libcryptsetup],
2015 install_rpath : rootlibexecdir,
2016 install : true,
2017 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002018
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002019 executable('systemd-veritysetup',
2020 'src/veritysetup/veritysetup.c',
2021 include_directories : includes,
2022 link_with : [libshared],
2023 dependencies : [libcryptsetup],
2024 install_rpath : rootlibexecdir,
2025 install : true,
2026 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002027
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002028 executable('systemd-veritysetup-generator',
2029 'src/veritysetup/veritysetup-generator.c',
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [libcryptsetup],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002036endif
2037
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002038if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 executable('systemd-sysv-generator',
2040 'src/sysv-generator/sysv-generator.c',
2041 include_directories : includes,
2042 link_with : [libshared],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002047 executable('systemd-rc-local-generator',
2048 'src/rc-local-generator/rc-local-generator.c',
2049 include_directories : includes,
2050 link_with : [libshared],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002054endif
2055
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002056if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 executable('systemd-hostnamed',
2058 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002059 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002060 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002061 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 install : true,
2063 install_dir : rootlibexecdir)
2064
2065 exe = executable('hostnamectl',
2066 'src/hostname/hostnamectl.c',
2067 include_directories : includes,
2068 link_with : [libshared],
2069 install_rpath : rootlibexecdir,
2070 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002071 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002072endif
2073
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002074if conf.get('ENABLE_LOCALED') == 1
2075 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002076 # logind will load libxkbcommon.so dynamically on its own
2077 deps = [libdl]
2078 else
2079 deps = []
2080 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002081
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 executable('systemd-localed',
2083 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002084 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002085 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002086 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002087 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002088 install : true,
2089 install_dir : rootlibexecdir)
2090
2091 exe = executable('localectl',
2092 localectl_sources,
2093 include_directories : includes,
2094 link_with : [libshared],
2095 install_rpath : rootlibexecdir,
2096 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002097 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002098endif
2099
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002100if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 executable('systemd-timedated',
2102 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002103 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002104 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002108endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109
Yu Watanabe6129ec82018-05-03 18:07:43 +09002110if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002111 exe = executable('timedatectl',
2112 'src/timedate/timedatectl.c',
2113 include_directories : includes,
2114 install_rpath : rootlibexecdir,
2115 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002116 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002118 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002119endif
2120
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002121if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002122 executable('systemd-timesyncd',
2123 systemd_timesyncd_sources,
2124 include_directories : includes,
2125 link_with : [libshared],
2126 dependencies : [threads,
2127 libm],
2128 install_rpath : rootlibexecdir,
2129 install : true,
2130 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002131
2132 executable('systemd-time-wait-sync',
2133 'src/time-wait-sync/time-wait-sync.c',
2134 include_directories : includes,
2135 link_with : [libshared],
2136 install_rpath : rootlibexecdir,
2137 install : true,
2138 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139endif
2140
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002141if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002142 executable('systemd-machined',
2143 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002144 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 link_with : [libmachine_core,
2146 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002147 install_rpath : rootlibexecdir,
2148 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 install_dir : rootlibexecdir)
2150
2151 exe = executable('machinectl',
2152 'src/machine/machinectl.c',
2153 include_directories : includes,
2154 link_with : [libshared],
2155 dependencies : [threads,
2156 libxz,
2157 liblz4],
2158 install_rpath : rootlibexecdir,
2159 install : true,
2160 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002161 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162endif
2163
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002164if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002165 executable('systemd-importd',
2166 systemd_importd_sources,
2167 include_directories : includes,
2168 link_with : [libshared],
2169 dependencies : [threads],
2170 install_rpath : rootlibexecdir,
2171 install : true,
2172 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002173
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 systemd_pull = executable('systemd-pull',
2175 systemd_pull_sources,
2176 include_directories : includes,
2177 link_with : [libshared],
2178 dependencies : [libcurl,
2179 libz,
2180 libbzip2,
2181 libxz,
2182 libgcrypt],
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_import = executable('systemd-import',
2188 systemd_import_sources,
2189 include_directories : includes,
2190 link_with : [libshared],
2191 dependencies : [libcurl,
2192 libz,
2193 libbzip2,
2194 libxz],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002198
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002199 systemd_import_fs = executable('systemd-import-fs',
2200 systemd_import_fs_sources,
2201 include_directories : includes,
2202 link_with : [libshared],
2203 install_rpath : rootlibexecdir,
2204 install : true,
2205 install_dir : rootlibexecdir)
2206
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002207 systemd_export = executable('systemd-export',
2208 systemd_export_sources,
2209 include_directories : includes,
2210 link_with : [libshared],
2211 dependencies : [libcurl,
2212 libz,
2213 libbzip2,
2214 libxz],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002218
2219 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220endif
2221
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002222if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002223 exe = executable('systemd-journal-upload',
2224 systemd_journal_upload_sources,
2225 include_directories : includes,
2226 link_with : [libshared],
2227 dependencies : [threads,
2228 libcurl,
2229 libgnutls,
2230 libxz,
2231 liblz4],
2232 install_rpath : rootlibexecdir,
2233 install : true,
2234 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002235 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236endif
2237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002238if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 s_j_remote = executable('systemd-journal-remote',
2240 systemd_journal_remote_sources,
2241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002242 link_with : [libshared,
2243 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 dependencies : [threads,
2245 libmicrohttpd,
2246 libgnutls,
2247 libxz,
2248 liblz4],
2249 install_rpath : rootlibexecdir,
2250 install : true,
2251 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002253 s_j_gatewayd = executable('systemd-journal-gatewayd',
2254 systemd_journal_gatewayd_sources,
2255 include_directories : includes,
2256 link_with : [libshared],
2257 dependencies : [threads,
2258 libmicrohttpd,
2259 libgnutls,
2260 libxz,
2261 liblz4],
2262 install_rpath : rootlibexecdir,
2263 install : true,
2264 install_dir : rootlibexecdir)
2265 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266endif
2267
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002268if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002269 executable('systemd-coredump',
2270 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002274 libacl,
2275 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 libxz,
2277 liblz4],
2278 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002279 install : true,
2280 install_dir : rootlibexecdir)
2281
2282 exe = executable('coredumpctl',
2283 coredumpctl_sources,
2284 include_directories : includes,
2285 link_with : [libshared],
2286 dependencies : [threads,
2287 libxz,
2288 liblz4],
2289 install_rpath : rootlibexecdir,
2290 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002291 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002292endif
2293
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002294if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295 exe = executable('systemd-binfmt',
2296 'src/binfmt/binfmt.c',
2297 include_directories : includes,
2298 link_with : [libshared],
2299 install_rpath : rootlibexecdir,
2300 install : true,
2301 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002302 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303
2304 meson.add_install_script('sh', '-c',
2305 mkdir_p.format(binfmtdir))
2306 meson.add_install_script('sh', '-c',
2307 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2308endif
2309
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002310if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 executable('systemd-vconsole-setup',
2312 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002313 include_directories : includes,
2314 link_with : [libshared],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002318endif
2319
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002320if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002321 executable('systemd-random-seed',
2322 'src/random-seed/random-seed.c',
2323 include_directories : includes,
2324 link_with : [libshared],
2325 install_rpath : rootlibexecdir,
2326 install : true,
2327 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002328endif
2329
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002330if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002331 executable('systemd-firstboot',
2332 'src/firstboot/firstboot.c',
2333 include_directories : includes,
2334 link_with : [libshared],
2335 dependencies : [libcrypt],
2336 install_rpath : rootlibexecdir,
2337 install : true,
2338 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002339endif
2340
2341executable('systemd-remount-fs',
2342 'src/remount-fs/remount-fs.c',
2343 'src/core/mount-setup.c',
2344 'src/core/mount-setup.h',
2345 include_directories : includes,
2346 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002347 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348 install : true,
2349 install_dir : rootlibexecdir)
2350
2351executable('systemd-machine-id-setup',
2352 'src/machine-id-setup/machine-id-setup-main.c',
2353 'src/core/machine-id-setup.c',
2354 'src/core/machine-id-setup.h',
2355 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002357 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358 install : true,
2359 install_dir : rootbindir)
2360
2361executable('systemd-fsck',
2362 'src/fsck/fsck.c',
2363 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002365 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002366 install : true,
2367 install_dir : rootlibexecdir)
2368
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002369executable('systemd-growfs',
2370 'src/partition/growfs.c',
2371 include_directories : includes,
2372 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002373 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002374 install_rpath : rootlibexecdir,
2375 install : true,
2376 install_dir : rootlibexecdir)
2377
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002378executable('systemd-makefs',
2379 'src/partition/makefs.c',
2380 include_directories : includes,
2381 link_with : [libshared],
2382 install_rpath : rootlibexecdir,
2383 install : true,
2384 install_dir : rootlibexecdir)
2385
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386executable('systemd-sleep',
2387 'src/sleep/sleep.c',
2388 include_directories : includes,
2389 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002390 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391 install : true,
2392 install_dir : rootlibexecdir)
2393
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394exe = executable('systemd-sysctl',
2395 'src/sysctl/sysctl.c',
2396 include_directories : includes,
2397 link_with : [libshared],
2398 install_rpath : rootlibexecdir,
2399 install : true,
2400 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002401public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402
2403executable('systemd-ac-power',
2404 'src/ac-power/ac-power.c',
2405 include_directories : includes,
2406 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002407 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002408 install : true,
2409 install_dir : rootlibexecdir)
2410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-detect-virt',
2412 'src/detect-virt/detect-virt.c',
2413 include_directories : includes,
2414 link_with : [libshared],
2415 install_rpath : rootlibexecdir,
2416 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002417public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419exe = executable('systemd-delta',
2420 'src/delta/delta.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 install_rpath : rootlibexecdir,
2424 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002425public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002426
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002427exe = executable('systemd-escape',
2428 'src/escape/escape.c',
2429 include_directories : includes,
2430 link_with : [libshared],
2431 install_rpath : rootlibexecdir,
2432 install : true,
2433 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002434public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002435
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002436exe = executable('systemd-notify',
2437 'src/notify/notify.c',
2438 include_directories : includes,
2439 link_with : [libshared],
2440 install_rpath : rootlibexecdir,
2441 install : true,
2442 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002443public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002444
2445executable('systemd-volatile-root',
2446 'src/volatile-root/volatile-root.c',
2447 include_directories : includes,
2448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002449 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450 install : true,
2451 install_dir : rootlibexecdir)
2452
2453executable('systemd-cgroups-agent',
2454 'src/cgroups-agent/cgroups-agent.c',
2455 include_directories : includes,
2456 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002457 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002458 install : true,
2459 install_dir : rootlibexecdir)
2460
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002461exe = executable('systemd-id128',
2462 'src/id128/id128.c',
2463 include_directories : includes,
2464 link_with : [libshared],
2465 install_rpath : rootlibexecdir,
2466 install : true)
2467public_programs += exe
2468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('systemd-path',
2470 'src/path/path.c',
2471 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002473 install_rpath : rootlibexecdir,
2474 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002475public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477exe = executable('systemd-ask-password',
2478 'src/ask-password/ask-password.c',
2479 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002480 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002481 install_rpath : rootlibexecdir,
2482 install : true,
2483 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002484public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485
2486executable('systemd-reply-password',
2487 'src/reply-password/reply-password.c',
2488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002490 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002491 install : true,
2492 install_dir : rootlibexecdir)
2493
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494exe = executable('systemd-tty-ask-password-agent',
2495 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002497 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498 install_rpath : rootlibexecdir,
2499 install : true,
2500 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503exe = executable('systemd-cgls',
2504 'src/cgls/cgls.c',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 install_rpath : rootlibexecdir,
2508 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511exe = executable('systemd-cgtop',
2512 'src/cgtop/cgtop.c',
2513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002515 install_rpath : rootlibexecdir,
2516 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002517public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002518
2519executable('systemd-initctl',
2520 'src/initctl/initctl.c',
2521 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002522 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002523 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002524 install : true,
2525 install_dir : rootlibexecdir)
2526
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527exe = executable('systemd-mount',
2528 'src/mount/mount-tool.c',
2529 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002530 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002531 install_rpath : rootlibexecdir,
2532 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002533public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002534
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002535meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002536 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002537
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538exe = executable('systemd-run',
2539 'src/run/run.c',
2540 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002541 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 install_rpath : rootlibexecdir,
2543 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002544public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546exe = executable('systemd-stdio-bridge',
2547 'src/stdio-bridge/stdio-bridge.c',
2548 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002549 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550 install_rpath : rootlibexecdir,
2551 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002552public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002553
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002554exe = executable('busctl',
2555 'src/busctl/busctl.c',
2556 'src/busctl/busctl-introspect.c',
2557 'src/busctl/busctl-introspect.h',
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-Szmek349cc4a2017-10-03 10:41:51 +02002564if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002565 exe = executable('systemd-sysusers',
2566 'src/sysusers/sysusers.c',
2567 include_directories : includes,
2568 link_with : [libshared],
2569 install_rpath : rootlibexecdir,
2570 install : true,
2571 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002572 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002573endif
2574
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002575if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002576 exe = executable('systemd-tmpfiles',
2577 'src/tmpfiles/tmpfiles.c',
2578 include_directories : includes,
2579 link_with : [libshared],
2580 dependencies : [libacl],
2581 install_rpath : rootlibexecdir,
2582 install : true,
2583 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002584 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002585
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002586 if want_tests != 'false'
2587 test('test-systemd-tmpfiles',
2588 test_systemd_tmpfiles_py,
2589 # https://github.com/mesonbuild/meson/issues/2681
2590 args : exe.full_path())
2591 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002592endif
2593
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002594if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002595 exe = executable('systemd-hwdb',
2596 'src/hwdb/hwdb.c',
2597 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2598 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002599 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002600 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002601 install : true,
2602 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002603 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002604endif
2605
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002606if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002607 executable('systemd-quotacheck',
2608 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002609 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002610 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611 install_rpath : rootlibexecdir,
2612 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002613 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614endif
2615
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616exe = executable('systemd-socket-proxyd',
2617 'src/socket-proxy/socket-proxyd.c',
2618 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002619 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002620 dependencies : [threads],
2621 install_rpath : rootlibexecdir,
2622 install : true,
2623 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002624public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002625
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626exe = executable('systemd-udevd',
2627 systemd_udevd_sources,
2628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002629 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002630 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002632 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002633 dependencies : [threads,
2634 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002636 libacl,
2637 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002638 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639 install : true,
2640 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002641public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643exe = executable('udevadm',
2644 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002645 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002646 include_directories : includes,
2647 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002649 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002650 dependencies : [threads,
2651 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002653 libacl,
2654 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002655 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002656 install : true,
2657 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002658public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002659
2660executable('systemd-shutdown',
2661 systemd_shutdown_sources,
2662 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002663 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002664 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002665 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002666 install : true,
2667 install_dir : rootlibexecdir)
2668
2669executable('systemd-update-done',
2670 'src/update-done/update-done.c',
2671 include_directories : includes,
2672 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002673 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002674 install : true,
2675 install_dir : rootlibexecdir)
2676
2677executable('systemd-update-utmp',
2678 'src/update-utmp/update-utmp.c',
2679 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002680 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002681 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002682 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002683 install : true,
2684 install_dir : rootlibexecdir)
2685
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002686if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002687 executable('systemd-modules-load',
2688 'src/modules-load/modules-load.c',
2689 include_directories : includes,
2690 link_with : [libshared],
2691 dependencies : [libkmod],
2692 install_rpath : rootlibexecdir,
2693 install : true,
2694 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002695
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002696 meson.add_install_script('sh', '-c',
2697 mkdir_p.format(modulesloaddir))
2698 meson.add_install_script('sh', '-c',
2699 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002700endif
2701
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002702exe = executable('systemd-nspawn',
2703 systemd_nspawn_sources,
2704 'src/core/mount-setup.c', # FIXME: use a variable?
2705 'src/core/mount-setup.h',
2706 'src/core/loopback-setup.c',
2707 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002708 include_directories : includes,
2709 link_with : [libnspawn_core,
2710 libshared],
2711 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002712 install_rpath : rootlibexecdir,
2713 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002714public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002715
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002716if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 executable('systemd-networkd',
2718 systemd_networkd_sources,
2719 include_directories : includes,
2720 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002721 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002722 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002724 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 install_rpath : rootlibexecdir,
2726 install : true,
2727 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002728
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 executable('systemd-networkd-wait-online',
2730 systemd_networkd_wait_online_sources,
2731 include_directories : includes,
2732 link_with : [libnetworkd_core,
2733 libshared],
2734 install_rpath : rootlibexecdir,
2735 install : true,
2736 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002737
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002738 exe = executable('networkctl',
2739 networkctl_sources,
2740 include_directories : includes,
2741 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002742 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002743 install_rpath : rootlibexecdir,
2744 install : true,
2745 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002746 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002747endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002748
2749executable('systemd-sulogin-shell',
2750 ['src/sulogin-shell/sulogin-shell.c'],
2751 include_directories : includes,
2752 link_with : [libshared],
2753 install_rpath : rootlibexecdir,
2754 install : true,
2755 install_dir : rootlibexecdir)
2756
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002757############################################################
2758
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002759custom_target(
2760 'systemd-runtest.env',
2761 output : 'systemd-runtest.env',
2762 command : ['sh', '-c', '{ ' +
2763 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002764 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002765 '} >@OUTPUT@'],
2766 build_by_default : true)
2767
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002768foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002769 sources = tuple[0]
2770 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2771 dependencies = tuple[2]
2772 condition = tuple.length() >= 4 ? tuple[3] : ''
2773 type = tuple.length() >= 5 ? tuple[4] : ''
2774 defs = tuple.length() >= 6 ? tuple[5] : []
2775 incs = tuple.length() >= 7 ? tuple[6] : includes
2776 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002777
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002778 name = sources[0].split('/')[-1].split('.')[0]
2779 if type.startswith('timeout=')
2780 timeout = type.split('=')[1].to_int()
2781 type = ''
2782 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002783
2784 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002785 exe = executable(
2786 name,
2787 sources,
2788 include_directories : incs,
2789 link_with : link_with,
2790 dependencies : dependencies,
2791 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002792 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002794 install : install_tests,
2795 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002796
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 if type == 'manual'
2798 message('@0@ is a manual test'.format(name))
2799 elif type == 'unsafe' and want_tests != 'unsafe'
2800 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002801 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002802 test(name, exe,
2803 env : test_env,
2804 timeout : timeout)
2805 endif
2806 else
2807 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2808 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002809endforeach
2810
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002811exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 'test-libsystemd-sym',
2813 test_libsystemd_sym_c,
2814 include_directories : includes,
2815 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002816 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002817 install : install_tests,
2818 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002819if want_tests != 'false'
2820 test('test-libsystemd-sym', exe)
2821endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002822
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002823exe = executable(
2824 'test-libsystemd-static-sym',
2825 test_libsystemd_sym_c,
2826 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002827 link_with : [install_libsystemd_static],
2828 dependencies : [threads], # threads is already included in dependencies on the library,
2829 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002830 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002831 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002832 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002833if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002834 test('test-libsystemd-static-sym', exe)
2835endif
2836
2837exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 'test-libudev-sym',
2839 test_libudev_sym_c,
2840 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002841 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002842 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002843 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002844 install : install_tests,
2845 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002846if want_tests != 'false'
2847 test('test-libudev-sym', exe)
2848endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002849
2850exe = executable(
2851 'test-libudev-static-sym',
2852 test_libudev_sym_c,
2853 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002854 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002855 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002856 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002857 install : install_tests and static_libudev_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_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002860 test('test-libudev-static-sym', exe)
2861endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002862
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002863############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002864
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002865fuzzer_exes = []
2866
Michael Olbrich59967402018-11-11 11:27:35 +01002867if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002868foreach tuple : fuzzers
2869 sources = tuple[0]
2870 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2871 dependencies = tuple[2]
2872 defs = tuple.length() >= 4 ? tuple[3] : []
2873 incs = tuple.length() >= 5 ? tuple[4] : includes
2874
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002875 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002876 dependencies += fuzzing_engine
2877 else
2878 sources += 'src/fuzz/fuzz-main.c'
2879 endif
2880
2881 name = sources[0].split('/')[-1].split('.')[0]
2882
2883 fuzzer_exes += executable(
2884 name,
2885 sources,
2886 include_directories : [incs, include_directories('src/fuzz')],
2887 link_with : link_with,
2888 dependencies : dependencies,
2889 c_args : defs,
2890 install : false)
2891endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002892endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002893
2894run_target('fuzzers',
2895 depends : fuzzer_exes,
2896 command : ['true'])
2897
2898############################################################
2899
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002900make_directive_index_py = find_program('tools/make-directive-index.py')
2901make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002902xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002903hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002904
2905subdir('units')
2906subdir('sysctl.d')
2907subdir('sysusers.d')
2908subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002909subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910subdir('hwdb')
2911subdir('network')
2912subdir('man')
2913subdir('shell-completion/bash')
2914subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002915subdir('docs/sysvinit')
2916subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002917
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002918install_subdir('factory/etc',
2919 install_dir : factorydir)
2920
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002921install_data('xorg/50-systemd-user.sh',
2922 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002923install_data('modprobe.d/systemd.conf',
2924 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002925install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002926 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002927 'NEWS',
2928 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302929 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002930 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002931 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302932 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002933 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002934 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002935 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002936 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2937 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002938
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002939meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2940meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2941
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002942############################################################
2943
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002944meson_check_help = find_program('tools/meson-check-help.sh')
2945
2946foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002947 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002948 if want_tests != 'false'
2949 test('check-help-' + name,
2950 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002951 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002952 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002953endforeach
2954
2955############################################################
2956
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002957# Enable tests for all supported sanitizers
2958foreach tuple : sanitizers
2959 sanitizer = tuple[0]
2960 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002961
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002962 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002963 prev = ''
2964 foreach p : fuzz_regression_tests
2965 b = p.split('/')[-2]
2966 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002967
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002968 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002969
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002970 if name != prev
2971 if want_tests == 'false'
2972 message('Not compiling @0@ because tests is set to false'.format(name))
2973 elif slow_tests
2974 exe = custom_target(
2975 name,
2976 output : name,
2977 depends : build,
2978 command : [env, 'ln', '-fs',
2979 join_paths(build.full_path(), b),
2980 '@OUTPUT@'],
2981 build_by_default : true)
2982 else
2983 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2984 endif
2985 endif
2986 prev = name
2987
2988 if want_tests != 'false' and slow_tests
2989 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2990 env,
2991 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002992 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002993 endif
2994 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002995 endif
2996endforeach
2997
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002998
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002999############################################################
3000
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003001if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003002 all_files = run_command(
3003 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003004 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003005 'ls-files',
3006 ':/*.[ch]'])
3007 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003008
userwithuide85a6902017-08-09 13:41:44 +00003009 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003010 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003011 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003012 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003013 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003014 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003015 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003016endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003017
3018if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003019 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003020 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003021 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003022 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003023endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003024
3025if git.found()
3026 git_head = run_command(
3027 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003028 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003029 'rev-parse', 'HEAD']).stdout().strip()
3030 git_head_short = run_command(
3031 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003032 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003033 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3034
3035 run_target(
3036 'git-snapshot',
3037 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003038 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003039 git_head_short),
3040 '--prefix', 'systemd-@0@/'.format(git_head),
3041 'HEAD'])
3042endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003043
3044############################################################
3045
Lennart Poettering51b13862017-12-20 12:51:14 +01003046meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3047run_target(
3048 'check-api-docs',
3049 depends : [man, libsystemd, libudev],
3050 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3051
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003052run_target(
3053 'make-index-md',
3054 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3055
Lennart Poettering51b13862017-12-20 12:51:14 +01003056############################################################
3057
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058status = [
3059 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3060
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003061 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003062 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003063 'prefix directory: @0@'.format(prefixdir),
3064 'rootprefix directory: @0@'.format(rootprefixdir),
3065 'sysconf directory: @0@'.format(sysconfdir),
3066 'include directory: @0@'.format(includedir),
3067 'lib directory: @0@'.format(libdir),
3068 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003069 'SysV init scripts: @0@'.format(sysvinit_path),
3070 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003071 'PAM modules directory: @0@'.format(pamlibdir),
3072 'PAM configuration directory: @0@'.format(pamconfdir),
3073 'RPM macros directory: @0@'.format(rpmmacrosdir),
3074 'modprobe.d directory: @0@'.format(modprobedir),
3075 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3076 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3077 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3078 'bash completions directory: @0@'.format(bashcompletiondir),
3079 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003080 'extra start script: @0@'.format(get_option('rc-local')),
3081 'extra stop script: @0@'.format(get_option('halt-local')),
3082 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3083 get_option('debug-tty')),
3084 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003085 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003086 'maximum system UID: @0@'.format(system_uid_max),
3087 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003088 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3089 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3090 'minimum container UID base: @0@'.format(container_uid_base_min),
3091 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003093 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003094 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003096 'nobody user name: @0@'.format(nobody_user),
3097 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003098 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003099 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100
3101 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003102 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003103 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003104 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003105 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3106
3107alt_dns_servers = '\n '.join(dns_servers.split(' '))
3108alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3109status += [
3110 'default DNS servers: @0@'.format(alt_dns_servers),
3111 'default NTP servers: @0@'.format(alt_ntp_servers)]
3112
3113alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3114 '@@0@'.format(time_epoch)).stdout().strip()
3115status += [
3116 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3117
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003118status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003119 'static libsystemd: @0@'.format(static_libsystemd),
3120 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003121
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003122# TODO:
3123# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3124# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3125# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3126
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003127if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003128 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003129
3130 if have_gnu_efi
3131 status += [
3132 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003133 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003134 'EFI lib directory: @0@'.format(efi_libdir),
3135 'EFI lds directory: @0@'.format(efi_ldsdir),
3136 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003137 endif
3138endif
3139
3140found = []
3141missing = []
3142
3143foreach tuple : [
3144 ['libcryptsetup'],
3145 ['PAM'],
3146 ['AUDIT'],
3147 ['IMA'],
3148 ['AppArmor'],
3149 ['SELinux'],
3150 ['SECCOMP'],
3151 ['SMACK'],
3152 ['zlib'],
3153 ['xz'],
3154 ['lz4'],
3155 ['bzip2'],
3156 ['ACL'],
3157 ['gcrypt'],
3158 ['qrencode'],
3159 ['microhttpd'],
3160 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003161 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003162 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003163 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003164 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003165 ['libidn'],
3166 ['libiptc'],
3167 ['elfutils'],
3168 ['binfmt'],
3169 ['vconsole'],
3170 ['quotacheck'],
3171 ['tmpfiles'],
3172 ['environment.d'],
3173 ['sysusers'],
3174 ['firstboot'],
3175 ['randomseed'],
3176 ['backlight'],
3177 ['rfkill'],
3178 ['logind'],
3179 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003180 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003181 ['importd'],
3182 ['hostnamed'],
3183 ['timedated'],
3184 ['timesyncd'],
3185 ['localed'],
3186 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003187 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003188 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3189 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003190 ['coredump'],
3191 ['polkit'],
3192 ['legacy pkla', install_polkit_pkla],
3193 ['efi'],
3194 ['gnu-efi', have_gnu_efi],
3195 ['kmod'],
3196 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003197 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003198 ['blkid'],
3199 ['dbus'],
3200 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003201 ['nss-myhostname'],
3202 ['nss-mymachines'],
3203 ['nss-resolve'],
3204 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003205 ['hwdb'],
3206 ['tpm'],
3207 ['man pages', want_man],
3208 ['html pages', want_html],
3209 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003210 ['SysV compat'],
3211 ['utmp'],
3212 ['ldconfig'],
3213 ['hibernate'],
3214 ['adm group', get_option('adm-group')],
3215 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003216 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003217 ['debug hashmap'],
3218 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003219 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003220 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003221 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003222 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003223 ['link-udev-shared', get_option('link-udev-shared')],
3224 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003225]
3226
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003227 if tuple.length() >= 2
3228 cond = tuple[1]
3229 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003230 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3231 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003232 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233 endif
3234 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003235 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003236 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003237 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238 endif
3239endforeach
3240
3241status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003242 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003244 '',
3245 'disabled features: @0@'.format(', '.join(missing)),
3246 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003247message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003248
3249if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003250 warning('\n' +
3251 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3252 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3253 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003254endif