blob: aa07ed8e9bfb62428030e0dad389a693040eb7a8 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005project('systemd', 'c',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +01006 version : '238',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04007 license : 'LGPLv2+',
8 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04009 'c_std=gnu99',
10 'prefix=/usr',
11 'sysconfdir=/etc',
12 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 ],
Yu Watanabe8ea9fad2018-05-10 14:50:52 +090014 meson_version : '>= 0.44',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040015 )
16
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010017libsystemd_version = '0.22.0'
18libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020019
Yu Watanabe348b4432018-05-07 18:17:35 +090020# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040021# Also, for hysterical reasons, we use different variable
22# names, sometimes. Not all variables are included in every
23# set. Ugh, ugh, ugh!
24conf = configuration_data()
25conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
26conf.set_quoted('PACKAGE_VERSION', meson.project_version())
27
28substs = configuration_data()
29substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
30substs.set('PACKAGE_VERSION', meson.project_version())
31
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040032#####################################################################
33
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040034# Try to install the git pre-commit hook
35git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
36if git_hook.returncode() == 0
37 message(git_hook.stdout().strip())
38endif
39
40#####################################################################
41
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010042if get_option('split-usr') == 'auto'
43 split_usr = run_command('test', '-L', '/bin').returncode() != 0
44else
45 split_usr = get_option('split-usr') == 'true'
46endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010047conf.set10('HAVE_SPLIT_USR', split_usr,
48 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010049
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010050if get_option('split-bin') == 'auto'
51 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
52else
53 split_bin = get_option('split-bin') == 'true'
54endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010055conf.set10('HAVE_SPLIT_BIN', split_bin,
56 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010057
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010058rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010059# Unusual rootprefixdir values are used by some distros
60# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010061rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010062if rootprefixdir == ''
63 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040065
66sysvinit_path = get_option('sysvinit-path')
67sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090068conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020069 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71# join_paths ignore the preceding arguments if an absolute component is
72# encountered, so this should canonicalize various paths when they are
73# absolute or relative.
74prefixdir = get_option('prefix')
75if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040076 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077endif
78bindir = join_paths(prefixdir, get_option('bindir'))
79libdir = join_paths(prefixdir, get_option('libdir'))
80sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
81includedir = join_paths(prefixdir, get_option('includedir'))
82datadir = join_paths(prefixdir, get_option('datadir'))
83localstatedir = join_paths('/', get_option('localstatedir'))
84
85rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010086rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
88
89rootlibdir = get_option('rootlibdir')
90if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040091 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092endif
93
94# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040095pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
96pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
97polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
98polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
99polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
100varlogdir = join_paths(localstatedir, 'log')
101xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900102rpmmacrosdir = get_option('rpmmacrosdir')
103if rpmmacrosdir != 'no'
104 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
105endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200106modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107
108# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400109pkgdatadir = join_paths(datadir, 'systemd')
110environmentdir = join_paths(prefixdir, 'lib/environment.d')
111pkgsysconfdir = join_paths(sysconfdir, 'systemd')
112userunitdir = join_paths(prefixdir, 'lib/systemd/user')
113userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
114tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
115sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
116sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
117binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
118modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
119networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
120pkgincludedir = join_paths(includedir, 'systemd')
121systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
122usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
123systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
124userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
125systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
126systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
127systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
128systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
129udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
130udevhomedir = udevlibexecdir
131udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
132udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
133catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
134kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
135factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400136bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
137testsdir = join_paths(prefixdir, 'lib/systemd/tests')
138systemdstatedir = join_paths(localstatedir, 'lib/systemd')
139catalogstatedir = join_paths(systemdstatedir, 'catalog')
140randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400141
tblume75aaade2018-02-01 22:46:15 +0100142docdir = get_option('docdir')
143if docdir == ''
144 docdir = join_paths(datadir, 'doc/systemd')
145endif
146
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400147dbuspolicydir = get_option('dbuspolicydir')
148if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400149 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150endif
151
152dbussessionservicedir = get_option('dbussessionservicedir')
153if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400154 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400155endif
156
157dbussystemservicedir = get_option('dbussystemservicedir')
158if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162pamlibdir = get_option('pamlibdir')
163if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167pamconfdir = get_option('pamconfdir')
168if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100172memory_accounting_default = get_option('memory-accounting-default')
173
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400175conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
177conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
178conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
180conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100181
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100182conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100183
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
186conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
188conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
189conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
190conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100191conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100192conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
194conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
195conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
196conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
197conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100198conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400199conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
201conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
203conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
204conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
205conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
206conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
207conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
209conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400211conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('LIBDIR', libdir)
213conf.set_quoted('ROOTLIBDIR', rootlibdir)
214conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
215conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
217conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
218conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
219conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
220conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
221conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100222conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100223conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224
225conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
226conf.set_quoted('ABS_SRC_DIR', meson.source_root())
227
228substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400229substs.set('exec_prefix', prefixdir)
230substs.set('libdir', libdir)
231substs.set('rootlibdir', rootlibdir)
232substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('bindir', bindir)
235substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('rootlibexecdir', rootlibexecdir)
237substs.set('systemunitdir', systemunitdir)
238substs.set('userunitdir', userunitdir)
239substs.set('systempresetdir', systempresetdir)
240substs.set('userpresetdir', userpresetdir)
241substs.set('udevhwdbdir', udevhwdbdir)
242substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Adam Duskett08318a22018-01-15 06:25:46 -0500273if get_option('tests') != 'false'
274 cxx = find_program('c++', required : false)
275 if cxx.found()
276 # Used only for tests
277 add_languages('cpp')
278 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400279endif
280
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500281want_ossfuzz = get_option('oss-fuzz')
282want_libfuzzer = get_option('llvm-fuzz')
283fuzzer_build = want_ossfuzz or want_libfuzzer
284if want_ossfuzz and want_libfuzzer
285 error('only one of oss-fuzz and llvm-fuzz can be specified')
286endif
287if want_libfuzzer
288 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
289endif
290if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500291 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
292endif
293
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900294possible_cc_flags = [
295 '-Wextra',
296 '-Werror=undef',
297 '-Wlogical-op',
298 '-Wmissing-include-dirs',
299 '-Wold-style-definition',
300 '-Wpointer-arith',
301 '-Winit-self',
302 '-Wdeclaration-after-statement',
303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
320 '-Wdate-time',
321 '-Wnested-externs',
322 '-ffast-math',
323 '-fno-common',
324 '-fdiagnostics-show-option',
325 '-fno-strict-aliasing',
326 '-fvisibility=hidden',
327 '-fstack-protector',
328 '-fstack-protector-strong',
329 '--param=ssp-buffer-size=4',
330]
331
332# --as-needed and --no-undefined are provided by meson by default,
333# run mesonconf to see what is enabled
334possible_link_flags = [
335 '-Wl,-z,relro',
336 '-Wl,-z,now',
337]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400338
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339# the oss-fuzz fuzzers are not built with -fPIE, so don't
340# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500341if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900342 possible_cc_flags += '-fPIE'
343 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500344endif
345
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346if cc.get_id() == 'clang'
347 possible_cc_flags += [
348 '-Wno-typedef-redefinition',
349 '-Wno-gnu-variable-sized-type-not-at-end',
350 ]
351endif
352
353if get_option('buildtype') != 'debug'
354 possible_cc_flags += [
355 '-ffunction-sections',
356 '-fdata-sections',
357 ]
358
359 possible_link_flags += '-Wl,--gc-sections'
360endif
361
362add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
363
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400364# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
365# arguments, just emits a warnings. So test for the "positive" version instead.
366foreach arg : ['unused-parameter',
367 'missing-field-initializers',
368 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300369 'format-signedness',
370 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
371 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400372 if cc.has_argument('-W' + arg)
373 add_project_arguments('-Wno-' + arg, language : 'c')
374 endif
375endforeach
376
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800377if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378 #include <time.h>
379 #include <inttypes.h>
380 typedef uint64_t usec_t;
381 usec_t now(clockid_t clock);
382 int main(void) {
383 struct timespec now;
384 return 0;
385 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800386''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400387 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388endif
389
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400390link_test_c = files('tools/meson-link-test.c')
391
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900392foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400393 have = run_command(check_compilation_sh,
394 cc.cmd_array(), '-x', 'c', arg,
395 '-include', link_test_c).returncode() == 0
396 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900397 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_link_arguments(arg, language : 'c')
399 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endforeach
401
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400402cpp = ' '.join(cc.cmd_array()) + ' -E'
403
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404#####################################################################
405# compilation result tests
406
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400407conf.set('_GNU_SOURCE', true)
408conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400409
410conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
416conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
417
418decl_headers = '''
419#include <uchar.h>
420#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000421#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100422#include <linux/stat.h>
423#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424'''
425# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
426
427foreach decl : ['char16_t',
428 'char32_t',
429 'key_serial_t',
430 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000431 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100432 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400434
435 # We get -1 if the size cannot be determined
436 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200437 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
440foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
441 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
442 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
443 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530444 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
446 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
447 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
448 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
449 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530450 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 # if_tunnel.h is buggy and cannot be included on its own
452 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
453 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
454 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
456 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
457 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
458 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530459 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460 ['NDA_IFINDEX', 'linux/neighbour.h'],
461 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000462 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530464 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400466 prefix = decl.length() > 2 ? decl[2] : ''
467 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200468 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469endforeach
470
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200472 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473endforeach
474
475foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100476 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100477 ['gettid', '''#include <sys/types.h>
478 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100479 ['pivot_root', '''#include <stdlib.h>
480 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400482 #include <sys/stat.h>
483 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100484 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100485 ['renameat2', '''#include <stdio.h>
486 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 ['kcmp', '''#include <linux/kcmp.h>'''],
488 ['keyctl', '''#include <sys/types.h>
489 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400491 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200492 ['bpf', '''#include <sys/syscall.h>
493 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100494 ['statx', '''#include <sys/types.h>
495 #include <sys/stat.h>
496 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100497 ['explicit_bzero' , '''#include <string.h>'''],
498 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400500
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200502 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503endforeach
504
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200506 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200507 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400508else
509 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200510 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400512endif
513
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514#####################################################################
515
516sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400518m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400520git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100521env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100522perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400524meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400525mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400526test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
527splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400528
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
530# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500531progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533 ['kmod', '/usr/bin/kmod' ],
534 ['kexec', '/usr/sbin/kexec' ],
535 ['sulogin', '/usr/sbin/sulogin' ],
536 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
537 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
538 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
539 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
540 ]
541foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400542 path = get_option(prog[0] + '-path')
543 if path != ''
544 message('Using @1@ for @0@'.format(prog[0], path))
545 else
546 exe = find_program(prog[0],
547 '/usr/sbin/' + prog[0],
548 '/sbin/' + prog[0],
549 required: false)
550 path = exe.found() ? exe.path() : prog[1]
551 endif
552 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
553 conf.set_quoted(name, path)
554 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555endforeach
556
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500557conf.set_quoted('TELINIT', get_option('telinit-path'))
558
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400559if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100560 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400561endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
563############################################################
564
565gperf = find_program('gperf')
566
567gperf_test_format = '''
568#include <string.h>
569const char * in_word_set(const char *, @0@);
570@1@
571'''
572gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
573gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
574gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
575if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
579 if cc.compiles(gperf_test)
580 gperf_len_type = 'unsigned'
581 else
582 error('unable to determine gperf len type')
583 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584endif
585message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400586conf.set('GPERF_LEN_TYPE', gperf_len_type,
587 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588
589############################################################
590
591if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100594foreach header : ['crypt.h',
595 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596 'linux/memfd.h',
597 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200598 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599 'valgrind/memcheck.h',
600 'valgrind/valgrind.h',
601 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200603 conf.set10('HAVE_' + header.underscorify().to_upper(),
604 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605endforeach
606
607############################################################
608
609conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400610conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
611gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612
613default_hierarchy = get_option('default-hierarchy')
614conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
615 description : 'default cgroup hierarchy as string')
616if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622endif
623
624time_epoch = get_option('time-epoch')
625if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 NEWS = files('NEWS')
627 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endif
629time_epoch = time_epoch.to_int()
630conf.set('TIME_EPOCH', time_epoch)
631
632system_uid_max = get_option('system-uid-max')
633if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 system_uid_max = run_command(
635 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800636 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
637 '/etc/login.defs').stdout().strip()
638 if system_uid_max == ''
639 system_uid_max = '999'
640 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
642system_uid_max = system_uid_max.to_int()
643conf.set('SYSTEM_UID_MAX', system_uid_max)
644substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400645message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647system_gid_max = get_option('system-gid-max')
648if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 system_gid_max = run_command(
650 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800651 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
652 '/etc/login.defs').stdout().strip()
653 if system_gid_max == ''
654 system_gid_max = '999'
655 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656endif
657system_gid_max = system_gid_max.to_int()
658conf.set('SYSTEM_GID_MAX', system_gid_max)
659substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400660message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100662dynamic_uid_min = get_option('dynamic-uid-min').to_int()
663dynamic_uid_max = get_option('dynamic-uid-max').to_int()
664conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
665conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
666substs.set('dynamicuidmin', dynamic_uid_min)
667substs.set('dynamicuidmax', dynamic_uid_max)
668
669container_uid_base_min = get_option('container-uid-base-min').to_int()
670container_uid_base_max = get_option('container-uid-base-max').to_int()
671conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
672conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
673substs.set('containeruidbasemin', container_uid_base_min)
674substs.set('containeruidbasemax', container_uid_base_max)
675
Lennart Poetteringafde4572017-12-05 11:00:24 +0100676nobody_user = get_option('nobody-user')
677nobody_group = get_option('nobody-group')
678
679getent_result = run_command('getent', 'passwd', '65534')
680if getent_result.returncode() == 0
681 name = getent_result.stdout().split(':')[0]
682 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900683 warning('\n' +
684 '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) +
685 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100686 endif
687endif
688id_result = run_command('id', '-u', nobody_user)
689if id_result.returncode() == 0
690 id = id_result.stdout().to_int()
691 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900692 warning('\n' +
693 '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) +
694 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100695 endif
696endif
697
698getent_result = run_command('getent', 'group', '65534')
699if getent_result.returncode() == 0
700 name = getent_result.stdout().split(':')[0]
701 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900702 warning('\n' +
703 '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) +
704 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
706endif
707id_result = run_command('id', '-g', nobody_group)
708if id_result.returncode() == 0
709 id = id_result.stdout().to_int()
710 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900711 warning('\n' +
712 '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) +
713 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100714 endif
715endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900716if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900717 warning('\n' +
718 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
719 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900720endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721
722conf.set_quoted('NOBODY_USER_NAME', nobody_user)
723conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900724substs.set('NOBODY_USER_NAME', nobody_user)
725substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100726
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400727tty_gid = get_option('tty-gid')
728conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400729substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730
Ikey Doherty84786b82017-12-03 12:28:23 +0000731# Ensure provided GID argument is numeric, otherwise fallback to default assignment
732if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900733 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000734else
Yu Watanabed6806872017-12-05 14:01:39 +0900735 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000736endif
737substs.set('USERS_GID', users_gid)
738
Yu Watanabe348b4432018-05-07 18:17:35 +0900739conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
740conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741
742substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700743substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400745kill_user_processes = get_option('default-kill-user-processes')
746conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100747conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400748substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400750dns_servers = get_option('dns-servers')
751conf.set_quoted('DNS_SERVERS', dns_servers)
752substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400754ntp_servers = get_option('ntp-servers')
755conf.set_quoted('NTP_SERVERS', ntp_servers)
756substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
758conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
759
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400760substs.set('SUSHELL', get_option('debug-shell'))
761substs.set('DEBUGTTY', get_option('debug-tty'))
762
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200763enable_debug_hashmap = false
764enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900765foreach name : get_option('debug')
766 if name == 'hashmap'
767 enable_debug_hashmap = true
768 elif name == 'mmap-cache'
769 enable_debug_mmap_cache = true
770 else
771 message('unknown debug option "@0@", ignoring'.format(name))
772 endif
773endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200774conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
775conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400776
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400777#####################################################################
778
779threads = dependency('threads')
780librt = cc.find_library('rt')
781libm = cc.find_library('m')
782libdl = cc.find_library('dl')
783libcrypt = cc.find_library('crypt')
784
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400785libcap = dependency('libcap', required : false)
786if not libcap.found()
787 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
788 libcap = cc.find_library('cap')
789endif
790
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400791libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100792 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793
794want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500795if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400796 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400797 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400798 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200799 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400800else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
806want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500807if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400808 libselinux = dependency('libselinux',
809 version : '>= 2.1.9',
810 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200811 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400812else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200813 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400814 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817
818want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500819if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400820 libapparmor = dependency('libapparmor',
821 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200822 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829smack_run_label = get_option('smack-run-label')
830if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
833
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400834want_polkit = get_option('polkit')
835install_polkit = false
836install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500837if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400838 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400839
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libpolkit = dependency('polkit-gobject-1',
841 required : false)
842 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
843 message('Old polkit detected, will install pkla files')
844 install_polkit_pkla = true
845 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400846endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200847conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400848
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400849want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500850if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400851 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400853else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400855 libacl = []
856endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400859want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500860if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400861 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868
869want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500870if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400871 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878
879want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500880if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 libkmod = dependency('libkmod',
882 version : '>= 15',
883 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400887 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890
891want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libpam = cc.find_library('pam', required : want_pam == 'true')
894 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200895 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libpam = []
899 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902
903want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500904if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400905 libmicrohttpd = dependency('libmicrohttpd',
906 version : '>= 0.9.33',
907 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
915want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500916if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 libcryptsetup = dependency('libcryptsetup',
918 version : '>= 1.6.0',
919 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200920 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400921else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926
927want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500928if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400929 libcurl = dependency('libcurl',
930 version : '>= 7.32.0',
931 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200932 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400933else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400935 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938
939want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400940want_libidn2 = get_option('libidn2')
941if want_libidn == 'true' and want_libidn2 == 'true'
942 error('libidn and libidn2 cannot be requested simultaneously')
943endif
944
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500945if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libidn = dependency('libidn',
947 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400949else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400951 libidn = []
952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500954if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400955 # libidn is used for both libidn and libidn2 objects
956 libidn = dependency('libidn2',
957 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libidn.found()
959else
960 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963
964want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500965if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400966 libiptc = dependency('libiptc',
967 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200968 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400969else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974
975want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500976if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libqrencode = dependency('libqrencode',
978 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400986want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500987if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400988 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
989 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = false
993endif
994if not have
995 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400996 libgcrypt = []
997 libgpg_error = []
998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001000
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libgnutls = dependency('gnutls',
1004 version : '>= 3.1.4',
1005 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libdw = dependency('libdw',
1016 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
1024want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001025if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libz = dependency('zlib',
1027 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libz.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 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034
1035want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001036if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libbzip2 = cc.find_library('bz2',
1038 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045
1046want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001047if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libxz = dependency('liblzma',
1049 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056
1057want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001058if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 liblz4 = dependency('liblz4',
1060 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001068want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001069if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001070 libxkbcommon = dependency('xkbcommon',
1071 version : '>= 0.3.0',
1072 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001076 libxkbcommon = []
1077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001080want_pcre2 = get_option('pcre2')
1081if want_pcre2 != 'false'
1082 libpcre2 = dependency('libpcre2-8',
1083 required : want_pcre2 == 'true')
1084 have = libpcre2.found()
1085else
1086 have = false
1087 libpcre2 = []
1088endif
1089conf.set10('HAVE_PCRE2', have)
1090
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001091want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001092if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001093 libglib = dependency('glib-2.0',
1094 version : '>= 2.22.0',
1095 required : want_glib == 'true')
1096 libgobject = dependency('gobject-2.0',
1097 version : '>= 2.22.0',
1098 required : want_glib == 'true')
1099 libgio = dependency('gio-2.0',
1100 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001101 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001102else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001104 libglib = []
1105 libgobject = []
1106 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001107endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001109
1110want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001111if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001112 libdbus = dependency('dbus-1',
1113 version : '>= 1.3.2',
1114 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001115 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001116else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001118 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001121
Yu Watanabe42303dc2017-06-18 05:22:32 +09001122default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001123if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001124 default_dnssec = 'no'
1125endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001127 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1128 default_dnssec = 'no'
1129endif
1130conf.set('DEFAULT_DNSSEC_MODE',
1131 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1132substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1133
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001134want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001135if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001136 have = (conf.get('HAVE_LIBCURL') == 1 and
1137 conf.get('HAVE_ZLIB') == 1 and
1138 conf.get('HAVE_BZIP2') == 1 and
1139 conf.get('HAVE_XZ') == 1 and
1140 conf.get('HAVE_GCRYPT') == 1)
1141 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001142 error('importd support was requested, but dependencies are not available')
1143 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001144else
1145 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148
1149want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001150if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1152 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001153 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1154 # it's possible to build one without the other. Complain only if
1155 # support was explictly requested. The auxiliary files like sysusers
1156 # config should be installed when any of the programs are built.
1157 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1158 error('remote support was requested, but dependencies are not available')
1159 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001160 have = have_deps[0] or have_deps[1]
1161else
1162 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001166foreach term : ['utmp',
1167 'hibernate',
1168 'environment-d',
1169 'binfmt',
1170 'coredump',
1171 'resolve',
1172 'logind',
1173 'hostnamed',
1174 'localed',
1175 'machined',
1176 'networkd',
1177 'timedated',
1178 'timesyncd',
1179 'myhostname',
1180 'firstboot',
1181 'randomseed',
1182 'backlight',
1183 'vconsole',
1184 'quotacheck',
1185 'sysusers',
1186 'tmpfiles',
1187 'hwdb',
1188 'rfkill',
1189 'ldconfig',
1190 'efi',
1191 'tpm',
1192 'ima',
1193 'smack',
1194 'gshadow',
1195 'idn',
1196 'nss-systemd']
1197 have = get_option(term)
1198 name = 'ENABLE_' + term.underscorify().to_upper()
1199 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001200endforeach
1201
Yu Watanabe348b4432018-05-07 18:17:35 +09001202conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001203
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001204want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001205install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001206slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001207tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001208fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001210conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001211
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001212#####################################################################
1213
1214if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001215 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001216
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001217 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001219 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 elif efi_arch == 'x86_64'
1221 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001222 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 elif efi_arch == 'arm'
1224 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001225 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 elif efi_arch == 'aarch64'
1227 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001228 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 else
1230 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001231 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001233
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001234 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001236
1237 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238else
1239 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001240endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001242
1243#####################################################################
1244
1245config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 output : 'config.h',
1247 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001248
Yu Watanabe348b4432018-05-07 18:17:35 +09001249meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1250
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251includes = include_directories('src/basic',
1252 'src/shared',
1253 'src/systemd',
1254 'src/journal',
1255 'src/resolve',
1256 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001257 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001258 'src/login',
1259 'src/udev',
1260 'src/libudev',
1261 'src/core',
1262 'src/libsystemd/sd-bus',
1263 'src/libsystemd/sd-device',
1264 'src/libsystemd/sd-hwdb',
1265 'src/libsystemd/sd-id128',
1266 'src/libsystemd/sd-netlink',
1267 'src/libsystemd/sd-network',
1268 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001269 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001270
1271add_project_arguments('-include', 'config.h', language : 'c')
1272
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001273subdir('po')
1274subdir('catalog')
1275subdir('src/systemd')
1276subdir('src/basic')
1277subdir('src/libsystemd')
1278subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001279subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281
1282libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001283 'journal-core',
1284 libjournal_core_sources,
1285 journald_gperf_c,
1286 include_directories : includes,
1287 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001289libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001292 'src/systemd/sd-id128.h', # pick a header file at random to work around old meson bug
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001293 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 include_directories : includes,
1295 link_args : ['-shared',
1296 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001297 link_with : [libbasic,
1298 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001299 link_whole : [libsystemd_static,
1300 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001301 dependencies : [threads,
1302 librt,
1303 libxz,
1304 liblz4],
1305 link_depends : libsystemd_sym,
1306 install : true,
1307 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308
Davide Cavalca70848ec2018-04-09 02:43:35 -07001309static_libsystemd = get_option('static-libsystemd')
1310static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1311
1312install_libsystemd_static = static_library(
1313 'systemd',
1314 libsystemd_sources,
1315 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001316 basic_sources,
1317 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001318 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001319 build_by_default : static_libsystemd != 'false',
1320 install : static_libsystemd != 'false',
1321 install_dir : rootlibdir,
1322 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1323 dependencies : [threads,
1324 librt,
1325 libxz,
1326 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001327 libcap,
1328 libblkid,
1329 libmount,
1330 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001331 libgcrypt],
1332 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1333
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001334############################################################
1335
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001336# binaries that have --help and are intended for use by humans,
1337# usually, but not always, installed in /bin.
1338public_programs = []
1339
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340subdir('src/libudev')
1341subdir('src/shared')
1342subdir('src/core')
1343subdir('src/udev')
1344subdir('src/network')
1345
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001346subdir('src/analyze')
1347subdir('src/journal-remote')
1348subdir('src/coredump')
1349subdir('src/hostname')
1350subdir('src/import')
1351subdir('src/kernel-install')
1352subdir('src/locale')
1353subdir('src/machine')
1354subdir('src/nspawn')
1355subdir('src/resolve')
1356subdir('src/timedate')
1357subdir('src/timesync')
1358subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001359subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001360
1361subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001362subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001363subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001364subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001365
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001366############################################################
1367
1368# only static linking apart from libdl, to make sure that the
1369# module is linked to all libraries that it uses.
1370test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001371 'test-dlopen',
1372 test_dlopen_c,
1373 include_directories : includes,
1374 link_with : [libbasic],
1375 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001376
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001377foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001378 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001379 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001380 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001381
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001382 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001383 if condition
1384 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001385
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1387 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001388
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 nss = shared_library(
1390 'nss_' + module,
1391 'src/nss-@0@/nss-@0@.c'.format(module),
1392 version : '2',
1393 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001394 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1395 link_args : ['-Wl,-z,nodelete',
1396 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001397 '-Wl,--version-script=' + version_script_arg,
1398 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001399 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 libbasic],
1401 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001402 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 link_depends : sym,
1404 install : true,
1405 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001406
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 # We cannot use shared_module because it does not support version suffix.
1408 # Unfortunately shared_library insists on creating the symlink…
1409 meson.add_install_script('sh', '-c',
1410 'rm $DESTDIR@0@/libnss_@1@.so'
1411 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001412
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001413 test('dlopen-nss_' + module,
1414 test_dlopen,
1415 args : [nss.full_path()]) # path to dlopen must include a slash
1416 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001417endforeach
1418
1419############################################################
1420
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001421executable('systemd',
1422 systemd_sources,
1423 include_directories : includes,
1424 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001425 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426 dependencies : [threads,
1427 librt,
1428 libseccomp,
1429 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001430 libmount,
1431 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001432 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433 install : true,
1434 install_dir : rootlibexecdir)
1435
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001436meson.add_install_script(meson_make_symlink,
1437 join_paths(rootlibexecdir, 'systemd'),
1438 join_paths(rootsbindir, 'init'))
1439
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001440exe = executable('systemd-analyze',
1441 systemd_analyze_sources,
1442 include_directories : includes,
1443 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001444 libshared],
1445 dependencies : [threads,
1446 librt,
1447 libseccomp,
1448 libselinux,
1449 libmount,
1450 libblkid],
1451 install_rpath : rootlibexecdir,
1452 install : true)
1453public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454
1455executable('systemd-journald',
1456 systemd_journald_sources,
1457 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001458 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001459 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001460 dependencies : [threads,
1461 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001462 liblz4,
1463 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001464 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465 install : true,
1466 install_dir : rootlibexecdir)
1467
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001468exe = executable('systemd-cat',
1469 systemd_cat_sources,
1470 include_directories : includes,
1471 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001472 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001473 dependencies : [threads],
1474 install_rpath : rootlibexecdir,
1475 install : true)
1476public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001478exe = executable('journalctl',
1479 journalctl_sources,
1480 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001481 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001482 dependencies : [threads,
1483 libqrencode,
1484 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001485 liblz4,
1486 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001487 install_rpath : rootlibexecdir,
1488 install : true,
1489 install_dir : rootbindir)
1490public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491
1492executable('systemd-getty-generator',
1493 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001495 link_with : [libshared],
1496 install_rpath : rootlibexecdir,
1497 install : true,
1498 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499
1500executable('systemd-debug-generator',
1501 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001503 link_with : [libshared],
1504 install_rpath : rootlibexecdir,
1505 install : true,
1506 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001507
1508executable('systemd-fstab-generator',
1509 'src/fstab-generator/fstab-generator.c',
1510 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001512 link_with : [libshared],
1513 install_rpath : rootlibexecdir,
1514 install : true,
1515 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001517if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 executable('30-systemd-environment-d-generator',
1519 'src/environment-d-generator/environment-d-generator.c',
1520 include_directories : includes,
1521 link_with : [libshared],
1522 install_rpath : rootlibexecdir,
1523 install : true,
1524 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001525
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 meson.add_install_script(meson_make_symlink,
1527 join_paths(sysconfdir, 'environment'),
1528 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001529endif
1530
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001531if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 executable('systemd-hibernate-resume-generator',
1533 'src/hibernate-resume/hibernate-resume-generator.c',
1534 include_directories : includes,
1535 link_with : [libshared],
1536 install_rpath : rootlibexecdir,
1537 install : true,
1538 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001539
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001540 executable('systemd-hibernate-resume',
1541 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001542 include_directories : includes,
1543 link_with : [libshared],
1544 install_rpath : rootlibexecdir,
1545 install : true,
1546 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547endif
1548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001549if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 executable('systemd-gpt-auto-generator',
1551 'src/gpt-auto-generator/gpt-auto-generator.c',
1552 'src/basic/blkid-util.h',
1553 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001554 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001555 dependencies : libblkid,
1556 install_rpath : rootlibexecdir,
1557 install : true,
1558 install_dir : systemgeneratordir)
1559
1560 exe = executable('systemd-dissect',
1561 'src/dissect/dissect.c',
1562 include_directories : includes,
1563 link_with : [libshared],
1564 install_rpath : rootlibexecdir,
1565 install : true,
1566 install_dir : rootlibexecdir)
1567 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001568endif
1569
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001570if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 executable('systemd-resolved',
1572 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001573 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001574 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001575 libbasic_gcrypt,
1576 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001577 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001578 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 libm,
1580 libidn],
1581 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 install : true,
1583 install_dir : rootlibexecdir)
1584
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001585 exe = executable('resolvectl',
1586 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001588 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001589 libbasic_gcrypt,
1590 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001592 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 libm,
1594 libidn],
1595 install_rpath : rootlibexecdir,
1596 install : true)
1597 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001598
1599 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001600 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001601 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001602
1603 meson.add_install_script(meson_make_symlink,
1604 join_paths(bindir, 'resolvectl'),
1605 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001606endif
1607
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001608if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001609 executable('systemd-logind',
1610 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001611 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001613 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616 install_rpath : rootlibexecdir,
1617 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001619
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 exe = executable('loginctl',
1621 loginctl_sources,
1622 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001623 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 dependencies : [threads,
1625 liblz4,
1626 libxz],
1627 install_rpath : rootlibexecdir,
1628 install : true,
1629 install_dir : rootbindir)
1630 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001631
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 exe = executable('systemd-inhibit',
1633 'src/login/inhibit.c',
1634 include_directories : includes,
1635 link_with : [libshared],
1636 install_rpath : rootlibexecdir,
1637 install : true,
1638 install_dir : rootbindir)
1639 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001640
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001641 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001642 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1643 pam_systemd = shared_library(
1644 'pam_systemd',
1645 pam_systemd_c,
1646 name_prefix : '',
1647 include_directories : includes,
1648 link_args : ['-shared',
1649 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001650 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 libshared_static],
1652 dependencies : [threads,
1653 libpam,
1654 libpam_misc],
1655 link_depends : pam_systemd_sym,
1656 install : true,
1657 install_dir : pamlibdir)
1658
1659 test('dlopen-pam_systemd',
1660 test_dlopen,
1661 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1662 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663endif
1664
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001665executable('systemd-user-runtime-dir',
1666 user_runtime_dir_sources,
1667 include_directories : includes,
1668 link_with : [libshared, liblogind_core],
1669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : rootlibexecdir)
1672
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001673if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('systemd-user-sessions',
1675 'src/user-sessions/user-sessions.c',
1676 include_directories : includes,
1677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681endif
1682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 exe = executable('bootctl',
1685 'src/boot/bootctl.c',
1686 include_directories : includes,
1687 link_with : [libshared],
1688 dependencies : [libblkid],
1689 install_rpath : rootlibexecdir,
1690 install : true)
1691 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001692endif
1693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [threads],
1698 install_rpath : rootlibexecdir,
1699 install : true)
1700public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001702exe = executable('systemctl', 'src/systemctl/systemctl.c',
1703 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001704 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705 dependencies : [threads,
1706 libcap,
1707 libselinux,
1708 libxz,
1709 liblz4],
1710 install_rpath : rootlibexecdir,
1711 install : true,
1712 install_dir : rootbindir)
1713public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001714
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001715foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1716 meson.add_install_script(meson_make_symlink,
1717 join_paths(rootbindir, 'systemctl'),
1718 join_paths(rootsbindir, alias))
1719endforeach
1720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001721if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('systemd-backlight',
1723 'src/backlight/backlight.c',
1724 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001725 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729endif
1730
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001731if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001732 executable('systemd-rfkill',
1733 'src/rfkill/rfkill.c',
1734 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001735 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 install_rpath : rootlibexecdir,
1737 install : true,
1738 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001739endif
1740
1741executable('systemd-system-update-generator',
1742 'src/system-update-generator/system-update-generator.c',
1743 include_directories : includes,
1744 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001745 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001746 install : true,
1747 install_dir : systemgeneratordir)
1748
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001749if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001750 executable('systemd-cryptsetup',
1751 'src/cryptsetup/cryptsetup.c',
1752 include_directories : includes,
1753 link_with : [libshared],
1754 dependencies : [libcryptsetup],
1755 install_rpath : rootlibexecdir,
1756 install : true,
1757 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001759 executable('systemd-cryptsetup-generator',
1760 'src/cryptsetup/cryptsetup-generator.c',
1761 include_directories : includes,
1762 link_with : [libshared],
1763 dependencies : [libcryptsetup],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001768 executable('systemd-veritysetup',
1769 'src/veritysetup/veritysetup.c',
1770 include_directories : includes,
1771 link_with : [libshared],
1772 dependencies : [libcryptsetup],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 executable('systemd-veritysetup-generator',
1778 'src/veritysetup/veritysetup-generator.c',
1779 include_directories : includes,
1780 link_with : [libshared],
1781 dependencies : [libcryptsetup],
1782 install_rpath : rootlibexecdir,
1783 install : true,
1784 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001785endif
1786
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001787if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 executable('systemd-sysv-generator',
1789 'src/sysv-generator/sysv-generator.c',
1790 include_directories : includes,
1791 link_with : [libshared],
1792 install_rpath : rootlibexecdir,
1793 install : true,
1794 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-rc-local-generator',
1797 'src/rc-local-generator/rc-local-generator.c',
1798 include_directories : includes,
1799 link_with : [libshared],
1800 install_rpath : rootlibexecdir,
1801 install : true,
1802 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803endif
1804
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001805if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 executable('systemd-hostnamed',
1807 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001808 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001809 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001810 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 install : true,
1812 install_dir : rootlibexecdir)
1813
1814 exe = executable('hostnamectl',
1815 'src/hostname/hostnamectl.c',
1816 include_directories : includes,
1817 link_with : [libshared],
1818 install_rpath : rootlibexecdir,
1819 install : true)
1820 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001821endif
1822
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001823if conf.get('ENABLE_LOCALED') == 1
1824 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 # logind will load libxkbcommon.so dynamically on its own
1826 deps = [libdl]
1827 else
1828 deps = []
1829 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001830
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 executable('systemd-localed',
1832 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001833 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001834 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001836 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 install : true,
1838 install_dir : rootlibexecdir)
1839
1840 exe = executable('localectl',
1841 localectl_sources,
1842 include_directories : includes,
1843 link_with : [libshared],
1844 install_rpath : rootlibexecdir,
1845 install : true)
1846 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001847endif
1848
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001849if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850 executable('systemd-timedated',
1851 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001852 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001853 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 install_rpath : rootlibexecdir,
1855 install : true,
1856 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001857endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858
Yu Watanabe6129ec82018-05-03 18:07:43 +09001859if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 exe = executable('timedatectl',
1861 'src/timedate/timedatectl.c',
1862 include_directories : includes,
1863 install_rpath : rootlibexecdir,
1864 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001865 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 install : true)
1867 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001868endif
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 executable('systemd-timesyncd',
1872 systemd_timesyncd_sources,
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [threads,
1876 libm],
1877 install_rpath : rootlibexecdir,
1878 install : true,
1879 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001880
1881 executable('systemd-time-wait-sync',
1882 'src/time-wait-sync/time-wait-sync.c',
1883 include_directories : includes,
1884 link_with : [libshared],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001888endif
1889
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001890if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001891 executable('systemd-machined',
1892 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001893 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 link_with : [libmachine_core,
1895 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001896 install_rpath : rootlibexecdir,
1897 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 install_dir : rootlibexecdir)
1899
1900 exe = executable('machinectl',
1901 'src/machine/machinectl.c',
1902 include_directories : includes,
1903 link_with : [libshared],
1904 dependencies : [threads,
1905 libxz,
1906 liblz4],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : rootbindir)
1910 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001911endif
1912
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001913if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001914 executable('systemd-importd',
1915 systemd_importd_sources,
1916 include_directories : includes,
1917 link_with : [libshared],
1918 dependencies : [threads],
1919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001922
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 systemd_pull = executable('systemd-pull',
1924 systemd_pull_sources,
1925 include_directories : includes,
1926 link_with : [libshared],
1927 dependencies : [libcurl,
1928 libz,
1929 libbzip2,
1930 libxz,
1931 libgcrypt],
1932 install_rpath : rootlibexecdir,
1933 install : true,
1934 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001935
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001936 systemd_import = executable('systemd-import',
1937 systemd_import_sources,
1938 include_directories : includes,
1939 link_with : [libshared],
1940 dependencies : [libcurl,
1941 libz,
1942 libbzip2,
1943 libxz],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001947
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001948 systemd_export = executable('systemd-export',
1949 systemd_export_sources,
1950 include_directories : includes,
1951 link_with : [libshared],
1952 dependencies : [libcurl,
1953 libz,
1954 libbzip2,
1955 libxz],
1956 install_rpath : rootlibexecdir,
1957 install : true,
1958 install_dir : rootlibexecdir)
1959 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001960endif
1961
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001962if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001963 exe = executable('systemd-journal-upload',
1964 systemd_journal_upload_sources,
1965 include_directories : includes,
1966 link_with : [libshared],
1967 dependencies : [threads,
1968 libcurl,
1969 libgnutls,
1970 libxz,
1971 liblz4],
1972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : rootlibexecdir)
1975 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976endif
1977
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001978if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 s_j_remote = executable('systemd-journal-remote',
1980 systemd_journal_remote_sources,
1981 include_directories : includes,
1982 link_with : [libshared],
1983 dependencies : [threads,
1984 libmicrohttpd,
1985 libgnutls,
1986 libxz,
1987 liblz4],
1988 install_rpath : rootlibexecdir,
1989 install : true,
1990 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001991
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 s_j_gatewayd = executable('systemd-journal-gatewayd',
1993 systemd_journal_gatewayd_sources,
1994 include_directories : includes,
1995 link_with : [libshared],
1996 dependencies : [threads,
1997 libmicrohttpd,
1998 libgnutls,
1999 libxz,
2000 liblz4],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
2004 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005endif
2006
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002007if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 executable('systemd-coredump',
2009 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002010 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002011 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002012 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002013 libacl,
2014 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002015 libxz,
2016 liblz4],
2017 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002018 install : true,
2019 install_dir : rootlibexecdir)
2020
2021 exe = executable('coredumpctl',
2022 coredumpctl_sources,
2023 include_directories : includes,
2024 link_with : [libshared],
2025 dependencies : [threads,
2026 libxz,
2027 liblz4],
2028 install_rpath : rootlibexecdir,
2029 install : true)
2030 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031endif
2032
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002033if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 exe = executable('systemd-binfmt',
2035 'src/binfmt/binfmt.c',
2036 include_directories : includes,
2037 link_with : [libshared],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : rootlibexecdir)
2041 public_programs += [exe]
2042
2043 meson.add_install_script('sh', '-c',
2044 mkdir_p.format(binfmtdir))
2045 meson.add_install_script('sh', '-c',
2046 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2047endif
2048
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002049if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 executable('systemd-vconsole-setup',
2051 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002052 include_directories : includes,
2053 link_with : [libshared],
2054 install_rpath : rootlibexecdir,
2055 install : true,
2056 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002057endif
2058
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002059if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002060 executable('systemd-random-seed',
2061 'src/random-seed/random-seed.c',
2062 include_directories : includes,
2063 link_with : [libshared],
2064 install_rpath : rootlibexecdir,
2065 install : true,
2066 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002070 executable('systemd-firstboot',
2071 'src/firstboot/firstboot.c',
2072 include_directories : includes,
2073 link_with : [libshared],
2074 dependencies : [libcrypt],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
2080executable('systemd-remount-fs',
2081 'src/remount-fs/remount-fs.c',
2082 'src/core/mount-setup.c',
2083 'src/core/mount-setup.h',
2084 include_directories : includes,
2085 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002086 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087 install : true,
2088 install_dir : rootlibexecdir)
2089
2090executable('systemd-machine-id-setup',
2091 'src/machine-id-setup/machine-id-setup-main.c',
2092 'src/core/machine-id-setup.c',
2093 'src/core/machine-id-setup.h',
2094 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002095 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002096 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097 install : true,
2098 install_dir : rootbindir)
2099
2100executable('systemd-fsck',
2101 'src/fsck/fsck.c',
2102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002103 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002104 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002105 install : true,
2106 install_dir : rootlibexecdir)
2107
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002108executable('systemd-growfs',
2109 'src/partition/growfs.c',
2110 include_directories : includes,
2111 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002112 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootlibexecdir)
2116
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002117executable('systemd-makefs',
2118 'src/partition/makefs.c',
2119 include_directories : includes,
2120 link_with : [libshared],
2121 install_rpath : rootlibexecdir,
2122 install : true,
2123 install_dir : rootlibexecdir)
2124
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125executable('systemd-sleep',
2126 'src/sleep/sleep.c',
2127 include_directories : includes,
2128 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002129 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002130 install : true,
2131 install_dir : rootlibexecdir)
2132
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002133exe = executable('systemd-sysctl',
2134 'src/sysctl/sysctl.c',
2135 include_directories : includes,
2136 link_with : [libshared],
2137 install_rpath : rootlibexecdir,
2138 install : true,
2139 install_dir : rootlibexecdir)
2140public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002141
2142executable('systemd-ac-power',
2143 'src/ac-power/ac-power.c',
2144 include_directories : includes,
2145 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002146 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147 install : true,
2148 install_dir : rootlibexecdir)
2149
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150exe = executable('systemd-detect-virt',
2151 'src/detect-virt/detect-virt.c',
2152 include_directories : includes,
2153 link_with : [libshared],
2154 install_rpath : rootlibexecdir,
2155 install : true)
2156public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158exe = executable('systemd-delta',
2159 'src/delta/delta.c',
2160 include_directories : includes,
2161 link_with : [libshared],
2162 install_rpath : rootlibexecdir,
2163 install : true)
2164public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002166exe = executable('systemd-escape',
2167 'src/escape/escape.c',
2168 include_directories : includes,
2169 link_with : [libshared],
2170 install_rpath : rootlibexecdir,
2171 install : true,
2172 install_dir : rootbindir)
2173public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175exe = executable('systemd-notify',
2176 'src/notify/notify.c',
2177 include_directories : includes,
2178 link_with : [libshared],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootbindir)
2182public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002183
2184executable('systemd-volatile-root',
2185 'src/volatile-root/volatile-root.c',
2186 include_directories : includes,
2187 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002188 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189 install : true,
2190 install_dir : rootlibexecdir)
2191
2192executable('systemd-cgroups-agent',
2193 'src/cgroups-agent/cgroups-agent.c',
2194 include_directories : includes,
2195 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002196 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002197 install : true,
2198 install_dir : rootlibexecdir)
2199
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200exe = executable('systemd-path',
2201 'src/path/path.c',
2202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002203 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204 install_rpath : rootlibexecdir,
2205 install : true)
2206public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002207
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208exe = executable('systemd-ask-password',
2209 'src/ask-password/ask-password.c',
2210 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002211 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212 install_rpath : rootlibexecdir,
2213 install : true,
2214 install_dir : rootbindir)
2215public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216
2217executable('systemd-reply-password',
2218 'src/reply-password/reply-password.c',
2219 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002221 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222 install : true,
2223 install_dir : rootlibexecdir)
2224
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225exe = executable('systemd-tty-ask-password-agent',
2226 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootbindir)
2232public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234exe = executable('systemd-cgls',
2235 'src/cgls/cgls.c',
2236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
2239 install : true)
2240public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242exe = executable('systemd-cgtop',
2243 'src/cgtop/cgtop.c',
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246 install_rpath : rootlibexecdir,
2247 install : true)
2248public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002249
2250executable('systemd-initctl',
2251 'src/initctl/initctl.c',
2252 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002254 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002255 install : true,
2256 install_dir : rootlibexecdir)
2257
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002258exe = executable('systemd-mount',
2259 'src/mount/mount-tool.c',
2260 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002261 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262 install_rpath : rootlibexecdir,
2263 install : true)
2264public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002265
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002266meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002267 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002268
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269exe = executable('systemd-run',
2270 'src/run/run.c',
2271 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 install_rpath : rootlibexecdir,
2274 install : true)
2275public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277exe = executable('systemd-stdio-bridge',
2278 'src/stdio-bridge/stdio-bridge.c',
2279 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002280 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281 install_rpath : rootlibexecdir,
2282 install : true)
2283public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285exe = executable('busctl',
2286 'src/busctl/busctl.c',
2287 'src/busctl/busctl-introspect.c',
2288 'src/busctl/busctl-introspect.h',
2289 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002290 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002291 install_rpath : rootlibexecdir,
2292 install : true)
2293public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002294
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002295if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002296 exe = executable('systemd-sysusers',
2297 'src/sysusers/sysusers.c',
2298 include_directories : includes,
2299 link_with : [libshared],
2300 install_rpath : rootlibexecdir,
2301 install : true,
2302 install_dir : rootbindir)
2303 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002304endif
2305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 exe = executable('systemd-tmpfiles',
2308 'src/tmpfiles/tmpfiles.c',
2309 include_directories : includes,
2310 link_with : [libshared],
2311 dependencies : [libacl],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootbindir)
2315 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002316
2317 test('test-systemd-tmpfiles',
2318 test_systemd_tmpfiles_py,
2319 args : exe.full_path())
2320 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 exe = executable('systemd-hwdb',
2325 'src/hwdb/hwdb.c',
2326 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2327 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002328 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002329 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002330 install : true,
2331 install_dir : rootbindir)
2332 public_programs += [exe]
2333endif
2334
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002335if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 executable('systemd-quotacheck',
2337 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002339 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340 install_rpath : rootlibexecdir,
2341 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002342 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343endif
2344
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002345exe = executable('systemd-socket-proxyd',
2346 'src/socket-proxy/socket-proxyd.c',
2347 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349 dependencies : [threads],
2350 install_rpath : rootlibexecdir,
2351 install : true,
2352 install_dir : rootlibexecdir)
2353public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355exe = executable('systemd-udevd',
2356 systemd_udevd_sources,
2357 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002358 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002360 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002361 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002362 dependencies : [threads,
2363 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 libacl,
2366 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002367 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 install : true,
2369 install_dir : rootlibexecdir)
2370public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372exe = executable('udevadm',
2373 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002374 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375 include_directories : includes,
2376 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002378 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002379 dependencies : [threads,
2380 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002382 libacl,
2383 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002384 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 install : true,
2386 install_dir : rootbindir)
2387public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388
2389executable('systemd-shutdown',
2390 systemd_shutdown_sources,
2391 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002392 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002393 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002394 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395 install : true,
2396 install_dir : rootlibexecdir)
2397
2398executable('systemd-update-done',
2399 'src/update-done/update-done.c',
2400 include_directories : includes,
2401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002402 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403 install : true,
2404 install_dir : rootlibexecdir)
2405
2406executable('systemd-update-utmp',
2407 'src/update-utmp/update-utmp.c',
2408 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002409 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002410 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002411 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412 install : true,
2413 install_dir : rootlibexecdir)
2414
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002415if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002416 executable('systemd-modules-load',
2417 'src/modules-load/modules-load.c',
2418 include_directories : includes,
2419 link_with : [libshared],
2420 dependencies : [libkmod],
2421 install_rpath : rootlibexecdir,
2422 install : true,
2423 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002424
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002425 meson.add_install_script('sh', '-c',
2426 mkdir_p.format(modulesloaddir))
2427 meson.add_install_script('sh', '-c',
2428 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429endif
2430
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431exe = executable('systemd-nspawn',
2432 systemd_nspawn_sources,
2433 'src/core/mount-setup.c', # FIXME: use a variable?
2434 'src/core/mount-setup.h',
2435 'src/core/loopback-setup.c',
2436 'src/core/loopback-setup.h',
2437 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002438 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002439 dependencies : [libacl,
2440 libblkid,
2441 libseccomp,
2442 libselinux],
2443 install_rpath : rootlibexecdir,
2444 install : true)
2445public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002447if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002448 executable('systemd-networkd',
2449 systemd_networkd_sources,
2450 include_directories : includes,
2451 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002453 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002455 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 install_rpath : rootlibexecdir,
2457 install : true,
2458 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 executable('systemd-networkd-wait-online',
2461 systemd_networkd_wait_online_sources,
2462 include_directories : includes,
2463 link_with : [libnetworkd_core,
2464 libshared],
2465 install_rpath : rootlibexecdir,
2466 install : true,
2467 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002469 exe = executable('networkctl',
2470 networkctl_sources,
2471 include_directories : includes,
2472 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002473 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002474 install_rpath : rootlibexecdir,
2475 install : true,
2476 install_dir : rootbindir)
2477 public_programs += [exe]
2478endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002479
2480executable('systemd-sulogin-shell',
2481 ['src/sulogin-shell/sulogin-shell.c'],
2482 include_directories : includes,
2483 link_with : [libshared],
2484 install_rpath : rootlibexecdir,
2485 install : true,
2486 install_dir : rootlibexecdir)
2487
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002488############################################################
2489
2490foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002491 sources = tuple[0]
2492 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2493 dependencies = tuple[2]
2494 condition = tuple.length() >= 4 ? tuple[3] : ''
2495 type = tuple.length() >= 5 ? tuple[4] : ''
2496 defs = tuple.length() >= 6 ? tuple[5] : []
2497 incs = tuple.length() >= 7 ? tuple[6] : includes
2498 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002499
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002500 name = sources[0].split('/')[-1].split('.')[0]
2501 if type.startswith('timeout=')
2502 timeout = type.split('=')[1].to_int()
2503 type = ''
2504 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002505 if want_tests == 'false'
2506 message('Not compiling @0@ because tests is set to false'.format(name))
2507 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 exe = executable(
2509 name,
2510 sources,
2511 include_directories : incs,
2512 link_with : link_with,
2513 dependencies : dependencies,
2514 c_args : defs,
2515 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002516 install : install_tests,
2517 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002518
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002519 if type == 'manual'
2520 message('@0@ is a manual test'.format(name))
2521 elif type == 'unsafe' and want_tests != 'unsafe'
2522 message('@0@ is an unsafe test'.format(name))
2523 else
2524 test(name, exe,
2525 env : test_env,
2526 timeout : timeout)
2527 endif
2528 else
2529 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2530 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002531endforeach
2532
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002533exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534 'test-libsystemd-sym',
2535 test_libsystemd_sym_c,
2536 include_directories : includes,
2537 link_with : [libsystemd],
2538 install : install_tests,
2539 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002540test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002541
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002542exe = executable(
2543 'test-libsystemd-static-sym',
2544 test_libsystemd_sym_c,
2545 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002546 link_with : [install_libsystemd_static],
2547 dependencies : [threads], # threads is already included in dependencies on the library,
2548 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002549 build_by_default : static_libsystemd_pic,
2550 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002551 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002552if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002553 test('test-libsystemd-static-sym', exe)
2554endif
2555
2556exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002557 'test-libudev-sym',
2558 test_libudev_sym_c,
2559 include_directories : includes,
2560 c_args : ['-Wno-deprecated-declarations'],
2561 link_with : [libudev],
2562 install : install_tests,
2563 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002564test('test-libudev-sym', exe)
2565
2566exe = executable(
2567 'test-libudev-static-sym',
2568 test_libudev_sym_c,
2569 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002570 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002571 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002572 build_by_default : static_libudev_pic,
2573 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002574 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002575if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002576 test('test-libudev-static-sym', exe)
2577endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002578
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002579############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002580
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002581fuzzer_exes = []
2582
2583foreach tuple : fuzzers
2584 sources = tuple[0]
2585 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2586 dependencies = tuple[2]
2587 defs = tuple.length() >= 4 ? tuple[3] : []
2588 incs = tuple.length() >= 5 ? tuple[4] : includes
2589
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002590 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002591 dependencies += fuzzing_engine
2592 else
2593 sources += 'src/fuzz/fuzz-main.c'
2594 endif
2595
2596 name = sources[0].split('/')[-1].split('.')[0]
2597
2598 fuzzer_exes += executable(
2599 name,
2600 sources,
2601 include_directories : [incs, include_directories('src/fuzz')],
2602 link_with : link_with,
2603 dependencies : dependencies,
2604 c_args : defs,
2605 install : false)
2606endforeach
2607
2608run_target('fuzzers',
2609 depends : fuzzer_exes,
2610 command : ['true'])
2611
2612############################################################
2613
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002614make_directive_index_py = find_program('tools/make-directive-index.py')
2615make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002616xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002617hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002618
2619subdir('units')
2620subdir('sysctl.d')
2621subdir('sysusers.d')
2622subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002623subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002624subdir('hwdb')
2625subdir('network')
2626subdir('man')
2627subdir('shell-completion/bash')
2628subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002629subdir('doc/sysvinit')
2630subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631
2632# FIXME: figure out if the warning is true:
2633# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2634install_subdir('factory/etc',
2635 install_dir : factorydir)
2636
2637
2638install_data('xorg/50-systemd-user.sh',
2639 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002640install_data('modprobe.d/systemd.conf',
2641 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002642install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002643 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002644 'NEWS',
2645 'README',
2646 'doc/CODING_STYLE',
2647 'doc/DISTRO_PORTING',
2648 'doc/ENVIRONMENT.md',
2649 'doc/HACKING',
2650 'doc/TRANSIENT-SETTINGS.md',
2651 'doc/TRANSLATORS',
2652 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002653 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2654 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002655
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002656meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2657meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2658
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002659############################################################
2660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002661meson_check_help = find_program('tools/meson-check-help.sh')
2662
2663foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002664 name = exec.full_path().split('/')[-1]
2665 test('check-help-' + name,
2666 meson_check_help,
2667 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002668endforeach
2669
2670############################################################
2671
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002672# Enable tests for all supported sanitizers
2673foreach tuple : sanitizers
2674 sanitizer = tuple[0]
2675 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002676
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002677 have = run_command(check_compilation_sh,
2678 cc.cmd_array(), '-x', 'c',
2679 '-fsanitize=@0@'.format(sanitizer),
2680 '-include', link_test_c).returncode() == 0
2681 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002682
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002683 if have
2684 prev = ''
2685 foreach p : fuzz_regression_tests
2686 b = p.split('/')[-2]
2687 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002688
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002689 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002690
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002691 if name != prev
2692 if want_tests == 'false'
2693 message('Not compiling @0@ because tests is set to false'.format(name))
2694 elif slow_tests
2695 exe = custom_target(
2696 name,
2697 output : name,
2698 depends : build,
2699 command : [env, 'ln', '-fs',
2700 join_paths(build.full_path(), b),
2701 '@OUTPUT@'],
2702 build_by_default : true)
2703 else
2704 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2705 endif
2706 endif
2707 prev = name
2708
2709 if want_tests != 'false' and slow_tests
2710 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2711 env,
2712 args : [exe.full_path(),
2713 join_paths(meson.source_root(),
2714 'test/fuzz-regressions',
2715 p)])
2716 endif
2717 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002718 endif
2719endforeach
2720
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002721
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002722############################################################
2723
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002724if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 all_files = run_command(
2726 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002727 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 'ls-files',
2729 ':/*.[ch]'])
2730 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002731
userwithuide85a6902017-08-09 13:41:44 +00002732 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002733 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002734 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002735 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002736 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002737 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002738 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002739 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002740endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002741
2742if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002743 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002744 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002747endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002748
2749if git.found()
2750 git_head = run_command(
2751 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002752 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002753 'rev-parse', 'HEAD']).stdout().strip()
2754 git_head_short = run_command(
2755 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002756 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002757 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2758
2759 run_target(
2760 'git-snapshot',
2761 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002762 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002763 git_head_short),
2764 '--prefix', 'systemd-@0@/'.format(git_head),
2765 'HEAD'])
2766endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002767
2768############################################################
2769
Lennart Poettering51b13862017-12-20 12:51:14 +01002770meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2771run_target(
2772 'check-api-docs',
2773 depends : [man, libsystemd, libudev],
2774 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2775
2776############################################################
2777
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002778status = [
2779 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2780
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002781 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002782 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002783 'prefix directory: @0@'.format(prefixdir),
2784 'rootprefix directory: @0@'.format(rootprefixdir),
2785 'sysconf directory: @0@'.format(sysconfdir),
2786 'include directory: @0@'.format(includedir),
2787 'lib directory: @0@'.format(libdir),
2788 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002789 'SysV init scripts: @0@'.format(sysvinit_path),
2790 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002791 'PAM modules directory: @0@'.format(pamlibdir),
2792 'PAM configuration directory: @0@'.format(pamconfdir),
2793 'RPM macros directory: @0@'.format(rpmmacrosdir),
2794 'modprobe.d directory: @0@'.format(modprobedir),
2795 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2796 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2797 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2798 'bash completions directory: @0@'.format(bashcompletiondir),
2799 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002800 'extra start script: @0@'.format(get_option('rc-local')),
2801 'extra stop script: @0@'.format(get_option('halt-local')),
2802 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2803 get_option('debug-tty')),
2804 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002805 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002806 'maximum system UID: @0@'.format(system_uid_max),
2807 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002808 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2809 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2810 'minimum container UID base: @0@'.format(container_uid_base_min),
2811 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002812 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002813 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002814 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002815 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002816 'nobody user name: @0@'.format(nobody_user),
2817 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002818 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002819 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002820
2821 'default DNSSEC mode: @0@'.format(default_dnssec),
2822 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2823 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2824
2825alt_dns_servers = '\n '.join(dns_servers.split(' '))
2826alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2827status += [
2828 'default DNS servers: @0@'.format(alt_dns_servers),
2829 'default NTP servers: @0@'.format(alt_ntp_servers)]
2830
2831alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2832 '@@0@'.format(time_epoch)).stdout().strip()
2833status += [
2834 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2835
2836# TODO:
2837# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2838# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2839# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2840
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002841if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002842 status += [
2843 'efi arch: @0@'.format(efi_arch)]
2844
2845 if have_gnu_efi
2846 status += [
2847 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2848 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002849 'EFI lib directory: @0@'.format(efi_libdir),
2850 'EFI lds directory: @0@'.format(efi_ldsdir),
2851 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002852 endif
2853endif
2854
2855found = []
2856missing = []
2857
2858foreach tuple : [
2859 ['libcryptsetup'],
2860 ['PAM'],
2861 ['AUDIT'],
2862 ['IMA'],
2863 ['AppArmor'],
2864 ['SELinux'],
2865 ['SECCOMP'],
2866 ['SMACK'],
2867 ['zlib'],
2868 ['xz'],
2869 ['lz4'],
2870 ['bzip2'],
2871 ['ACL'],
2872 ['gcrypt'],
2873 ['qrencode'],
2874 ['microhttpd'],
2875 ['gnutls'],
2876 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002877 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002878 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002879 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002880 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002881 ['libiptc'],
2882 ['elfutils'],
2883 ['binfmt'],
2884 ['vconsole'],
2885 ['quotacheck'],
2886 ['tmpfiles'],
2887 ['environment.d'],
2888 ['sysusers'],
2889 ['firstboot'],
2890 ['randomseed'],
2891 ['backlight'],
2892 ['rfkill'],
2893 ['logind'],
2894 ['machined'],
2895 ['importd'],
2896 ['hostnamed'],
2897 ['timedated'],
2898 ['timesyncd'],
2899 ['localed'],
2900 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002901 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002902 ['coredump'],
2903 ['polkit'],
2904 ['legacy pkla', install_polkit_pkla],
2905 ['efi'],
2906 ['gnu-efi', have_gnu_efi],
2907 ['kmod'],
2908 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002909 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002910 ['blkid'],
2911 ['dbus'],
2912 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002913 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002914 ['hwdb'],
2915 ['tpm'],
2916 ['man pages', want_man],
2917 ['html pages', want_html],
2918 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002919 ['SysV compat'],
2920 ['utmp'],
2921 ['ldconfig'],
2922 ['hibernate'],
2923 ['adm group', get_option('adm-group')],
2924 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002925 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002926 ['debug hashmap'],
2927 ['debug mmap cache'],
2928]
2929
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002930 if tuple.length() >= 2
2931 cond = tuple[1]
2932 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002933 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2934 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002935 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002936 endif
2937 if cond
2938 found += [tuple[0]]
2939 else
2940 missing += [tuple[0]]
2941 endif
2942endforeach
2943
2944status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002945 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002946 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002947 '',
2948 'disabled features: @0@'.format(', '.join(missing)),
2949 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002950message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002951
2952if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09002953 warning('\n' +
2954 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2955 'systemd used fixed names for unit file directories and other paths, so anything\n' +
2956 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002957endif