blob: 287032aff6a07aff5ac4e0d3434ed11ac0de1547 [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-Szmek424e80b2018-05-19 17:02:37 +0200244substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('catalogdir', catalogdir)
246substs.set('tmpfilesdir', tmpfilesdir)
247substs.set('sysusersdir', sysusersdir)
248substs.set('sysctldir', sysctldir)
249substs.set('binfmtdir', binfmtdir)
250substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200251substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400252substs.set('systemgeneratordir', systemgeneratordir)
253substs.set('usergeneratordir', usergeneratordir)
254substs.set('systemenvgeneratordir', systemenvgeneratordir)
255substs.set('userenvgeneratordir', userenvgeneratordir)
256substs.set('systemshutdowndir', systemshutdowndir)
257substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400258substs.set('VARLOGDIR', varlogdir)
259substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400260substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
261substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400262substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
263substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
264substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
265substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100266substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400267
268#####################################################################
269
270cc = meson.get_compiler('c')
271pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400272check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100273meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400274
Adam Duskett08318a22018-01-15 06:25:46 -0500275if get_option('tests') != 'false'
276 cxx = find_program('c++', required : false)
277 if cxx.found()
278 # Used only for tests
279 add_languages('cpp')
280 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400281endif
282
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500283want_ossfuzz = get_option('oss-fuzz')
284want_libfuzzer = get_option('llvm-fuzz')
285fuzzer_build = want_ossfuzz or want_libfuzzer
286if want_ossfuzz and want_libfuzzer
287 error('only one of oss-fuzz and llvm-fuzz can be specified')
288endif
289if want_libfuzzer
290 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
291endif
292if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500293 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
294endif
295
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900296possible_cc_flags = [
297 '-Wextra',
298 '-Werror=undef',
299 '-Wlogical-op',
300 '-Wmissing-include-dirs',
301 '-Wold-style-definition',
302 '-Wpointer-arith',
303 '-Winit-self',
304 '-Wdeclaration-after-statement',
305 '-Wfloat-equal',
306 '-Wsuggest-attribute=noreturn',
307 '-Werror=missing-prototypes',
308 '-Werror=implicit-function-declaration',
309 '-Werror=missing-declarations',
310 '-Werror=return-type',
311 '-Werror=incompatible-pointer-types',
312 '-Werror=format=2',
313 '-Wstrict-prototypes',
314 '-Wredundant-decls',
315 '-Wmissing-noreturn',
316 '-Wimplicit-fallthrough=5',
317 '-Wshadow',
318 '-Wendif-labels',
319 '-Wstrict-aliasing=2',
320 '-Wwrite-strings',
321 '-Werror=overflow',
322 '-Wdate-time',
323 '-Wnested-externs',
324 '-ffast-math',
325 '-fno-common',
326 '-fdiagnostics-show-option',
327 '-fno-strict-aliasing',
328 '-fvisibility=hidden',
329 '-fstack-protector',
330 '-fstack-protector-strong',
331 '--param=ssp-buffer-size=4',
332]
333
334# --as-needed and --no-undefined are provided by meson by default,
335# run mesonconf to see what is enabled
336possible_link_flags = [
337 '-Wl,-z,relro',
338 '-Wl,-z,now',
339]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400340
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500341# the oss-fuzz fuzzers are not built with -fPIE, so don't
342# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500343if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900344 possible_cc_flags += '-fPIE'
345 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500346endif
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348if cc.get_id() == 'clang'
349 possible_cc_flags += [
350 '-Wno-typedef-redefinition',
351 '-Wno-gnu-variable-sized-type-not-at-end',
352 ]
353endif
354
355if get_option('buildtype') != 'debug'
356 possible_cc_flags += [
357 '-ffunction-sections',
358 '-fdata-sections',
359 ]
360
361 possible_link_flags += '-Wl,--gc-sections'
362endif
363
364add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
365
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400366# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
367# arguments, just emits a warnings. So test for the "positive" version instead.
368foreach arg : ['unused-parameter',
369 'missing-field-initializers',
370 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300371 'format-signedness',
372 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
373 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400374 if cc.has_argument('-W' + arg)
375 add_project_arguments('-Wno-' + arg, language : 'c')
376 endif
377endforeach
378
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800379if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400380 #include <time.h>
381 #include <inttypes.h>
382 typedef uint64_t usec_t;
383 usec_t now(clockid_t clock);
384 int main(void) {
385 struct timespec now;
386 return 0;
387 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800388''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400389 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400390endif
391
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400392link_test_c = files('tools/meson-link-test.c')
393
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900394foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400395 have = run_command(check_compilation_sh,
396 cc.cmd_array(), '-x', 'c', arg,
397 '-include', link_test_c).returncode() == 0
398 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900399 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_link_arguments(arg, language : 'c')
401 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endforeach
403
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404cpp = ' '.join(cc.cmd_array()) + ' -E'
405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <linux/stat.h>
425#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426'''
427# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
428
429foreach decl : ['char16_t',
430 'char32_t',
431 'key_serial_t',
432 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000433 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100434 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400435 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400436
437 # We get -1 if the size cannot be determined
438 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200439 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400440endforeach
441
442foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
443 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
444 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
445 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530446 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
448 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
449 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
450 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530452 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453 # if_tunnel.h is buggy and cannot be included on its own
454 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
458 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
459 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
460 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530461 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462 ['NDA_IFINDEX', 'linux/neighbour.h'],
463 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000464 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530466 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400467 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400468 prefix = decl.length() > 2 ? decl[2] : ''
469 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200470 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471endforeach
472
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200474 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400475endforeach
476
477foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100478 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100479 ['gettid', '''#include <sys/types.h>
480 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100481 ['pivot_root', '''#include <stdlib.h>
482 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100483 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400484 #include <sys/stat.h>
485 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100486 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100487 ['renameat2', '''#include <stdio.h>
488 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400489 ['kcmp', '''#include <linux/kcmp.h>'''],
490 ['keyctl', '''#include <sys/types.h>
491 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400493 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200494 ['bpf', '''#include <sys/syscall.h>
495 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100496 ['statx', '''#include <sys/types.h>
497 #include <sys/stat.h>
498 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100499 ['explicit_bzero' , '''#include <string.h>'''],
500 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400502
Lennart Poettering85db59b2017-12-25 12:01:14 +0100503 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200504 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400505endforeach
506
Lennart Poettering85db59b2017-12-25 12:01:14 +0100507if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200508 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200509 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400510else
511 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200512 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200513 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400514endif
515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400516#####################################################################
517
518sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400520m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400522git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100523env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100524perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400525
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400526meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400527mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400528test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
529splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400530
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
532# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500533progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400534 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ['kmod', '/usr/bin/kmod' ],
536 ['kexec', '/usr/sbin/kexec' ],
537 ['sulogin', '/usr/sbin/sulogin' ],
538 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
539 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
540 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
541 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
542 ]
543foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400544 path = get_option(prog[0] + '-path')
545 if path != ''
546 message('Using @1@ for @0@'.format(prog[0], path))
547 else
548 exe = find_program(prog[0],
549 '/usr/sbin/' + prog[0],
550 '/sbin/' + prog[0],
551 required: false)
552 path = exe.found() ? exe.path() : prog[1]
553 endif
554 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
555 conf.set_quoted(name, path)
556 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400557endforeach
558
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500559conf.set_quoted('TELINIT', get_option('telinit-path'))
560
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400561if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100562 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400563endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400564
565############################################################
566
567gperf = find_program('gperf')
568
569gperf_test_format = '''
570#include <string.h>
571const char * in_word_set(const char *, @0@);
572@1@
573'''
574gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
575gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
576gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
577if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400579else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400580 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
581 if cc.compiles(gperf_test)
582 gperf_len_type = 'unsigned'
583 else
584 error('unable to determine gperf len type')
585 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400586endif
587message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400588conf.set('GPERF_LEN_TYPE', gperf_len_type,
589 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590
591############################################################
592
593if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400594 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400595endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100596foreach header : ['crypt.h',
597 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598 'linux/memfd.h',
599 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200600 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400601 'valgrind/memcheck.h',
602 'valgrind/valgrind.h',
603 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400604
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200605 conf.set10('HAVE_' + header.underscorify().to_upper(),
606 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endforeach
608
609############################################################
610
611conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400612conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
613gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614
615default_hierarchy = get_option('default-hierarchy')
616conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
617 description : 'default cgroup hierarchy as string')
618if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400624endif
625
626time_epoch = get_option('time-epoch')
627if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400628 NEWS = files('NEWS')
629 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400630endif
631time_epoch = time_epoch.to_int()
632conf.set('TIME_EPOCH', time_epoch)
633
634system_uid_max = get_option('system-uid-max')
635if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400636 system_uid_max = run_command(
637 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800638 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
639 '/etc/login.defs').stdout().strip()
640 if system_uid_max == ''
641 system_uid_max = '999'
642 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643endif
644system_uid_max = system_uid_max.to_int()
645conf.set('SYSTEM_UID_MAX', system_uid_max)
646substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400647message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649system_gid_max = get_option('system-gid-max')
650if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400651 system_gid_max = run_command(
652 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800653 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
654 '/etc/login.defs').stdout().strip()
655 if system_gid_max == ''
656 system_gid_max = '999'
657 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400658endif
659system_gid_max = system_gid_max.to_int()
660conf.set('SYSTEM_GID_MAX', system_gid_max)
661substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400662message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400663
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100664dynamic_uid_min = get_option('dynamic-uid-min').to_int()
665dynamic_uid_max = get_option('dynamic-uid-max').to_int()
666conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
667conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
668substs.set('dynamicuidmin', dynamic_uid_min)
669substs.set('dynamicuidmax', dynamic_uid_max)
670
671container_uid_base_min = get_option('container-uid-base-min').to_int()
672container_uid_base_max = get_option('container-uid-base-max').to_int()
673conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
674conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
675substs.set('containeruidbasemin', container_uid_base_min)
676substs.set('containeruidbasemax', container_uid_base_max)
677
Lennart Poetteringafde4572017-12-05 11:00:24 +0100678nobody_user = get_option('nobody-user')
679nobody_group = get_option('nobody-group')
680
681getent_result = run_command('getent', 'passwd', '65534')
682if getent_result.returncode() == 0
683 name = getent_result.stdout().split(':')[0]
684 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900685 warning('\n' +
686 '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) +
687 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100688 endif
689endif
690id_result = run_command('id', '-u', nobody_user)
691if id_result.returncode() == 0
692 id = id_result.stdout().to_int()
693 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900694 warning('\n' +
695 '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) +
696 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100697 endif
698endif
699
700getent_result = run_command('getent', 'group', '65534')
701if getent_result.returncode() == 0
702 name = getent_result.stdout().split(':')[0]
703 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900704 warning('\n' +
705 '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) +
706 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100707 endif
708endif
709id_result = run_command('id', '-g', nobody_group)
710if id_result.returncode() == 0
711 id = id_result.stdout().to_int()
712 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900713 warning('\n' +
714 '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) +
715 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100716 endif
717endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900718if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900719 warning('\n' +
720 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
721 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900722endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100723
724conf.set_quoted('NOBODY_USER_NAME', nobody_user)
725conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900726substs.set('NOBODY_USER_NAME', nobody_user)
727substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100728
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400729tty_gid = get_option('tty-gid')
730conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400731substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400732
Ikey Doherty84786b82017-12-03 12:28:23 +0000733# Ensure provided GID argument is numeric, otherwise fallback to default assignment
734if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900735 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000736else
Yu Watanabed6806872017-12-05 14:01:39 +0900737 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000738endif
739substs.set('USERS_GID', users_gid)
740
Yu Watanabe348b4432018-05-07 18:17:35 +0900741conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
742conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400743
744substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700745substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400746
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400747kill_user_processes = get_option('default-kill-user-processes')
748conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100749conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400750substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400751
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400752dns_servers = get_option('dns-servers')
753conf.set_quoted('DNS_SERVERS', dns_servers)
754substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400756ntp_servers = get_option('ntp-servers')
757conf.set_quoted('NTP_SERVERS', ntp_servers)
758substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400759
760conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
761
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400762substs.set('SUSHELL', get_option('debug-shell'))
763substs.set('DEBUGTTY', get_option('debug-tty'))
764
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200765enable_debug_hashmap = false
766enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900767foreach name : get_option('debug')
768 if name == 'hashmap'
769 enable_debug_hashmap = true
770 elif name == 'mmap-cache'
771 enable_debug_mmap_cache = true
772 else
773 message('unknown debug option "@0@", ignoring'.format(name))
774 endif
775endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200776conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
777conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400778
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200779conf.set10('VALGRIND', get_option('valgrind'))
780
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400781#####################################################################
782
783threads = dependency('threads')
784librt = cc.find_library('rt')
785libm = cc.find_library('m')
786libdl = cc.find_library('dl')
787libcrypt = cc.find_library('crypt')
788
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400789libcap = dependency('libcap', required : false)
790if not libcap.found()
791 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
792 libcap = cc.find_library('cap')
793endif
794
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100796 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
798want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500799if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400800 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400801 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400802 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200805 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400806 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200808conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809
810want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500811if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400812 libselinux = dependency('libselinux',
813 version : '>= 2.1.9',
814 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200817 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400818 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200820conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
822want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500823if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400824 libapparmor = dependency('libapparmor',
825 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400827else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400829 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833smack_run_label = get_option('smack-run-label')
834if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400835 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400836endif
837
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400838want_polkit = get_option('polkit')
839install_polkit = false
840install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500841if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400843
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400844 libpolkit = dependency('polkit-gobject-1',
845 required : false)
846 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
847 message('Old polkit detected, will install pkla files')
848 install_polkit_pkla = true
849 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400850endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200851conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400852
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400853want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500854if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400855 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400857else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200858 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400859 libacl = []
860endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200861conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500864if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400865 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400867else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200868 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400869 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872
873want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500874if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400875 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200878 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400882
883want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500884if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libkmod = dependency('libkmod',
886 version : '>= 15',
887 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200893conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400894
895want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500896if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libpam = cc.find_library('pam', required : want_pam == 'true')
898 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400902 libpam = []
903 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906
907want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500908if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400909 libmicrohttpd = dependency('libmicrohttpd',
910 version : '>= 0.9.33',
911 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400913else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200914 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400915 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200917conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918
919want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500920if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 libcryptsetup = dependency('libcryptsetup',
922 version : '>= 1.6.0',
923 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930
931want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500932if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 libcurl = dependency('libcurl',
934 version : '>= 7.32.0',
935 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400937else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400939 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200941conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942
943want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400944want_libidn2 = get_option('libidn2')
945if want_libidn == 'true' and want_libidn2 == 'true'
946 error('libidn and libidn2 cannot be requested simultaneously')
947endif
948
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500949if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400950 libidn = dependency('libidn',
951 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400953else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400955 libidn = []
956endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500958if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400959 # libidn is used for both libidn and libidn2 objects
960 libidn = dependency('libidn2',
961 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962 have = libidn.found()
963else
964 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400967
968want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500969if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libiptc = dependency('libiptc',
971 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400975 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200977conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978
979want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500980if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libqrencode = dependency('libqrencode',
982 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400984else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400986 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400990want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500991if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400992 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
993 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
997endif
998if not have
999 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001000 libgcrypt = []
1001 libgpg_error = []
1002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001005want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001006if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libgnutls = dependency('gnutls',
1008 version : '>= 3.1.4',
1009 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001018if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libdw = dependency('libdw',
1020 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001029if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001030 libz = dependency('zlib',
1031 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001033else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038
1039want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libbzip2 = cc.find_library('bz2',
1042 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001044else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001046 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001048conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049
1050want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001051if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001052 libxz = dependency('liblzma',
1053 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001057 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060
1061want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001062if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 liblz4 = dependency('liblz4',
1064 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001068 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001072want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001073if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001074 libxkbcommon = dependency('xkbcommon',
1075 version : '>= 0.3.0',
1076 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080 libxkbcommon = []
1081endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001084want_pcre2 = get_option('pcre2')
1085if want_pcre2 != 'false'
1086 libpcre2 = dependency('libpcre2-8',
1087 required : want_pcre2 == 'true')
1088 have = libpcre2.found()
1089else
1090 have = false
1091 libpcre2 = []
1092endif
1093conf.set10('HAVE_PCRE2', have)
1094
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001095want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001096if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001097 libglib = dependency('glib-2.0',
1098 version : '>= 2.22.0',
1099 required : want_glib == 'true')
1100 libgobject = dependency('gobject-2.0',
1101 version : '>= 2.22.0',
1102 required : want_glib == 'true')
1103 libgio = dependency('gio-2.0',
1104 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001105 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001106else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001107 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libglib = []
1109 libgobject = []
1110 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001111endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001113
1114want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001115if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libdbus = dependency('dbus-1',
1117 version : '>= 1.3.2',
1118 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001120else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001122 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001123endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001125
Yu Watanabe42303dc2017-06-18 05:22:32 +09001126default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001127if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001128 default_dnssec = 'no'
1129endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001130if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001131 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1132 default_dnssec = 'no'
1133endif
1134conf.set('DEFAULT_DNSSEC_MODE',
1135 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1136substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1137
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001139if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = (conf.get('HAVE_LIBCURL') == 1 and
1141 conf.get('HAVE_ZLIB') == 1 and
1142 conf.get('HAVE_BZIP2') == 1 and
1143 conf.get('HAVE_XZ') == 1 and
1144 conf.get('HAVE_GCRYPT') == 1)
1145 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 error('importd support was requested, but dependencies are not available')
1147 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148else
1149 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001154if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001155 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1156 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1158 # it's possible to build one without the other. Complain only if
1159 # support was explictly requested. The auxiliary files like sysusers
1160 # config should be installed when any of the programs are built.
1161 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1162 error('remote support was requested, but dependencies are not available')
1163 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164 have = have_deps[0] or have_deps[1]
1165else
1166 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001170foreach term : ['utmp',
1171 'hibernate',
1172 'environment-d',
1173 'binfmt',
1174 'coredump',
1175 'resolve',
1176 'logind',
1177 'hostnamed',
1178 'localed',
1179 'machined',
1180 'networkd',
1181 'timedated',
1182 'timesyncd',
1183 'myhostname',
1184 'firstboot',
1185 'randomseed',
1186 'backlight',
1187 'vconsole',
1188 'quotacheck',
1189 'sysusers',
1190 'tmpfiles',
1191 'hwdb',
1192 'rfkill',
1193 'ldconfig',
1194 'efi',
1195 'tpm',
1196 'ima',
1197 'smack',
1198 'gshadow',
1199 'idn',
1200 'nss-systemd']
1201 have = get_option(term)
1202 name = 'ENABLE_' + term.underscorify().to_upper()
1203 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001204endforeach
1205
Yu Watanabe348b4432018-05-07 18:17:35 +09001206conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001207
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001208want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001209install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001210slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001211tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001212fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001213
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001214conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001215
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001216#####################################################################
1217
1218if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001219 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001220
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001221 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001222 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001223 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 elif efi_arch == 'x86_64'
1225 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001226 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001227 elif efi_arch == 'arm'
1228 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001229 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001230 elif efi_arch == 'aarch64'
1231 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001232 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001233 else
1234 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001235 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001236 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001239 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001240
1241 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242else
1243 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001244endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001246
1247#####################################################################
1248
1249config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001250 output : 'config.h',
1251 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001252
Yu Watanabe348b4432018-05-07 18:17:35 +09001253meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1254
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001255includes = include_directories('src/basic',
1256 'src/shared',
1257 'src/systemd',
1258 'src/journal',
1259 'src/resolve',
1260 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001261 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001262 'src/login',
1263 'src/udev',
1264 'src/libudev',
1265 'src/core',
1266 'src/libsystemd/sd-bus',
1267 'src/libsystemd/sd-device',
1268 'src/libsystemd/sd-hwdb',
1269 'src/libsystemd/sd-id128',
1270 'src/libsystemd/sd-netlink',
1271 'src/libsystemd/sd-network',
1272 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001273 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001274
1275add_project_arguments('-include', 'config.h', language : 'c')
1276
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277subdir('po')
1278subdir('catalog')
1279subdir('src/systemd')
1280subdir('src/basic')
1281subdir('src/libsystemd')
1282subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001285
1286libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 'journal-core',
1288 libjournal_core_sources,
1289 journald_gperf_c,
1290 include_directories : includes,
1291 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001293libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001294libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001295 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001296 '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 +02001297 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 include_directories : includes,
1299 link_args : ['-shared',
1300 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001301 link_with : [libbasic,
1302 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001303 link_whole : [libsystemd_static,
1304 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001305 dependencies : [threads,
1306 librt,
1307 libxz,
1308 liblz4],
1309 link_depends : libsystemd_sym,
1310 install : true,
1311 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001312
Davide Cavalca70848ec2018-04-09 02:43:35 -07001313static_libsystemd = get_option('static-libsystemd')
1314static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1315
1316install_libsystemd_static = static_library(
1317 'systemd',
1318 libsystemd_sources,
1319 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001320 basic_sources,
1321 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001322 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001323 build_by_default : static_libsystemd != 'false',
1324 install : static_libsystemd != 'false',
1325 install_dir : rootlibdir,
1326 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1327 dependencies : [threads,
1328 librt,
1329 libxz,
1330 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001331 libcap,
1332 libblkid,
1333 libmount,
1334 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001335 libgcrypt],
1336 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1337
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338############################################################
1339
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001340# binaries that have --help and are intended for use by humans,
1341# usually, but not always, installed in /bin.
1342public_programs = []
1343
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001344subdir('src/libudev')
1345subdir('src/shared')
1346subdir('src/core')
1347subdir('src/udev')
1348subdir('src/network')
1349
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001350subdir('src/analyze')
1351subdir('src/journal-remote')
1352subdir('src/coredump')
1353subdir('src/hostname')
1354subdir('src/import')
1355subdir('src/kernel-install')
1356subdir('src/locale')
1357subdir('src/machine')
1358subdir('src/nspawn')
1359subdir('src/resolve')
1360subdir('src/timedate')
1361subdir('src/timesync')
1362subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001363subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001364
1365subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001366subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001367subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001368subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001369
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001370############################################################
1371
1372# only static linking apart from libdl, to make sure that the
1373# module is linked to all libraries that it uses.
1374test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 'test-dlopen',
1376 test_dlopen_c,
1377 include_directories : includes,
1378 link_with : [libbasic],
1379 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001380
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001381foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001382 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001383 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001384 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001385
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001386 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 if condition
1388 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001389
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001390 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1391 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001392
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001393 nss = shared_library(
1394 'nss_' + module,
1395 'src/nss-@0@/nss-@0@.c'.format(module),
1396 version : '2',
1397 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001398 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1399 link_args : ['-Wl,-z,nodelete',
1400 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 '-Wl,--version-script=' + version_script_arg,
1402 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001403 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 libbasic],
1405 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001406 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001407 link_depends : sym,
1408 install : true,
1409 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001410
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001411 # We cannot use shared_module because it does not support version suffix.
1412 # Unfortunately shared_library insists on creating the symlink…
1413 meson.add_install_script('sh', '-c',
1414 'rm $DESTDIR@0@/libnss_@1@.so'
1415 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001416
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 test('dlopen-nss_' + module,
1418 test_dlopen,
1419 args : [nss.full_path()]) # path to dlopen must include a slash
1420 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001421endforeach
1422
1423############################################################
1424
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425executable('systemd',
1426 systemd_sources,
1427 include_directories : includes,
1428 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001429 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430 dependencies : [threads,
1431 librt,
1432 libseccomp,
1433 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001434 libmount,
1435 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001436 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001437 install : true,
1438 install_dir : rootlibexecdir)
1439
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001440meson.add_install_script(meson_make_symlink,
1441 join_paths(rootlibexecdir, 'systemd'),
1442 join_paths(rootsbindir, 'init'))
1443
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001444exe = executable('systemd-analyze',
1445 systemd_analyze_sources,
1446 include_directories : includes,
1447 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001448 libshared],
1449 dependencies : [threads,
1450 librt,
1451 libseccomp,
1452 libselinux,
1453 libmount,
1454 libblkid],
1455 install_rpath : rootlibexecdir,
1456 install : true)
1457public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001458
1459executable('systemd-journald',
1460 systemd_journald_sources,
1461 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001462 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001463 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464 dependencies : [threads,
1465 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001466 liblz4,
1467 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001468 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469 install : true,
1470 install_dir : rootlibexecdir)
1471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001472exe = executable('systemd-cat',
1473 systemd_cat_sources,
1474 include_directories : includes,
1475 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001476 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477 dependencies : [threads],
1478 install_rpath : rootlibexecdir,
1479 install : true)
1480public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001481
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001482exe = executable('journalctl',
1483 journalctl_sources,
1484 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001485 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001486 dependencies : [threads,
1487 libqrencode,
1488 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001489 liblz4,
1490 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001491 install_rpath : rootlibexecdir,
1492 install : true,
1493 install_dir : rootbindir)
1494public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495
1496executable('systemd-getty-generator',
1497 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001498 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001499 link_with : [libshared],
1500 install_rpath : rootlibexecdir,
1501 install : true,
1502 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503
1504executable('systemd-debug-generator',
1505 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001507 link_with : [libshared],
1508 install_rpath : rootlibexecdir,
1509 install : true,
1510 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511
1512executable('systemd-fstab-generator',
1513 'src/fstab-generator/fstab-generator.c',
1514 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001516 link_with : [libshared],
1517 install_rpath : rootlibexecdir,
1518 install : true,
1519 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001521if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001522 executable('30-systemd-environment-d-generator',
1523 'src/environment-d-generator/environment-d-generator.c',
1524 include_directories : includes,
1525 link_with : [libshared],
1526 install_rpath : rootlibexecdir,
1527 install : true,
1528 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001529
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 meson.add_install_script(meson_make_symlink,
1531 join_paths(sysconfdir, 'environment'),
1532 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533endif
1534
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001535if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 executable('systemd-hibernate-resume-generator',
1537 'src/hibernate-resume/hibernate-resume-generator.c',
1538 include_directories : includes,
1539 link_with : [libshared],
1540 install_rpath : rootlibexecdir,
1541 install : true,
1542 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001543
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 executable('systemd-hibernate-resume',
1545 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001546 include_directories : includes,
1547 link_with : [libshared],
1548 install_rpath : rootlibexecdir,
1549 install : true,
1550 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551endif
1552
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001553if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001554 executable('systemd-gpt-auto-generator',
1555 'src/gpt-auto-generator/gpt-auto-generator.c',
1556 'src/basic/blkid-util.h',
1557 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001558 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 dependencies : libblkid,
1560 install_rpath : rootlibexecdir,
1561 install : true,
1562 install_dir : systemgeneratordir)
1563
1564 exe = executable('systemd-dissect',
1565 'src/dissect/dissect.c',
1566 include_directories : includes,
1567 link_with : [libshared],
1568 install_rpath : rootlibexecdir,
1569 install : true,
1570 install_dir : rootlibexecdir)
1571 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001572endif
1573
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001574if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001575 executable('systemd-resolved',
1576 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001577 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001578 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001579 libbasic_gcrypt,
1580 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001581 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001582 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001583 libm,
1584 libidn],
1585 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 install : true,
1587 install_dir : rootlibexecdir)
1588
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001589 exe = executable('resolvectl',
1590 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001592 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001593 libbasic_gcrypt,
1594 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001596 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001597 libm,
1598 libidn],
1599 install_rpath : rootlibexecdir,
1600 install : true)
1601 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001602
1603 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001604 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001605 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001606
1607 meson.add_install_script(meson_make_symlink,
1608 join_paths(bindir, 'resolvectl'),
1609 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001610endif
1611
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001612if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001613 executable('systemd-logind',
1614 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001615 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001617 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001619 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001620 install_rpath : rootlibexecdir,
1621 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 exe = executable('loginctl',
1625 loginctl_sources,
1626 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001627 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001628 dependencies : [threads,
1629 liblz4,
1630 libxz],
1631 install_rpath : rootlibexecdir,
1632 install : true,
1633 install_dir : rootbindir)
1634 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001635
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001636 exe = executable('systemd-inhibit',
1637 'src/login/inhibit.c',
1638 include_directories : includes,
1639 link_with : [libshared],
1640 install_rpath : rootlibexecdir,
1641 install : true,
1642 install_dir : rootbindir)
1643 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001644
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001645 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001646 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1647 pam_systemd = shared_library(
1648 'pam_systemd',
1649 pam_systemd_c,
1650 name_prefix : '',
1651 include_directories : includes,
1652 link_args : ['-shared',
1653 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001654 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001655 libshared_static],
1656 dependencies : [threads,
1657 libpam,
1658 libpam_misc],
1659 link_depends : pam_systemd_sym,
1660 install : true,
1661 install_dir : pamlibdir)
1662
1663 test('dlopen-pam_systemd',
1664 test_dlopen,
1665 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1666 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001667endif
1668
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001669executable('systemd-user-runtime-dir',
1670 user_runtime_dir_sources,
1671 include_directories : includes,
1672 link_with : [libshared, liblogind_core],
1673 install_rpath : rootlibexecdir,
1674 install : true,
1675 install_dir : rootlibexecdir)
1676
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001677if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001678 executable('systemd-user-sessions',
1679 'src/user-sessions/user-sessions.c',
1680 include_directories : includes,
1681 link_with : [libshared],
1682 install_rpath : rootlibexecdir,
1683 install : true,
1684 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685endif
1686
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001687if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001688 exe = executable('bootctl',
1689 'src/boot/bootctl.c',
1690 include_directories : includes,
1691 link_with : [libshared],
1692 dependencies : [libblkid],
1693 install_rpath : rootlibexecdir,
1694 install : true)
1695 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001696endif
1697
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001698exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1699 include_directories : includes,
1700 link_with : [libshared],
1701 dependencies : [threads],
1702 install_rpath : rootlibexecdir,
1703 install : true)
1704public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001705
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001706exe = executable('systemctl', 'src/systemctl/systemctl.c',
1707 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001708 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001709 dependencies : [threads,
1710 libcap,
1711 libselinux,
1712 libxz,
1713 liblz4],
1714 install_rpath : rootlibexecdir,
1715 install : true,
1716 install_dir : rootbindir)
1717public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001719foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1720 meson.add_install_script(meson_make_symlink,
1721 join_paths(rootbindir, 'systemctl'),
1722 join_paths(rootsbindir, alias))
1723endforeach
1724
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001725if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001726 executable('systemd-backlight',
1727 'src/backlight/backlight.c',
1728 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001729 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001733endif
1734
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001735if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001736 executable('systemd-rfkill',
1737 'src/rfkill/rfkill.c',
1738 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001739 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 install_rpath : rootlibexecdir,
1741 install : true,
1742 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001743endif
1744
1745executable('systemd-system-update-generator',
1746 'src/system-update-generator/system-update-generator.c',
1747 include_directories : includes,
1748 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001749 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750 install : true,
1751 install_dir : systemgeneratordir)
1752
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001753if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001754 executable('systemd-cryptsetup',
1755 'src/cryptsetup/cryptsetup.c',
1756 include_directories : includes,
1757 link_with : [libshared],
1758 dependencies : [libcryptsetup],
1759 install_rpath : rootlibexecdir,
1760 install : true,
1761 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 executable('systemd-cryptsetup-generator',
1764 'src/cryptsetup/cryptsetup-generator.c',
1765 include_directories : includes,
1766 link_with : [libshared],
1767 dependencies : [libcryptsetup],
1768 install_rpath : rootlibexecdir,
1769 install : true,
1770 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001771
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001772 executable('systemd-veritysetup',
1773 'src/veritysetup/veritysetup.c',
1774 include_directories : includes,
1775 link_with : [libshared],
1776 dependencies : [libcryptsetup],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001780
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 executable('systemd-veritysetup-generator',
1782 'src/veritysetup/veritysetup-generator.c',
1783 include_directories : includes,
1784 link_with : [libshared],
1785 dependencies : [libcryptsetup],
1786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789endif
1790
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001791if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001792 executable('systemd-sysv-generator',
1793 'src/sysv-generator/sysv-generator.c',
1794 include_directories : includes,
1795 link_with : [libshared],
1796 install_rpath : rootlibexecdir,
1797 install : true,
1798 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001799
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 executable('systemd-rc-local-generator',
1801 'src/rc-local-generator/rc-local-generator.c',
1802 include_directories : includes,
1803 link_with : [libshared],
1804 install_rpath : rootlibexecdir,
1805 install : true,
1806 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807endif
1808
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001809if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001810 executable('systemd-hostnamed',
1811 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001813 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001814 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001815 install : true,
1816 install_dir : rootlibexecdir)
1817
1818 exe = executable('hostnamectl',
1819 'src/hostname/hostnamectl.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 install_rpath : rootlibexecdir,
1823 install : true)
1824 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001825endif
1826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001827if conf.get('ENABLE_LOCALED') == 1
1828 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 # logind will load libxkbcommon.so dynamically on its own
1830 deps = [libdl]
1831 else
1832 deps = []
1833 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001834
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 executable('systemd-localed',
1836 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001837 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001838 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001840 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001841 install : true,
1842 install_dir : rootlibexecdir)
1843
1844 exe = executable('localectl',
1845 localectl_sources,
1846 include_directories : includes,
1847 link_with : [libshared],
1848 install_rpath : rootlibexecdir,
1849 install : true)
1850 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001851endif
1852
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001853if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 executable('systemd-timedated',
1855 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001856 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001857 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001861endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862
Yu Watanabe6129ec82018-05-03 18:07:43 +09001863if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 exe = executable('timedatectl',
1865 'src/timedate/timedatectl.c',
1866 include_directories : includes,
1867 install_rpath : rootlibexecdir,
1868 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001869 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001870 install : true)
1871 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 executable('systemd-timesyncd',
1876 systemd_timesyncd_sources,
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [threads,
1880 libm],
1881 install_rpath : rootlibexecdir,
1882 install : true,
1883 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001884
1885 executable('systemd-time-wait-sync',
1886 'src/time-wait-sync/time-wait-sync.c',
1887 include_directories : includes,
1888 link_with : [libshared],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001892endif
1893
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001894if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 executable('systemd-machined',
1896 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001897 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001898 link_with : [libmachine_core,
1899 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001900 install_rpath : rootlibexecdir,
1901 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 install_dir : rootlibexecdir)
1903
1904 exe = executable('machinectl',
1905 'src/machine/machinectl.c',
1906 include_directories : includes,
1907 link_with : [libshared],
1908 dependencies : [threads,
1909 libxz,
1910 liblz4],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootbindir)
1914 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001915endif
1916
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001917if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001918 executable('systemd-importd',
1919 systemd_importd_sources,
1920 include_directories : includes,
1921 link_with : [libshared],
1922 dependencies : [threads],
1923 install_rpath : rootlibexecdir,
1924 install : true,
1925 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001926
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 systemd_pull = executable('systemd-pull',
1928 systemd_pull_sources,
1929 include_directories : includes,
1930 link_with : [libshared],
1931 dependencies : [libcurl,
1932 libz,
1933 libbzip2,
1934 libxz,
1935 libgcrypt],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001939
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 systemd_import = executable('systemd-import',
1941 systemd_import_sources,
1942 include_directories : includes,
1943 link_with : [libshared],
1944 dependencies : [libcurl,
1945 libz,
1946 libbzip2,
1947 libxz],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 systemd_export = executable('systemd-export',
1953 systemd_export_sources,
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [libcurl,
1957 libz,
1958 libbzip2,
1959 libxz],
1960 install_rpath : rootlibexecdir,
1961 install : true,
1962 install_dir : rootlibexecdir)
1963 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001964endif
1965
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001966if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 exe = executable('systemd-journal-upload',
1968 systemd_journal_upload_sources,
1969 include_directories : includes,
1970 link_with : [libshared],
1971 dependencies : [threads,
1972 libcurl,
1973 libgnutls,
1974 libxz,
1975 liblz4],
1976 install_rpath : rootlibexecdir,
1977 install : true,
1978 install_dir : rootlibexecdir)
1979 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001980endif
1981
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001982if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 s_j_remote = executable('systemd-journal-remote',
1984 systemd_journal_remote_sources,
1985 include_directories : includes,
1986 link_with : [libshared],
1987 dependencies : [threads,
1988 libmicrohttpd,
1989 libgnutls,
1990 libxz,
1991 liblz4],
1992 install_rpath : rootlibexecdir,
1993 install : true,
1994 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001995
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 s_j_gatewayd = executable('systemd-journal-gatewayd',
1997 systemd_journal_gatewayd_sources,
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [threads,
2001 libmicrohttpd,
2002 libgnutls,
2003 libxz,
2004 liblz4],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
2008 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002009endif
2010
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002011if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002012 executable('systemd-coredump',
2013 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002014 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002015 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002016 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002017 libacl,
2018 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002019 libxz,
2020 liblz4],
2021 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 install : true,
2023 install_dir : rootlibexecdir)
2024
2025 exe = executable('coredumpctl',
2026 coredumpctl_sources,
2027 include_directories : includes,
2028 link_with : [libshared],
2029 dependencies : [threads,
2030 libxz,
2031 liblz4],
2032 install_rpath : rootlibexecdir,
2033 install : true)
2034 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 exe = executable('systemd-binfmt',
2039 'src/binfmt/binfmt.c',
2040 include_directories : includes,
2041 link_with : [libshared],
2042 install_rpath : rootlibexecdir,
2043 install : true,
2044 install_dir : rootlibexecdir)
2045 public_programs += [exe]
2046
2047 meson.add_install_script('sh', '-c',
2048 mkdir_p.format(binfmtdir))
2049 meson.add_install_script('sh', '-c',
2050 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2051endif
2052
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002053if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 executable('systemd-vconsole-setup',
2055 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056 include_directories : includes,
2057 link_with : [libshared],
2058 install_rpath : rootlibexecdir,
2059 install : true,
2060 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 executable('systemd-random-seed',
2065 'src/random-seed/random-seed.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002071endif
2072
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002073if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 executable('systemd-firstboot',
2075 'src/firstboot/firstboot.c',
2076 include_directories : includes,
2077 link_with : [libshared],
2078 dependencies : [libcrypt],
2079 install_rpath : rootlibexecdir,
2080 install : true,
2081 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002082endif
2083
2084executable('systemd-remount-fs',
2085 'src/remount-fs/remount-fs.c',
2086 'src/core/mount-setup.c',
2087 'src/core/mount-setup.h',
2088 include_directories : includes,
2089 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002090 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002091 install : true,
2092 install_dir : rootlibexecdir)
2093
2094executable('systemd-machine-id-setup',
2095 'src/machine-id-setup/machine-id-setup-main.c',
2096 'src/core/machine-id-setup.c',
2097 'src/core/machine-id-setup.h',
2098 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002100 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101 install : true,
2102 install_dir : rootbindir)
2103
2104executable('systemd-fsck',
2105 'src/fsck/fsck.c',
2106 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002107 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002108 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002109 install : true,
2110 install_dir : rootlibexecdir)
2111
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002112executable('systemd-growfs',
2113 'src/partition/growfs.c',
2114 include_directories : includes,
2115 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002116 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002117 install_rpath : rootlibexecdir,
2118 install : true,
2119 install_dir : rootlibexecdir)
2120
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002121executable('systemd-makefs',
2122 'src/partition/makefs.c',
2123 include_directories : includes,
2124 link_with : [libshared],
2125 install_rpath : rootlibexecdir,
2126 install : true,
2127 install_dir : rootlibexecdir)
2128
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002129executable('systemd-sleep',
2130 'src/sleep/sleep.c',
2131 include_directories : includes,
2132 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002133 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134 install : true,
2135 install_dir : rootlibexecdir)
2136
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002137exe = executable('systemd-sysctl',
2138 'src/sysctl/sysctl.c',
2139 include_directories : includes,
2140 link_with : [libshared],
2141 install_rpath : rootlibexecdir,
2142 install : true,
2143 install_dir : rootlibexecdir)
2144public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002145
2146executable('systemd-ac-power',
2147 'src/ac-power/ac-power.c',
2148 include_directories : includes,
2149 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002150 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002151 install : true,
2152 install_dir : rootlibexecdir)
2153
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002154exe = executable('systemd-detect-virt',
2155 'src/detect-virt/detect-virt.c',
2156 include_directories : includes,
2157 link_with : [libshared],
2158 install_rpath : rootlibexecdir,
2159 install : true)
2160public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002161
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002162exe = executable('systemd-delta',
2163 'src/delta/delta.c',
2164 include_directories : includes,
2165 link_with : [libshared],
2166 install_rpath : rootlibexecdir,
2167 install : true)
2168public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002170exe = executable('systemd-escape',
2171 'src/escape/escape.c',
2172 include_directories : includes,
2173 link_with : [libshared],
2174 install_rpath : rootlibexecdir,
2175 install : true,
2176 install_dir : rootbindir)
2177public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002179exe = executable('systemd-notify',
2180 'src/notify/notify.c',
2181 include_directories : includes,
2182 link_with : [libshared],
2183 install_rpath : rootlibexecdir,
2184 install : true,
2185 install_dir : rootbindir)
2186public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
2188executable('systemd-volatile-root',
2189 'src/volatile-root/volatile-root.c',
2190 include_directories : includes,
2191 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002192 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193 install : true,
2194 install_dir : rootlibexecdir)
2195
2196executable('systemd-cgroups-agent',
2197 'src/cgroups-agent/cgroups-agent.c',
2198 include_directories : includes,
2199 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002200 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002201 install : true,
2202 install_dir : rootlibexecdir)
2203
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204exe = executable('systemd-path',
2205 'src/path/path.c',
2206 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002207 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002208 install_rpath : rootlibexecdir,
2209 install : true)
2210public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002211
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002212exe = executable('systemd-ask-password',
2213 'src/ask-password/ask-password.c',
2214 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002215 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002216 install_rpath : rootlibexecdir,
2217 install : true,
2218 install_dir : rootbindir)
2219public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220
2221executable('systemd-reply-password',
2222 'src/reply-password/reply-password.c',
2223 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002224 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002225 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002226 install : true,
2227 install_dir : rootlibexecdir)
2228
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229exe = executable('systemd-tty-ask-password-agent',
2230 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2231 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002232 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : rootbindir)
2236public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238exe = executable('systemd-cgls',
2239 'src/cgls/cgls.c',
2240 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 install_rpath : rootlibexecdir,
2243 install : true)
2244public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002245
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246exe = executable('systemd-cgtop',
2247 'src/cgtop/cgtop.c',
2248 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002249 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250 install_rpath : rootlibexecdir,
2251 install : true)
2252public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002253
2254executable('systemd-initctl',
2255 'src/initctl/initctl.c',
2256 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002257 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002258 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002259 install : true,
2260 install_dir : rootlibexecdir)
2261
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002262exe = executable('systemd-mount',
2263 'src/mount/mount-tool.c',
2264 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002265 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 install_rpath : rootlibexecdir,
2267 install : true)
2268public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002270meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002271 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002272
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273exe = executable('systemd-run',
2274 'src/run/run.c',
2275 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002276 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277 install_rpath : rootlibexecdir,
2278 install : true)
2279public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002281exe = executable('systemd-stdio-bridge',
2282 'src/stdio-bridge/stdio-bridge.c',
2283 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002284 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 install_rpath : rootlibexecdir,
2286 install : true)
2287public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002289exe = executable('busctl',
2290 'src/busctl/busctl.c',
2291 'src/busctl/busctl-introspect.c',
2292 'src/busctl/busctl-introspect.h',
2293 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002295 install_rpath : rootlibexecdir,
2296 install : true)
2297public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002298
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002299if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002300 exe = executable('systemd-sysusers',
2301 'src/sysusers/sysusers.c',
2302 include_directories : includes,
2303 link_with : [libshared],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootbindir)
2307 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002308endif
2309
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002310if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002311 exe = executable('systemd-tmpfiles',
2312 'src/tmpfiles/tmpfiles.c',
2313 include_directories : includes,
2314 link_with : [libshared],
2315 dependencies : [libacl],
2316 install_rpath : rootlibexecdir,
2317 install : true,
2318 install_dir : rootbindir)
2319 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002320
2321 test('test-systemd-tmpfiles',
2322 test_systemd_tmpfiles_py,
2323 args : exe.full_path())
2324 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002325endif
2326
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002327if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 exe = executable('systemd-hwdb',
2329 'src/hwdb/hwdb.c',
2330 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2331 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002332 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002333 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 install : true,
2335 install_dir : rootbindir)
2336 public_programs += [exe]
2337endif
2338
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002339if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 executable('systemd-quotacheck',
2341 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002343 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002344 install_rpath : rootlibexecdir,
2345 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002346 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002347endif
2348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-socket-proxyd',
2350 'src/socket-proxy/socket-proxyd.c',
2351 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002352 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002353 dependencies : [threads],
2354 install_rpath : rootlibexecdir,
2355 install : true,
2356 install_dir : rootlibexecdir)
2357public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002359exe = executable('systemd-udevd',
2360 systemd_udevd_sources,
2361 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002362 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002365 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002366 dependencies : [threads,
2367 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 libacl,
2370 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002371 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372 install : true,
2373 install_dir : rootlibexecdir)
2374public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002375
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376exe = executable('udevadm',
2377 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002378 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 include_directories : includes,
2380 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002382 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002383 dependencies : [threads,
2384 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002386 libacl,
2387 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002388 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 install : true,
2390 install_dir : rootbindir)
2391public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002392
2393executable('systemd-shutdown',
2394 systemd_shutdown_sources,
2395 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002396 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002397 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002398 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002399 install : true,
2400 install_dir : rootlibexecdir)
2401
2402executable('systemd-update-done',
2403 'src/update-done/update-done.c',
2404 include_directories : includes,
2405 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002406 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002407 install : true,
2408 install_dir : rootlibexecdir)
2409
2410executable('systemd-update-utmp',
2411 'src/update-utmp/update-utmp.c',
2412 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002413 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002415 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002416 install : true,
2417 install_dir : rootlibexecdir)
2418
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002419if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002420 executable('systemd-modules-load',
2421 'src/modules-load/modules-load.c',
2422 include_directories : includes,
2423 link_with : [libshared],
2424 dependencies : [libkmod],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002428
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002429 meson.add_install_script('sh', '-c',
2430 mkdir_p.format(modulesloaddir))
2431 meson.add_install_script('sh', '-c',
2432 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433endif
2434
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002435exe = executable('systemd-nspawn',
2436 systemd_nspawn_sources,
2437 'src/core/mount-setup.c', # FIXME: use a variable?
2438 'src/core/mount-setup.h',
2439 'src/core/loopback-setup.c',
2440 'src/core/loopback-setup.h',
2441 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002442 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002443 dependencies : [libacl,
2444 libblkid,
2445 libseccomp,
2446 libselinux],
2447 install_rpath : rootlibexecdir,
2448 install : true)
2449public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002451if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 executable('systemd-networkd',
2453 systemd_networkd_sources,
2454 include_directories : includes,
2455 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002457 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002459 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002460 install_rpath : rootlibexecdir,
2461 install : true,
2462 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002464 executable('systemd-networkd-wait-online',
2465 systemd_networkd_wait_online_sources,
2466 include_directories : includes,
2467 link_with : [libnetworkd_core,
2468 libshared],
2469 install_rpath : rootlibexecdir,
2470 install : true,
2471 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002473 exe = executable('networkctl',
2474 networkctl_sources,
2475 include_directories : includes,
2476 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002477 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002478 install_rpath : rootlibexecdir,
2479 install : true,
2480 install_dir : rootbindir)
2481 public_programs += [exe]
2482endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002483
2484executable('systemd-sulogin-shell',
2485 ['src/sulogin-shell/sulogin-shell.c'],
2486 include_directories : includes,
2487 link_with : [libshared],
2488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootlibexecdir)
2491
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002492############################################################
2493
2494foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002495 sources = tuple[0]
2496 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2497 dependencies = tuple[2]
2498 condition = tuple.length() >= 4 ? tuple[3] : ''
2499 type = tuple.length() >= 5 ? tuple[4] : ''
2500 defs = tuple.length() >= 6 ? tuple[5] : []
2501 incs = tuple.length() >= 7 ? tuple[6] : includes
2502 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002503
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002504 name = sources[0].split('/')[-1].split('.')[0]
2505 if type.startswith('timeout=')
2506 timeout = type.split('=')[1].to_int()
2507 type = ''
2508 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002509 if want_tests == 'false'
2510 message('Not compiling @0@ because tests is set to false'.format(name))
2511 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002512 exe = executable(
2513 name,
2514 sources,
2515 include_directories : incs,
2516 link_with : link_with,
2517 dependencies : dependencies,
2518 c_args : defs,
2519 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002520 install : install_tests,
2521 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002522
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002523 if type == 'manual'
2524 message('@0@ is a manual test'.format(name))
2525 elif type == 'unsafe' and want_tests != 'unsafe'
2526 message('@0@ is an unsafe test'.format(name))
2527 else
2528 test(name, exe,
2529 env : test_env,
2530 timeout : timeout)
2531 endif
2532 else
2533 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2534 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002535endforeach
2536
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002537exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002538 'test-libsystemd-sym',
2539 test_libsystemd_sym_c,
2540 include_directories : includes,
2541 link_with : [libsystemd],
2542 install : install_tests,
2543 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002544test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002545
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002546exe = executable(
2547 'test-libsystemd-static-sym',
2548 test_libsystemd_sym_c,
2549 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002550 link_with : [install_libsystemd_static],
2551 dependencies : [threads], # threads is already included in dependencies on the library,
2552 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002553 build_by_default : static_libsystemd_pic,
2554 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002555 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002556if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002557 test('test-libsystemd-static-sym', exe)
2558endif
2559
2560exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561 'test-libudev-sym',
2562 test_libudev_sym_c,
2563 include_directories : includes,
2564 c_args : ['-Wno-deprecated-declarations'],
2565 link_with : [libudev],
2566 install : install_tests,
2567 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002568test('test-libudev-sym', exe)
2569
2570exe = executable(
2571 'test-libudev-static-sym',
2572 test_libudev_sym_c,
2573 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002574 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002575 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002576 build_by_default : static_libudev_pic,
2577 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002578 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002579if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002580 test('test-libudev-static-sym', exe)
2581endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002582
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002583############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002584
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002585fuzzer_exes = []
2586
2587foreach tuple : fuzzers
2588 sources = tuple[0]
2589 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2590 dependencies = tuple[2]
2591 defs = tuple.length() >= 4 ? tuple[3] : []
2592 incs = tuple.length() >= 5 ? tuple[4] : includes
2593
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002594 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002595 dependencies += fuzzing_engine
2596 else
2597 sources += 'src/fuzz/fuzz-main.c'
2598 endif
2599
2600 name = sources[0].split('/')[-1].split('.')[0]
2601
2602 fuzzer_exes += executable(
2603 name,
2604 sources,
2605 include_directories : [incs, include_directories('src/fuzz')],
2606 link_with : link_with,
2607 dependencies : dependencies,
2608 c_args : defs,
2609 install : false)
2610endforeach
2611
2612run_target('fuzzers',
2613 depends : fuzzer_exes,
2614 command : ['true'])
2615
2616############################################################
2617
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002618make_directive_index_py = find_program('tools/make-directive-index.py')
2619make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002620xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002621hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002622
2623subdir('units')
2624subdir('sysctl.d')
2625subdir('sysusers.d')
2626subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002627subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002628subdir('hwdb')
2629subdir('network')
2630subdir('man')
2631subdir('shell-completion/bash')
2632subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002633subdir('doc/sysvinit')
2634subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635
2636# FIXME: figure out if the warning is true:
2637# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2638install_subdir('factory/etc',
2639 install_dir : factorydir)
2640
2641
2642install_data('xorg/50-systemd-user.sh',
2643 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002644install_data('modprobe.d/systemd.conf',
2645 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002646install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002647 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002648 'NEWS',
2649 'README',
2650 'doc/CODING_STYLE',
2651 'doc/DISTRO_PORTING',
2652 'doc/ENVIRONMENT.md',
2653 'doc/HACKING',
2654 'doc/TRANSIENT-SETTINGS.md',
2655 'doc/TRANSLATORS',
2656 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002657 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2658 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002659
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002660meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2661meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2662
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002663############################################################
2664
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002665meson_check_help = find_program('tools/meson-check-help.sh')
2666
2667foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002668 name = exec.full_path().split('/')[-1]
2669 test('check-help-' + name,
2670 meson_check_help,
2671 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002672endforeach
2673
2674############################################################
2675
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002676# Enable tests for all supported sanitizers
2677foreach tuple : sanitizers
2678 sanitizer = tuple[0]
2679 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002680
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002681 have = run_command(check_compilation_sh,
2682 cc.cmd_array(), '-x', 'c',
2683 '-fsanitize=@0@'.format(sanitizer),
2684 '-include', link_test_c).returncode() == 0
2685 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002686
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002687 if have
2688 prev = ''
2689 foreach p : fuzz_regression_tests
2690 b = p.split('/')[-2]
2691 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002692
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002693 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002694
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002695 if name != prev
2696 if want_tests == 'false'
2697 message('Not compiling @0@ because tests is set to false'.format(name))
2698 elif slow_tests
2699 exe = custom_target(
2700 name,
2701 output : name,
2702 depends : build,
2703 command : [env, 'ln', '-fs',
2704 join_paths(build.full_path(), b),
2705 '@OUTPUT@'],
2706 build_by_default : true)
2707 else
2708 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2709 endif
2710 endif
2711 prev = name
2712
2713 if want_tests != 'false' and slow_tests
2714 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2715 env,
2716 args : [exe.full_path(),
2717 join_paths(meson.source_root(),
2718 'test/fuzz-regressions',
2719 p)])
2720 endif
2721 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002722 endif
2723endforeach
2724
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002725
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002726############################################################
2727
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002728if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002729 all_files = run_command(
2730 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002731 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002732 'ls-files',
2733 ':/*.[ch]'])
2734 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002735
userwithuide85a6902017-08-09 13:41:44 +00002736 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002737 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002738 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002739 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002740 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002741 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002742 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002743 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002744endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002745
2746if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002747 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002748 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002750 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002751endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002752
2753if git.found()
2754 git_head = 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', 'HEAD']).stdout().strip()
2758 git_head_short = run_command(
2759 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002760 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002761 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2762
2763 run_target(
2764 'git-snapshot',
2765 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002766 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002767 git_head_short),
2768 '--prefix', 'systemd-@0@/'.format(git_head),
2769 'HEAD'])
2770endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002771
2772############################################################
2773
Lennart Poettering51b13862017-12-20 12:51:14 +01002774meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2775run_target(
2776 'check-api-docs',
2777 depends : [man, libsystemd, libudev],
2778 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2779
2780############################################################
2781
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002782status = [
2783 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2784
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002785 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002786 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002787 'prefix directory: @0@'.format(prefixdir),
2788 'rootprefix directory: @0@'.format(rootprefixdir),
2789 'sysconf directory: @0@'.format(sysconfdir),
2790 'include directory: @0@'.format(includedir),
2791 'lib directory: @0@'.format(libdir),
2792 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002793 'SysV init scripts: @0@'.format(sysvinit_path),
2794 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002795 'PAM modules directory: @0@'.format(pamlibdir),
2796 'PAM configuration directory: @0@'.format(pamconfdir),
2797 'RPM macros directory: @0@'.format(rpmmacrosdir),
2798 'modprobe.d directory: @0@'.format(modprobedir),
2799 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2800 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2801 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2802 'bash completions directory: @0@'.format(bashcompletiondir),
2803 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002804 'extra start script: @0@'.format(get_option('rc-local')),
2805 'extra stop script: @0@'.format(get_option('halt-local')),
2806 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2807 get_option('debug-tty')),
2808 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002809 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002810 'maximum system UID: @0@'.format(system_uid_max),
2811 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002812 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2813 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2814 'minimum container UID base: @0@'.format(container_uid_base_min),
2815 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002816 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002817 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002818 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002819 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002820 'nobody user name: @0@'.format(nobody_user),
2821 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002822 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002823 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002824
2825 'default DNSSEC mode: @0@'.format(default_dnssec),
2826 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2827 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2828
2829alt_dns_servers = '\n '.join(dns_servers.split(' '))
2830alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2831status += [
2832 'default DNS servers: @0@'.format(alt_dns_servers),
2833 'default NTP servers: @0@'.format(alt_ntp_servers)]
2834
2835alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2836 '@@0@'.format(time_epoch)).stdout().strip()
2837status += [
2838 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2839
2840# TODO:
2841# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2842# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2843# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2844
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002845if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002846 status += [
2847 'efi arch: @0@'.format(efi_arch)]
2848
2849 if have_gnu_efi
2850 status += [
2851 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2852 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002853 'EFI lib directory: @0@'.format(efi_libdir),
2854 'EFI lds directory: @0@'.format(efi_ldsdir),
2855 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002856 endif
2857endif
2858
2859found = []
2860missing = []
2861
2862foreach tuple : [
2863 ['libcryptsetup'],
2864 ['PAM'],
2865 ['AUDIT'],
2866 ['IMA'],
2867 ['AppArmor'],
2868 ['SELinux'],
2869 ['SECCOMP'],
2870 ['SMACK'],
2871 ['zlib'],
2872 ['xz'],
2873 ['lz4'],
2874 ['bzip2'],
2875 ['ACL'],
2876 ['gcrypt'],
2877 ['qrencode'],
2878 ['microhttpd'],
2879 ['gnutls'],
2880 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002881 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002882 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002883 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002884 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002885 ['libiptc'],
2886 ['elfutils'],
2887 ['binfmt'],
2888 ['vconsole'],
2889 ['quotacheck'],
2890 ['tmpfiles'],
2891 ['environment.d'],
2892 ['sysusers'],
2893 ['firstboot'],
2894 ['randomseed'],
2895 ['backlight'],
2896 ['rfkill'],
2897 ['logind'],
2898 ['machined'],
2899 ['importd'],
2900 ['hostnamed'],
2901 ['timedated'],
2902 ['timesyncd'],
2903 ['localed'],
2904 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002905 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002906 ['coredump'],
2907 ['polkit'],
2908 ['legacy pkla', install_polkit_pkla],
2909 ['efi'],
2910 ['gnu-efi', have_gnu_efi],
2911 ['kmod'],
2912 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002913 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002914 ['blkid'],
2915 ['dbus'],
2916 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002917 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002918 ['hwdb'],
2919 ['tpm'],
2920 ['man pages', want_man],
2921 ['html pages', want_html],
2922 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002923 ['SysV compat'],
2924 ['utmp'],
2925 ['ldconfig'],
2926 ['hibernate'],
2927 ['adm group', get_option('adm-group')],
2928 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002929 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002930 ['debug hashmap'],
2931 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02002932 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002933]
2934
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002935 if tuple.length() >= 2
2936 cond = tuple[1]
2937 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002938 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2939 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002940 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002941 endif
2942 if cond
2943 found += [tuple[0]]
2944 else
2945 missing += [tuple[0]]
2946 endif
2947endforeach
2948
2949status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002950 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002951 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002952 '',
2953 'disabled features: @0@'.format(', '.join(missing)),
2954 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002955message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002956
2957if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09002958 warning('\n' +
2959 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2960 'systemd used fixed names for unit file directories and other paths, so anything\n' +
2961 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002962endif