blob: eca424b784b9c65610a130a82a269b275b69fd9b [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 ],
Zbigniew Jędrzejewski-Szmek86ea8d72017-11-20 08:08:43 +010014 meson_version : '>= 0.41',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040015 )
16
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010017libsystemd_version = '0.22.0'
18libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020019
Yu Watanabe348b4432018-05-07 18:17:35 +090020# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040021# Also, for hysterical reasons, we use different variable
22# names, sometimes. Not all variables are included in every
23# set. Ugh, ugh, ugh!
24conf = configuration_data()
25conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
26conf.set_quoted('PACKAGE_VERSION', meson.project_version())
27
28substs = configuration_data()
29substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
30substs.set('PACKAGE_VERSION', meson.project_version())
31
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040032#####################################################################
33
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040034# Try to install the git pre-commit hook
35git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
36if git_hook.returncode() == 0
37 message(git_hook.stdout().strip())
38endif
39
40#####################################################################
41
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010042if get_option('split-usr') == 'auto'
43 split_usr = run_command('test', '-L', '/bin').returncode() != 0
44else
45 split_usr = get_option('split-usr') == 'true'
46endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010047conf.set10('HAVE_SPLIT_USR', split_usr,
48 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010049
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010050if get_option('split-bin') == 'auto'
51 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
52else
53 split_bin = get_option('split-bin') == 'true'
54endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010055conf.set10('HAVE_SPLIT_BIN', split_bin,
56 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010057
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010058rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010059# Unusual rootprefixdir values are used by some distros
60# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010061rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010062if rootprefixdir == ''
63 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040065
66sysvinit_path = get_option('sysvinit-path')
67sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090068conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020069 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71# join_paths ignore the preceding arguments if an absolute component is
72# encountered, so this should canonicalize various paths when they are
73# absolute or relative.
74prefixdir = get_option('prefix')
75if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040076 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077endif
78bindir = join_paths(prefixdir, get_option('bindir'))
79libdir = join_paths(prefixdir, get_option('libdir'))
80sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
81includedir = join_paths(prefixdir, get_option('includedir'))
82datadir = join_paths(prefixdir, get_option('datadir'))
83localstatedir = join_paths('/', get_option('localstatedir'))
84
85rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010086rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
88
89rootlibdir = get_option('rootlibdir')
90if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040091 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092endif
93
94# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040095pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
96pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
97polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
98polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
99polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
100varlogdir = join_paths(localstatedir, 'log')
101xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900102rpmmacrosdir = get_option('rpmmacrosdir')
103if rpmmacrosdir != 'no'
104 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
105endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200106modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107
108# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400109pkgdatadir = join_paths(datadir, 'systemd')
110environmentdir = join_paths(prefixdir, 'lib/environment.d')
111pkgsysconfdir = join_paths(sysconfdir, 'systemd')
112userunitdir = join_paths(prefixdir, 'lib/systemd/user')
113userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
114tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
115sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
116sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
117binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
118modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
119networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
120pkgincludedir = join_paths(includedir, 'systemd')
121systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
122usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
123systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
124userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
125systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
126systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
127systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
128systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
129udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
130udevhomedir = udevlibexecdir
131udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
132udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
133catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
134kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
135factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400136bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
137testsdir = join_paths(prefixdir, 'lib/systemd/tests')
138systemdstatedir = join_paths(localstatedir, 'lib/systemd')
139catalogstatedir = join_paths(systemdstatedir, 'catalog')
140randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400141
tblume75aaade2018-02-01 22:46:15 +0100142docdir = get_option('docdir')
143if docdir == ''
144 docdir = join_paths(datadir, 'doc/systemd')
145endif
146
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400147dbuspolicydir = get_option('dbuspolicydir')
148if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400149 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150endif
151
152dbussessionservicedir = get_option('dbussessionservicedir')
153if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400154 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400155endif
156
157dbussystemservicedir = get_option('dbussystemservicedir')
158if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162pamlibdir = get_option('pamlibdir')
163if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167pamconfdir = get_option('pamconfdir')
168if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100172memory_accounting_default = get_option('memory-accounting-default')
173
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400175conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
177conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
178conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
180conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100181
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100182conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100183
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
186conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
188conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
189conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
190conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100191conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100192conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
194conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
195conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
196conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
197conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100198conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400199conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
201conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
203conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
204conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
205conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
206conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
207conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
209conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400211conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('LIBDIR', libdir)
213conf.set_quoted('ROOTLIBDIR', rootlibdir)
214conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
215conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
217conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
218conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
219conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
220conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
221conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100222conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100223conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224
225conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
226conf.set_quoted('ABS_SRC_DIR', meson.source_root())
227
228substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400229substs.set('exec_prefix', prefixdir)
230substs.set('libdir', libdir)
231substs.set('rootlibdir', rootlibdir)
232substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('bindir', bindir)
235substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('rootlibexecdir', rootlibexecdir)
237substs.set('systemunitdir', systemunitdir)
238substs.set('userunitdir', userunitdir)
239substs.set('systempresetdir', systempresetdir)
240substs.set('userpresetdir', userpresetdir)
241substs.set('udevhwdbdir', udevhwdbdir)
242substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Adam Duskett08318a22018-01-15 06:25:46 -0500273if get_option('tests') != 'false'
274 cxx = find_program('c++', required : false)
275 if cxx.found()
276 # Used only for tests
277 add_languages('cpp')
278 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400279endif
280
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500281want_ossfuzz = get_option('oss-fuzz')
282want_libfuzzer = get_option('llvm-fuzz')
283fuzzer_build = want_ossfuzz or want_libfuzzer
284if want_ossfuzz and want_libfuzzer
285 error('only one of oss-fuzz and llvm-fuzz can be specified')
286endif
287if want_libfuzzer
288 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
289endif
290if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500291 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
292endif
293
Zbigniew Jędrzejewski-Szmek75cf1d62017-07-04 17:59:15 -0400294foreach arg : ['-Wextra',
Zbigniew Jędrzejewski-Szmek70160ce2017-10-03 12:11:49 +0200295 '-Werror=undef',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400296 '-Wlogical-op',
297 '-Wmissing-include-dirs',
298 '-Wold-style-definition',
299 '-Wpointer-arith',
300 '-Winit-self',
301 '-Wdeclaration-after-statement',
302 '-Wfloat-equal',
303 '-Wsuggest-attribute=noreturn',
304 '-Werror=missing-prototypes',
305 '-Werror=implicit-function-declaration',
306 '-Werror=missing-declarations',
307 '-Werror=return-type',
308 '-Werror=incompatible-pointer-types',
309 '-Werror=format=2',
310 '-Wstrict-prototypes',
311 '-Wredundant-decls',
312 '-Wmissing-noreturn',
Zbigniew Jędrzejewski-Szmek97279d82017-11-20 14:23:40 +0100313 '-Wimplicit-fallthrough=5',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400314 '-Wshadow',
315 '-Wendif-labels',
316 '-Wstrict-aliasing=2',
317 '-Wwrite-strings',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400318 '-Werror=overflow',
319 '-Wdate-time',
320 '-Wnested-externs',
321 '-ffast-math',
322 '-fno-common',
323 '-fdiagnostics-show-option',
324 '-fno-strict-aliasing',
325 '-fvisibility=hidden',
326 '-fstack-protector',
327 '-fstack-protector-strong',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400328 '--param=ssp-buffer-size=4',
329 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400330 if cc.has_argument(arg)
331 add_project_arguments(arg, language : 'c')
332 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400333endforeach
334
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500335# the oss-fuzz fuzzers are not built with -fPIE, so don't
336# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500337if not fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500338 if cc.has_argument('-fPIE')
339 add_project_arguments('-fPIE', language : 'c')
340 endif
341endif
342
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400343# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
344# arguments, just emits a warnings. So test for the "positive" version instead.
345foreach arg : ['unused-parameter',
346 'missing-field-initializers',
347 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300348 'format-signedness',
349 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
350 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400351 if cc.has_argument('-W' + arg)
352 add_project_arguments('-Wno-' + arg, language : 'c')
353 endif
354endforeach
355
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800356if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400357 #include <time.h>
358 #include <inttypes.h>
359 typedef uint64_t usec_t;
360 usec_t now(clockid_t clock);
361 int main(void) {
362 struct timespec now;
363 return 0;
364 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800365''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400366 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400367endif
368
369if cc.get_id() == 'clang'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400370 foreach arg : ['-Wno-typedef-redefinition',
371 '-Wno-gnu-variable-sized-type-not-at-end',
372 ]
Yu Watanabe8ac42232018-04-26 17:53:10 +0900373 if cc.has_argument(arg)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400374 add_project_arguments(arg, language : 'c')
375 endif
376 endforeach
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400377endif
378
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400379link_test_c = files('tools/meson-link-test.c')
380
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381# --as-needed and --no-undefined are provided by meson by default,
382# run mesonconf to see what is enabled
383foreach arg : ['-Wl,-z,relro',
384 '-Wl,-z,now',
385 '-pie',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400386 ]
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400387
388 have = run_command(check_compilation_sh,
389 cc.cmd_array(), '-x', 'c', arg,
390 '-include', link_test_c).returncode() == 0
391 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500392 if have and (arg != '-pie' or not fuzzer_build)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400393 add_project_link_arguments(arg, language : 'c')
394 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400395endforeach
396
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400397if get_option('buildtype') != 'debug'
398 foreach arg : ['-ffunction-sections',
399 '-fdata-sections']
Yu Watanabeb0903bb2018-05-02 17:05:51 +0900400 if cc.has_argument(arg)
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400401 add_project_arguments(arg, language : 'c')
402 endif
403 endforeach
404
405 foreach arg : ['-Wl,--gc-sections']
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400406 have = run_command(check_compilation_sh,
407 cc.cmd_array(), '-x', 'c', arg,
408 '-include', link_test_c).returncode() == 0
409 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
410 if have
Zbigniew Jędrzejewski-Szmek41afb5e2017-04-24 19:28:04 -0400411 add_project_link_arguments(arg, language : 'c')
412 endif
413 endforeach
414endif
415
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400416cpp = ' '.join(cc.cmd_array()) + ' -E'
417
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400418#####################################################################
419# compilation result tests
420
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400421conf.set('_GNU_SOURCE', true)
422conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400423
424conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
425conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
426conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
427conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
428conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
429conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
430conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
431
432decl_headers = '''
433#include <uchar.h>
434#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000435#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100436#include <linux/stat.h>
437#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438'''
439# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
440
441foreach decl : ['char16_t',
442 'char32_t',
443 'key_serial_t',
444 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000445 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100446 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400447 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400448
449 # We get -1 if the size cannot be determined
450 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200451 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452endforeach
453
454foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
455 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
456 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
457 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530458 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400459 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
460 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
461 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
462 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
463 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530464 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 # if_tunnel.h is buggy and cannot be included on its own
466 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
467 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
468 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
469 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
470 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
471 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
472 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530473 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474 ['NDA_IFINDEX', 'linux/neighbour.h'],
475 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000476 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400477 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530478 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400479 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400480 prefix = decl.length() > 2 ? decl[2] : ''
481 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200482 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483endforeach
484
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400485foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200486 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487endforeach
488
489foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100491 ['gettid', '''#include <sys/types.h>
492 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100493 ['pivot_root', '''#include <stdlib.h>
494 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100495 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400496 #include <sys/stat.h>
497 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100498 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100499 ['renameat2', '''#include <stdio.h>
500 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400501 ['kcmp', '''#include <linux/kcmp.h>'''],
502 ['keyctl', '''#include <sys/types.h>
503 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400505 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200506 ['bpf', '''#include <sys/syscall.h>
507 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100508 ['statx', '''#include <sys/types.h>
509 #include <sys/stat.h>
510 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100511 ['explicit_bzero' , '''#include <string.h>'''],
512 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400513]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514
Lennart Poettering85db59b2017-12-25 12:01:14 +0100515 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200516 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517endforeach
518
Lennart Poettering85db59b2017-12-25 12:01:14 +0100519if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200520 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200521 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400522else
523 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200524 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200525 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400526endif
527
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400528#####################################################################
529
530sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400531awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400532m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400534git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100535env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100536perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400537
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400538meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400539mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400540test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
541splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400542
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400543# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
544# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500545progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400547 ['kmod', '/usr/bin/kmod' ],
548 ['kexec', '/usr/sbin/kexec' ],
549 ['sulogin', '/usr/sbin/sulogin' ],
550 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
551 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
552 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
553 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
554 ]
555foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400556 path = get_option(prog[0] + '-path')
557 if path != ''
558 message('Using @1@ for @0@'.format(prog[0], path))
559 else
560 exe = find_program(prog[0],
561 '/usr/sbin/' + prog[0],
562 '/sbin/' + prog[0],
563 required: false)
564 path = exe.found() ? exe.path() : prog[1]
565 endif
566 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
567 conf.set_quoted(name, path)
568 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400569endforeach
570
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500571conf.set_quoted('TELINIT', get_option('telinit-path'))
572
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400573if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100574 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400575endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576
577############################################################
578
579gperf = find_program('gperf')
580
581gperf_test_format = '''
582#include <string.h>
583const char * in_word_set(const char *, @0@);
584@1@
585'''
586gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
587gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
588gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
589if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400590 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
593 if cc.compiles(gperf_test)
594 gperf_len_type = 'unsigned'
595 else
596 error('unable to determine gperf len type')
597 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598endif
599message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400600conf.set('GPERF_LEN_TYPE', gperf_len_type,
601 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602
603############################################################
604
605if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400606 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100608foreach header : ['crypt.h',
609 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400610 'linux/memfd.h',
611 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200612 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400613 'valgrind/memcheck.h',
614 'valgrind/valgrind.h',
615 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400616
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200617 conf.set10('HAVE_' + header.underscorify().to_upper(),
618 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400619endforeach
620
621############################################################
622
623conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400624conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
625gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626
627default_hierarchy = get_option('default-hierarchy')
628conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
629 description : 'default cgroup hierarchy as string')
630if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400632elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400633 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400635 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400636endif
637
638time_epoch = get_option('time-epoch')
639if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400640 NEWS = files('NEWS')
641 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642endif
643time_epoch = time_epoch.to_int()
644conf.set('TIME_EPOCH', time_epoch)
645
646system_uid_max = get_option('system-uid-max')
647if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 system_uid_max = run_command(
649 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800650 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
651 '/etc/login.defs').stdout().strip()
652 if system_uid_max == ''
653 system_uid_max = '999'
654 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656system_uid_max = system_uid_max.to_int()
657conf.set('SYSTEM_UID_MAX', system_uid_max)
658substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400659message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400660
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661system_gid_max = get_option('system-gid-max')
662if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 system_gid_max = run_command(
664 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800665 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
666 '/etc/login.defs').stdout().strip()
667 if system_gid_max == ''
668 system_gid_max = '999'
669 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400670endif
671system_gid_max = system_gid_max.to_int()
672conf.set('SYSTEM_GID_MAX', system_gid_max)
673substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400674message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100676dynamic_uid_min = get_option('dynamic-uid-min').to_int()
677dynamic_uid_max = get_option('dynamic-uid-max').to_int()
678conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
679conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
680substs.set('dynamicuidmin', dynamic_uid_min)
681substs.set('dynamicuidmax', dynamic_uid_max)
682
683container_uid_base_min = get_option('container-uid-base-min').to_int()
684container_uid_base_max = get_option('container-uid-base-max').to_int()
685conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
686conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
687substs.set('containeruidbasemin', container_uid_base_min)
688substs.set('containeruidbasemax', container_uid_base_max)
689
Lennart Poetteringafde4572017-12-05 11:00:24 +0100690nobody_user = get_option('nobody-user')
691nobody_group = get_option('nobody-group')
692
693getent_result = run_command('getent', 'passwd', '65534')
694if getent_result.returncode() == 0
695 name = getent_result.stdout().split(':')[0]
696 if name != nobody_user
697 message('WARNING:\n' +
698 ' 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) +
699 ' Your build will result in an user table setup that is incompatible with the local system.')
700 endif
701endif
702id_result = run_command('id', '-u', nobody_user)
703if id_result.returncode() == 0
704 id = id_result.stdout().to_int()
705 if id != 65534
706 message('WARNING:\n' +
707 ' 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) +
708 ' Your build will result in an user table setup that is incompatible with the local system.')
709 endif
710endif
711
712getent_result = run_command('getent', 'group', '65534')
713if getent_result.returncode() == 0
714 name = getent_result.stdout().split(':')[0]
715 if name != nobody_group
716 message('WARNING:\n' +
717 ' 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) +
718 ' Your build will result in an group table setup that is incompatible with the local system.')
719 endif
720endif
721id_result = run_command('id', '-g', nobody_group)
722if id_result.returncode() == 0
723 id = id_result.stdout().to_int()
724 if id != 65534
725 message('WARNING:\n' +
726 ' 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) +
727 ' Your build will result in an group table setup that is incompatible with the local system.')
728 endif
729endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900730if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
731 message('WARNING:\n' +
732 ' The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
733 ' Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
734endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100735
736conf.set_quoted('NOBODY_USER_NAME', nobody_user)
737conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900738substs.set('NOBODY_USER_NAME', nobody_user)
739substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100740
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741tty_gid = get_option('tty-gid')
742conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400743substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
Ikey Doherty84786b82017-12-03 12:28:23 +0000745# Ensure provided GID argument is numeric, otherwise fallback to default assignment
746if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900747 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000748else
Yu Watanabed6806872017-12-05 14:01:39 +0900749 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000750endif
751substs.set('USERS_GID', users_gid)
752
Yu Watanabe348b4432018-05-07 18:17:35 +0900753conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
754conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400755
756substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700757substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400758
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400759kill_user_processes = get_option('default-kill-user-processes')
760conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100761conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400762substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400763
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400764dns_servers = get_option('dns-servers')
765conf.set_quoted('DNS_SERVERS', dns_servers)
766substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400767
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400768ntp_servers = get_option('ntp-servers')
769conf.set_quoted('NTP_SERVERS', ntp_servers)
770substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400771
772conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
773
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400774substs.set('SUSHELL', get_option('debug-shell'))
775substs.set('DEBUGTTY', get_option('debug-tty'))
776
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400777debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200778enable_debug_hashmap = false
779enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400780if debug != ''
781 foreach name : debug.split(',')
782 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200783 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400784 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200785 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400786 else
787 message('unknown debug option "@0@", ignoring'.format(name))
788 endif
789 endforeach
790endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200791conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
792conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794#####################################################################
795
796threads = dependency('threads')
797librt = cc.find_library('rt')
798libm = cc.find_library('m')
799libdl = cc.find_library('dl')
800libcrypt = cc.find_library('crypt')
801
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400802libcap = dependency('libcap', required : false)
803if not libcap.found()
804 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
805 libcap = cc.find_library('cap')
806endif
807
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100809 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
811want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500812if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400814 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400815 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500824if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libselinux = dependency('libselinux',
826 version : '>= 2.1.9',
827 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200828 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400831 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834
835want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500836if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400837 libapparmor = dependency('libapparmor',
838 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200839 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400840else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400843endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200844conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400845
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400846smack_run_label = get_option('smack-run-label')
847if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400848 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849endif
850
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851want_polkit = get_option('polkit')
852install_polkit = false
853install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500854if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400855 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400856
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libpolkit = dependency('polkit-gobject-1',
858 required : false)
859 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
860 message('Old polkit detected, will install pkla files')
861 install_polkit_pkla = true
862 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400863endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400865
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400866want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500867if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400868 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400870else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200871 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400872 libacl = []
873endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400875
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500877if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200881 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400885
886want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500887if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libkmod = dependency('libkmod',
899 version : '>= 15',
900 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libpam = cc.find_library('pam', required : want_pam == 'true')
911 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = libpam.found() and libpam_misc.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 libpam = []
916 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500921if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libmicrohttpd = dependency('libmicrohttpd',
923 version : '>= 0.9.33',
924 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931
932want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500933if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libcryptsetup = dependency('libcryptsetup',
935 version : '>= 1.6.0',
936 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943
944want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500945if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400946 libcurl = dependency('libcurl',
947 version : '>= 7.32.0',
948 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400950else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400952 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400953endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400955
956want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400957want_libidn2 = get_option('libidn2')
958if want_libidn == 'true' and want_libidn2 == 'true'
959 error('libidn and libidn2 cannot be requested simultaneously')
960endif
961
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500962if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libidn = dependency('libidn',
964 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400966else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400968 libidn = []
969endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500971if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400972 # libidn is used for both libidn and libidn2 objects
973 libidn = dependency('libidn2',
974 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = libidn.found()
976else
977 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500982if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libiptc = dependency('libiptc',
984 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200985 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400989endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200990conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400991
992want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500993if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libqrencode = dependency('libqrencode',
995 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200998 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400999 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001005 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1006 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001007 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
1010endif
1011if not have
1012 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001013 libgcrypt = []
1014 libgpg_error = []
1015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001017
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001019if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libgnutls = dependency('gnutls',
1021 version : '>= 3.1.4',
1022 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001026 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029
1030want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001031if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001032 libdw = dependency('libdw',
1033 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001034 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001037 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001040
1041want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001042if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001043 libz = dependency('zlib',
1044 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001048 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001049endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001051
1052want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001053if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001054 libbzip2 = cc.find_library('bz2',
1055 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001056 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001059 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001060endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001061conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001062
1063want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libxz = dependency('liblzma',
1066 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 liblz4 = dependency('liblz4',
1077 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001087 libxkbcommon = dependency('xkbcommon',
1088 version : '>= 0.3.0',
1089 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001090 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001092 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libxkbcommon = []
1094endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001097want_pcre2 = get_option('pcre2')
1098if want_pcre2 != 'false'
1099 libpcre2 = dependency('libpcre2-8',
1100 required : want_pcre2 == 'true')
1101 have = libpcre2.found()
1102else
1103 have = false
1104 libpcre2 = []
1105endif
1106conf.set10('HAVE_PCRE2', have)
1107
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001108want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001109if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001110 libglib = dependency('glib-2.0',
1111 version : '>= 2.22.0',
1112 required : want_glib == 'true')
1113 libgobject = dependency('gobject-2.0',
1114 version : '>= 2.22.0',
1115 required : want_glib == 'true')
1116 libgio = dependency('gio-2.0',
1117 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001118 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libglib = []
1122 libgobject = []
1123 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001126
1127want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001128if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001129 libdbus = dependency('dbus-1',
1130 version : '>= 1.3.2',
1131 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001138
Yu Watanabe42303dc2017-06-18 05:22:32 +09001139default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001140if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001141 default_dnssec = 'no'
1142endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001144 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1145 default_dnssec = 'no'
1146endif
1147conf.set('DEFAULT_DNSSEC_MODE',
1148 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1149substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1150
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001152if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = (conf.get('HAVE_LIBCURL') == 1 and
1154 conf.get('HAVE_ZLIB') == 1 and
1155 conf.get('HAVE_BZIP2') == 1 and
1156 conf.get('HAVE_XZ') == 1 and
1157 conf.get('HAVE_GCRYPT') == 1)
1158 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001159 error('importd support was requested, but dependencies are not available')
1160 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001161else
1162 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001164conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165
1166want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001167if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1169 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001170 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1171 # it's possible to build one without the other. Complain only if
1172 # support was explictly requested. The auxiliary files like sysusers
1173 # config should be installed when any of the programs are built.
1174 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1175 error('remote support was requested, but dependencies are not available')
1176 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = have_deps[0] or have_deps[1]
1178else
1179 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001182
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001183foreach term : ['utmp',
1184 'hibernate',
1185 'environment-d',
1186 'binfmt',
1187 'coredump',
1188 'resolve',
1189 'logind',
1190 'hostnamed',
1191 'localed',
1192 'machined',
1193 'networkd',
1194 'timedated',
1195 'timesyncd',
1196 'myhostname',
1197 'firstboot',
1198 'randomseed',
1199 'backlight',
1200 'vconsole',
1201 'quotacheck',
1202 'sysusers',
1203 'tmpfiles',
1204 'hwdb',
1205 'rfkill',
1206 'ldconfig',
1207 'efi',
1208 'tpm',
1209 'ima',
1210 'smack',
1211 'gshadow',
1212 'idn',
1213 'nss-systemd']
1214 have = get_option(term)
1215 name = 'ENABLE_' + term.underscorify().to_upper()
1216 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001217endforeach
1218
Yu Watanabe348b4432018-05-07 18:17:35 +09001219conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001220
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001222install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001223slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001224tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001225fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001227conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001228
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001229#####################################################################
1230
1231if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001233
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001234 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001236 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 elif efi_arch == 'x86_64'
1238 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001239 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001240 elif efi_arch == 'arm'
1241 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001242 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001243 elif efi_arch == 'aarch64'
1244 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001245 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001246 else
1247 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001248 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001253
1254 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255else
1256 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001257endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001258conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001259
1260#####################################################################
1261
1262config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001263 output : 'config.h',
1264 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001265
Yu Watanabe348b4432018-05-07 18:17:35 +09001266meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1267
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001268includes = include_directories('src/basic',
1269 'src/shared',
1270 'src/systemd',
1271 'src/journal',
1272 'src/resolve',
1273 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001274 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001275 'src/login',
1276 'src/udev',
1277 'src/libudev',
1278 'src/core',
1279 'src/libsystemd/sd-bus',
1280 'src/libsystemd/sd-device',
1281 'src/libsystemd/sd-hwdb',
1282 'src/libsystemd/sd-id128',
1283 'src/libsystemd/sd-netlink',
1284 'src/libsystemd/sd-network',
1285 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001286 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001287
1288add_project_arguments('-include', 'config.h', language : 'c')
1289
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290subdir('po')
1291subdir('catalog')
1292subdir('src/systemd')
1293subdir('src/basic')
1294subdir('src/libsystemd')
1295subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001297subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298
1299libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001300 'journal-core',
1301 libjournal_core_sources,
1302 journald_gperf_c,
1303 include_directories : includes,
1304 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001306libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001308 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001309 '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 +02001310 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001311 include_directories : includes,
1312 link_args : ['-shared',
1313 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001314 link_with : [libbasic,
1315 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001316 link_whole : [libsystemd_static,
1317 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001318 dependencies : [threads,
1319 librt,
1320 libxz,
1321 liblz4],
1322 link_depends : libsystemd_sym,
1323 install : true,
1324 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001325
1326############################################################
1327
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001328# binaries that have --help and are intended for use by humans,
1329# usually, but not always, installed in /bin.
1330public_programs = []
1331
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001332subdir('src/libudev')
1333subdir('src/shared')
1334subdir('src/core')
1335subdir('src/udev')
1336subdir('src/network')
1337
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001338subdir('src/analyze')
1339subdir('src/journal-remote')
1340subdir('src/coredump')
1341subdir('src/hostname')
1342subdir('src/import')
1343subdir('src/kernel-install')
1344subdir('src/locale')
1345subdir('src/machine')
1346subdir('src/nspawn')
1347subdir('src/resolve')
1348subdir('src/timedate')
1349subdir('src/timesync')
1350subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001351subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001352
1353subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001354subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001355subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001356subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001357
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001358############################################################
1359
1360# only static linking apart from libdl, to make sure that the
1361# module is linked to all libraries that it uses.
1362test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001363 'test-dlopen',
1364 test_dlopen_c,
1365 include_directories : includes,
1366 link_with : [libbasic],
1367 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001368
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001369foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001370 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001371 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001372 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001373
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001374 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001375 if condition
1376 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001377
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001378 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1379 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001380
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001381 nss = shared_library(
1382 'nss_' + module,
1383 'src/nss-@0@/nss-@0@.c'.format(module),
1384 version : '2',
1385 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001386 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1387 link_args : ['-Wl,-z,nodelete',
1388 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 '-Wl,--version-script=' + version_script_arg,
1390 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001391 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 libbasic],
1393 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001394 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 link_depends : sym,
1396 install : true,
1397 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 # We cannot use shared_module because it does not support version suffix.
1400 # Unfortunately shared_library insists on creating the symlink…
1401 meson.add_install_script('sh', '-c',
1402 'rm $DESTDIR@0@/libnss_@1@.so'
1403 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001404
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 test('dlopen-nss_' + module,
1406 test_dlopen,
1407 args : [nss.full_path()]) # path to dlopen must include a slash
1408 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001409endforeach
1410
1411############################################################
1412
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001413executable('systemd',
1414 systemd_sources,
1415 include_directories : includes,
1416 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001417 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001418 dependencies : [threads,
1419 librt,
1420 libseccomp,
1421 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001422 libmount,
1423 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001424 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001425 install : true,
1426 install_dir : rootlibexecdir)
1427
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001428meson.add_install_script(meson_make_symlink,
1429 join_paths(rootlibexecdir, 'systemd'),
1430 join_paths(rootsbindir, 'init'))
1431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001432exe = executable('systemd-analyze',
1433 systemd_analyze_sources,
1434 include_directories : includes,
1435 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001436 libshared],
1437 dependencies : [threads,
1438 librt,
1439 libseccomp,
1440 libselinux,
1441 libmount,
1442 libblkid],
1443 install_rpath : rootlibexecdir,
1444 install : true)
1445public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446
1447executable('systemd-journald',
1448 systemd_journald_sources,
1449 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001450 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001451 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452 dependencies : [threads,
1453 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001454 liblz4,
1455 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001456 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457 install : true,
1458 install_dir : rootlibexecdir)
1459
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001460exe = executable('systemd-cat',
1461 systemd_cat_sources,
1462 include_directories : includes,
1463 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001464 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001465 dependencies : [threads],
1466 install_rpath : rootlibexecdir,
1467 install : true)
1468public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001470exe = executable('journalctl',
1471 journalctl_sources,
1472 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001473 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001474 dependencies : [threads,
1475 libqrencode,
1476 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001477 liblz4,
1478 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001479 install_rpath : rootlibexecdir,
1480 install : true,
1481 install_dir : rootbindir)
1482public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483
1484executable('systemd-getty-generator',
1485 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001487 link_with : [libshared],
1488 install_rpath : rootlibexecdir,
1489 install : true,
1490 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001491
1492executable('systemd-debug-generator',
1493 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001495 link_with : [libshared],
1496 install_rpath : rootlibexecdir,
1497 install : true,
1498 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001499
1500executable('systemd-fstab-generator',
1501 'src/fstab-generator/fstab-generator.c',
1502 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001504 link_with : [libshared],
1505 install_rpath : rootlibexecdir,
1506 install : true,
1507 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001509if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001510 executable('30-systemd-environment-d-generator',
1511 'src/environment-d-generator/environment-d-generator.c',
1512 include_directories : includes,
1513 link_with : [libshared],
1514 install_rpath : rootlibexecdir,
1515 install : true,
1516 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001517
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001518 meson.add_install_script(meson_make_symlink,
1519 join_paths(sysconfdir, 'environment'),
1520 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521endif
1522
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001523if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001524 executable('systemd-hibernate-resume-generator',
1525 'src/hibernate-resume/hibernate-resume-generator.c',
1526 include_directories : includes,
1527 link_with : [libshared],
1528 install_rpath : rootlibexecdir,
1529 install : true,
1530 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001532 executable('systemd-hibernate-resume',
1533 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001534 include_directories : includes,
1535 link_with : [libshared],
1536 install_rpath : rootlibexecdir,
1537 install : true,
1538 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001539endif
1540
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001541if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 executable('systemd-gpt-auto-generator',
1543 'src/gpt-auto-generator/gpt-auto-generator.c',
1544 'src/basic/blkid-util.h',
1545 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001546 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 dependencies : libblkid,
1548 install_rpath : rootlibexecdir,
1549 install : true,
1550 install_dir : systemgeneratordir)
1551
1552 exe = executable('systemd-dissect',
1553 'src/dissect/dissect.c',
1554 include_directories : includes,
1555 link_with : [libshared],
1556 install_rpath : rootlibexecdir,
1557 install : true,
1558 install_dir : rootlibexecdir)
1559 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001560endif
1561
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001562if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001563 executable('systemd-resolved',
1564 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001565 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001566 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001567 libbasic_gcrypt,
1568 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001569 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001570 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001571 libm,
1572 libidn],
1573 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 install : true,
1575 install_dir : rootlibexecdir)
1576
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001577 exe = executable('resolvectl',
1578 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001580 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001581 libbasic_gcrypt,
1582 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001583 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001584 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 libm,
1586 libidn],
1587 install_rpath : rootlibexecdir,
1588 install : true)
1589 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001590
1591 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001592 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001593 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001594
1595 meson.add_install_script(meson_make_symlink,
1596 join_paths(bindir, 'resolvectl'),
1597 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001598endif
1599
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001600if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001601 executable('systemd-logind',
1602 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001603 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001605 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001606 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001607 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001608 install_rpath : rootlibexecdir,
1609 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001611
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 exe = executable('loginctl',
1613 loginctl_sources,
1614 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001615 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001616 dependencies : [threads,
1617 liblz4,
1618 libxz],
1619 install_rpath : rootlibexecdir,
1620 install : true,
1621 install_dir : rootbindir)
1622 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 exe = executable('systemd-inhibit',
1625 'src/login/inhibit.c',
1626 include_directories : includes,
1627 link_with : [libshared],
1628 install_rpath : rootlibexecdir,
1629 install : true,
1630 install_dir : rootbindir)
1631 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001632
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001633 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1635 pam_systemd = shared_library(
1636 'pam_systemd',
1637 pam_systemd_c,
1638 name_prefix : '',
1639 include_directories : includes,
1640 link_args : ['-shared',
1641 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001642 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001643 libshared_static],
1644 dependencies : [threads,
1645 libpam,
1646 libpam_misc],
1647 link_depends : pam_systemd_sym,
1648 install : true,
1649 install_dir : pamlibdir)
1650
1651 test('dlopen-pam_systemd',
1652 test_dlopen,
1653 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1654 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001655endif
1656
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001657executable('systemd-user-runtime-dir',
1658 user_runtime_dir_sources,
1659 include_directories : includes,
1660 link_with : [libshared, liblogind_core],
1661 install_rpath : rootlibexecdir,
1662 install : true,
1663 install_dir : rootlibexecdir)
1664
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001665if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-user-sessions',
1667 'src/user-sessions/user-sessions.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673endif
1674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 exe = executable('bootctl',
1677 'src/boot/bootctl.c',
1678 include_directories : includes,
1679 link_with : [libshared],
1680 dependencies : [libblkid],
1681 install_rpath : rootlibexecdir,
1682 install : true)
1683 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684endif
1685
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001686exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1687 include_directories : includes,
1688 link_with : [libshared],
1689 dependencies : [threads],
1690 install_rpath : rootlibexecdir,
1691 install : true)
1692public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001694exe = executable('systemctl', 'src/systemctl/systemctl.c',
1695 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001696 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001697 dependencies : [threads,
1698 libcap,
1699 libselinux,
1700 libxz,
1701 liblz4],
1702 install_rpath : rootlibexecdir,
1703 install : true,
1704 install_dir : rootbindir)
1705public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001707foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1708 meson.add_install_script(meson_make_symlink,
1709 join_paths(rootbindir, 'systemctl'),
1710 join_paths(rootsbindir, alias))
1711endforeach
1712
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001713if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001714 executable('systemd-backlight',
1715 'src/backlight/backlight.c',
1716 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001717 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 install_rpath : rootlibexecdir,
1719 install : true,
1720 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001721endif
1722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('systemd-rfkill',
1725 'src/rfkill/rfkill.c',
1726 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001727 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731endif
1732
1733executable('systemd-system-update-generator',
1734 'src/system-update-generator/system-update-generator.c',
1735 include_directories : includes,
1736 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001737 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001738 install : true,
1739 install_dir : systemgeneratordir)
1740
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001741if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 executable('systemd-cryptsetup',
1743 'src/cryptsetup/cryptsetup.c',
1744 include_directories : includes,
1745 link_with : [libshared],
1746 dependencies : [libcryptsetup],
1747 install_rpath : rootlibexecdir,
1748 install : true,
1749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 executable('systemd-cryptsetup-generator',
1752 'src/cryptsetup/cryptsetup-generator.c',
1753 include_directories : includes,
1754 link_with : [libshared],
1755 dependencies : [libcryptsetup],
1756 install_rpath : rootlibexecdir,
1757 install : true,
1758 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001760 executable('systemd-veritysetup',
1761 'src/veritysetup/veritysetup.c',
1762 include_directories : includes,
1763 link_with : [libshared],
1764 dependencies : [libcryptsetup],
1765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 executable('systemd-veritysetup-generator',
1770 'src/veritysetup/veritysetup-generator.c',
1771 include_directories : includes,
1772 link_with : [libshared],
1773 dependencies : [libcryptsetup],
1774 install_rpath : rootlibexecdir,
1775 install : true,
1776 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001777endif
1778
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001779if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 executable('systemd-sysv-generator',
1781 'src/sysv-generator/sysv-generator.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001787
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 executable('systemd-rc-local-generator',
1789 'src/rc-local-generator/rc-local-generator.c',
1790 include_directories : includes,
1791 link_with : [libshared],
1792 install_rpath : rootlibexecdir,
1793 install : true,
1794 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795endif
1796
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001797if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-hostnamed',
1799 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001801 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 install : true,
1804 install_dir : rootlibexecdir)
1805
1806 exe = executable('hostnamectl',
1807 'src/hostname/hostnamectl.c',
1808 include_directories : includes,
1809 link_with : [libshared],
1810 install_rpath : rootlibexecdir,
1811 install : true)
1812 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001813endif
1814
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001815if conf.get('ENABLE_LOCALED') == 1
1816 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 # logind will load libxkbcommon.so dynamically on its own
1818 deps = [libdl]
1819 else
1820 deps = []
1821 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001822
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 executable('systemd-localed',
1824 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001825 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001826 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001828 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829 install : true,
1830 install_dir : rootlibexecdir)
1831
1832 exe = executable('localectl',
1833 localectl_sources,
1834 include_directories : includes,
1835 link_with : [libshared],
1836 install_rpath : rootlibexecdir,
1837 install : true)
1838 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001839endif
1840
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001841if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 executable('systemd-timedated',
1843 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001844 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001845 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001846 install_rpath : rootlibexecdir,
1847 install : true,
1848 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001849endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001850
Yu Watanabe6129ec82018-05-03 18:07:43 +09001851if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 exe = executable('timedatectl',
1853 'src/timedate/timedatectl.c',
1854 include_directories : includes,
1855 install_rpath : rootlibexecdir,
1856 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001857 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001858 install : true)
1859 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001860endif
1861
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001862if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 executable('systemd-timesyncd',
1864 systemd_timesyncd_sources,
1865 include_directories : includes,
1866 link_with : [libshared],
1867 dependencies : [threads,
1868 libm],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001872
1873 executable('systemd-time-wait-sync',
1874 'src/time-wait-sync/time-wait-sync.c',
1875 include_directories : includes,
1876 link_with : [libshared],
1877 install_rpath : rootlibexecdir,
1878 install : true,
1879 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001880endif
1881
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001882if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 executable('systemd-machined',
1884 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001885 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001886 link_with : [libmachine_core,
1887 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001888 install_rpath : rootlibexecdir,
1889 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 install_dir : rootlibexecdir)
1891
1892 exe = executable('machinectl',
1893 'src/machine/machinectl.c',
1894 include_directories : includes,
1895 link_with : [libshared],
1896 dependencies : [threads,
1897 libxz,
1898 liblz4],
1899 install_rpath : rootlibexecdir,
1900 install : true,
1901 install_dir : rootbindir)
1902 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001903endif
1904
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001905if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001906 executable('systemd-importd',
1907 systemd_importd_sources,
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [threads],
1911 install_rpath : rootlibexecdir,
1912 install : true,
1913 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 systemd_pull = executable('systemd-pull',
1916 systemd_pull_sources,
1917 include_directories : includes,
1918 link_with : [libshared],
1919 dependencies : [libcurl,
1920 libz,
1921 libbzip2,
1922 libxz,
1923 libgcrypt],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001927
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001928 systemd_import = executable('systemd-import',
1929 systemd_import_sources,
1930 include_directories : includes,
1931 link_with : [libshared],
1932 dependencies : [libcurl,
1933 libz,
1934 libbzip2,
1935 libxz],
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_export = executable('systemd-export',
1941 systemd_export_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)
1951 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952endif
1953
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001954if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001955 exe = executable('systemd-journal-upload',
1956 systemd_journal_upload_sources,
1957 include_directories : includes,
1958 link_with : [libshared],
1959 dependencies : [threads,
1960 libcurl,
1961 libgnutls,
1962 libxz,
1963 liblz4],
1964 install_rpath : rootlibexecdir,
1965 install : true,
1966 install_dir : rootlibexecdir)
1967 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968endif
1969
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001970if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001971 s_j_remote = executable('systemd-journal-remote',
1972 systemd_journal_remote_sources,
1973 include_directories : includes,
1974 link_with : [libshared],
1975 dependencies : [threads,
1976 libmicrohttpd,
1977 libgnutls,
1978 libxz,
1979 liblz4],
1980 install_rpath : rootlibexecdir,
1981 install : true,
1982 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001983
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001984 s_j_gatewayd = executable('systemd-journal-gatewayd',
1985 systemd_journal_gatewayd_sources,
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [threads,
1989 libmicrohttpd,
1990 libgnutls,
1991 libxz,
1992 liblz4],
1993 install_rpath : rootlibexecdir,
1994 install : true,
1995 install_dir : rootlibexecdir)
1996 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001997endif
1998
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001999if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002000 executable('systemd-coredump',
2001 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002002 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002003 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002004 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 libacl,
2006 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002007 libxz,
2008 liblz4],
2009 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 install : true,
2011 install_dir : rootlibexecdir)
2012
2013 exe = executable('coredumpctl',
2014 coredumpctl_sources,
2015 include_directories : includes,
2016 link_with : [libshared],
2017 dependencies : [threads,
2018 libxz,
2019 liblz4],
2020 install_rpath : rootlibexecdir,
2021 install : true)
2022 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023endif
2024
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002025if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002026 exe = executable('systemd-binfmt',
2027 'src/binfmt/binfmt.c',
2028 include_directories : includes,
2029 link_with : [libshared],
2030 install_rpath : rootlibexecdir,
2031 install : true,
2032 install_dir : rootlibexecdir)
2033 public_programs += [exe]
2034
2035 meson.add_install_script('sh', '-c',
2036 mkdir_p.format(binfmtdir))
2037 meson.add_install_script('sh', '-c',
2038 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2039endif
2040
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002041if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-vconsole-setup',
2043 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002044 include_directories : includes,
2045 link_with : [libshared],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049endif
2050
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002051if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-random-seed',
2053 'src/random-seed/random-seed.c',
2054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true,
2058 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059endif
2060
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002061if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 executable('systemd-firstboot',
2063 'src/firstboot/firstboot.c',
2064 include_directories : includes,
2065 link_with : [libshared],
2066 dependencies : [libcrypt],
2067 install_rpath : rootlibexecdir,
2068 install : true,
2069 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070endif
2071
2072executable('systemd-remount-fs',
2073 'src/remount-fs/remount-fs.c',
2074 'src/core/mount-setup.c',
2075 'src/core/mount-setup.h',
2076 include_directories : includes,
2077 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002078 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002079 install : true,
2080 install_dir : rootlibexecdir)
2081
2082executable('systemd-machine-id-setup',
2083 'src/machine-id-setup/machine-id-setup-main.c',
2084 'src/core/machine-id-setup.c',
2085 'src/core/machine-id-setup.h',
2086 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002087 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002088 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089 install : true,
2090 install_dir : rootbindir)
2091
2092executable('systemd-fsck',
2093 'src/fsck/fsck.c',
2094 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002095 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002096 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097 install : true,
2098 install_dir : rootlibexecdir)
2099
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002100executable('systemd-growfs',
2101 'src/partition/growfs.c',
2102 include_directories : includes,
2103 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002104 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootlibexecdir)
2108
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002109executable('systemd-makefs',
2110 'src/partition/makefs.c',
2111 include_directories : includes,
2112 link_with : [libshared],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootlibexecdir)
2116
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117executable('systemd-sleep',
2118 'src/sleep/sleep.c',
2119 include_directories : includes,
2120 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002121 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002122 install : true,
2123 install_dir : rootlibexecdir)
2124
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002125exe = executable('systemd-sysctl',
2126 'src/sysctl/sysctl.c',
2127 include_directories : includes,
2128 link_with : [libshared],
2129 install_rpath : rootlibexecdir,
2130 install : true,
2131 install_dir : rootlibexecdir)
2132public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133
2134executable('systemd-ac-power',
2135 'src/ac-power/ac-power.c',
2136 include_directories : includes,
2137 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002138 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002139 install : true,
2140 install_dir : rootlibexecdir)
2141
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142exe = executable('systemd-detect-virt',
2143 'src/detect-virt/detect-virt.c',
2144 include_directories : includes,
2145 link_with : [libshared],
2146 install_rpath : rootlibexecdir,
2147 install : true)
2148public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150exe = executable('systemd-delta',
2151 'src/delta/delta.c',
2152 include_directories : includes,
2153 link_with : [libshared],
2154 install_rpath : rootlibexecdir,
2155 install : true)
2156public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002158exe = executable('systemd-escape',
2159 'src/escape/escape.c',
2160 include_directories : includes,
2161 link_with : [libshared],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootbindir)
2165public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002166
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167exe = executable('systemd-notify',
2168 'src/notify/notify.c',
2169 include_directories : includes,
2170 link_with : [libshared],
2171 install_rpath : rootlibexecdir,
2172 install : true,
2173 install_dir : rootbindir)
2174public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002175
2176executable('systemd-volatile-root',
2177 'src/volatile-root/volatile-root.c',
2178 include_directories : includes,
2179 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002180 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181 install : true,
2182 install_dir : rootlibexecdir)
2183
2184executable('systemd-cgroups-agent',
2185 'src/cgroups-agent/cgroups-agent.c',
2186 include_directories : includes,
2187 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002188 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189 install : true,
2190 install_dir : rootlibexecdir)
2191
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002192exe = executable('systemd-path',
2193 'src/path/path.c',
2194 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002195 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002196 install_rpath : rootlibexecdir,
2197 install : true)
2198public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002200exe = executable('systemd-ask-password',
2201 'src/ask-password/ask-password.c',
2202 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002203 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002204 install_rpath : rootlibexecdir,
2205 install : true,
2206 install_dir : rootbindir)
2207public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002208
2209executable('systemd-reply-password',
2210 'src/reply-password/reply-password.c',
2211 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002212 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002213 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002214 install : true,
2215 install_dir : rootlibexecdir)
2216
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002217exe = executable('systemd-tty-ask-password-agent',
2218 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2219 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002220 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002221 install_rpath : rootlibexecdir,
2222 install : true,
2223 install_dir : rootbindir)
2224public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002226exe = executable('systemd-cgls',
2227 'src/cgls/cgls.c',
2228 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002229 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230 install_rpath : rootlibexecdir,
2231 install : true)
2232public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234exe = executable('systemd-cgtop',
2235 'src/cgtop/cgtop.c',
2236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238 install_rpath : rootlibexecdir,
2239 install : true)
2240public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002241
2242executable('systemd-initctl',
2243 'src/initctl/initctl.c',
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002246 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247 install : true,
2248 install_dir : rootlibexecdir)
2249
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002250exe = executable('systemd-mount',
2251 'src/mount/mount-tool.c',
2252 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002253 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002254 install_rpath : rootlibexecdir,
2255 install : true)
2256public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002258meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002259 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002260
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261exe = executable('systemd-run',
2262 'src/run/run.c',
2263 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002264 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 install_rpath : rootlibexecdir,
2266 install : true)
2267public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269exe = executable('systemd-stdio-bridge',
2270 'src/stdio-bridge/stdio-bridge.c',
2271 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002272 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002273 install_rpath : rootlibexecdir,
2274 install : true)
2275public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002276
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002277exe = executable('busctl',
2278 'src/busctl/busctl.c',
2279 'src/busctl/busctl-introspect.c',
2280 'src/busctl/busctl-introspect.h',
2281 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 install_rpath : rootlibexecdir,
2284 install : true)
2285public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002287if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002288 exe = executable('systemd-sysusers',
2289 'src/sysusers/sysusers.c',
2290 include_directories : includes,
2291 link_with : [libshared],
2292 install_rpath : rootlibexecdir,
2293 install : true,
2294 install_dir : rootbindir)
2295 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296endif
2297
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002298if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299 exe = executable('systemd-tmpfiles',
2300 'src/tmpfiles/tmpfiles.c',
2301 include_directories : includes,
2302 link_with : [libshared],
2303 dependencies : [libacl],
2304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootbindir)
2307 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002308
2309 test('test-systemd-tmpfiles',
2310 test_systemd_tmpfiles_py,
2311 args : exe.full_path())
2312 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313endif
2314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002315if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 exe = executable('systemd-hwdb',
2317 'src/hwdb/hwdb.c',
2318 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2319 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002320 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002321 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002322 install : true,
2323 install_dir : rootbindir)
2324 public_programs += [exe]
2325endif
2326
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002327if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328 executable('systemd-quotacheck',
2329 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002330 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002331 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002332 install_rpath : rootlibexecdir,
2333 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002334 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335endif
2336
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002337exe = executable('systemd-socket-proxyd',
2338 'src/socket-proxy/socket-proxyd.c',
2339 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002340 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341 dependencies : [threads],
2342 install_rpath : rootlibexecdir,
2343 install : true,
2344 install_dir : rootlibexecdir)
2345public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347exe = executable('systemd-udevd',
2348 systemd_udevd_sources,
2349 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002350 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002353 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002354 dependencies : [threads,
2355 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002356 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002357 libacl,
2358 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002359 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002360 install : true,
2361 install_dir : rootlibexecdir)
2362public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002363
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002364exe = executable('udevadm',
2365 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002366 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 include_directories : includes,
2368 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002369 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002370 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002371 dependencies : [threads,
2372 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002373 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002374 libacl,
2375 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002376 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377 install : true,
2378 install_dir : rootbindir)
2379public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380
2381executable('systemd-shutdown',
2382 systemd_shutdown_sources,
2383 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002384 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002385 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002386 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387 install : true,
2388 install_dir : rootlibexecdir)
2389
2390executable('systemd-update-done',
2391 'src/update-done/update-done.c',
2392 include_directories : includes,
2393 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002394 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002395 install : true,
2396 install_dir : rootlibexecdir)
2397
2398executable('systemd-update-utmp',
2399 'src/update-utmp/update-utmp.c',
2400 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002402 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002403 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404 install : true,
2405 install_dir : rootlibexecdir)
2406
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002407if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002408 executable('systemd-modules-load',
2409 'src/modules-load/modules-load.c',
2410 include_directories : includes,
2411 link_with : [libshared],
2412 dependencies : [libkmod],
2413 install_rpath : rootlibexecdir,
2414 install : true,
2415 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002416
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002417 meson.add_install_script('sh', '-c',
2418 mkdir_p.format(modulesloaddir))
2419 meson.add_install_script('sh', '-c',
2420 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421endif
2422
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002423exe = executable('systemd-nspawn',
2424 systemd_nspawn_sources,
2425 'src/core/mount-setup.c', # FIXME: use a variable?
2426 'src/core/mount-setup.h',
2427 'src/core/loopback-setup.c',
2428 'src/core/loopback-setup.h',
2429 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002430 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431 dependencies : [libacl,
2432 libblkid,
2433 libseccomp,
2434 libselinux],
2435 install_rpath : rootlibexecdir,
2436 install : true)
2437public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002438
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002439if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002440 executable('systemd-networkd',
2441 systemd_networkd_sources,
2442 include_directories : includes,
2443 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002444 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002445 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002447 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002448 install_rpath : rootlibexecdir,
2449 install : true,
2450 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002451
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002452 executable('systemd-networkd-wait-online',
2453 systemd_networkd_wait_online_sources,
2454 include_directories : includes,
2455 link_with : [libnetworkd_core,
2456 libshared],
2457 install_rpath : rootlibexecdir,
2458 install : true,
2459 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002460
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002461 exe = executable('networkctl',
2462 networkctl_sources,
2463 include_directories : includes,
2464 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002465 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002466 install_rpath : rootlibexecdir,
2467 install : true,
2468 install_dir : rootbindir)
2469 public_programs += [exe]
2470endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002471
2472executable('systemd-sulogin-shell',
2473 ['src/sulogin-shell/sulogin-shell.c'],
2474 include_directories : includes,
2475 link_with : [libshared],
2476 install_rpath : rootlibexecdir,
2477 install : true,
2478 install_dir : rootlibexecdir)
2479
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002480############################################################
2481
2482foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002483 sources = tuple[0]
2484 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2485 dependencies = tuple[2]
2486 condition = tuple.length() >= 4 ? tuple[3] : ''
2487 type = tuple.length() >= 5 ? tuple[4] : ''
2488 defs = tuple.length() >= 6 ? tuple[5] : []
2489 incs = tuple.length() >= 7 ? tuple[6] : includes
2490 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002491
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002492 name = sources[0].split('/')[-1].split('.')[0]
2493 if type.startswith('timeout=')
2494 timeout = type.split('=')[1].to_int()
2495 type = ''
2496 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002497 if want_tests == 'false'
2498 message('Not compiling @0@ because tests is set to false'.format(name))
2499 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002500 exe = executable(
2501 name,
2502 sources,
2503 include_directories : incs,
2504 link_with : link_with,
2505 dependencies : dependencies,
2506 c_args : defs,
2507 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002508 install : install_tests,
2509 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002510
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511 if type == 'manual'
2512 message('@0@ is a manual test'.format(name))
2513 elif type == 'unsafe' and want_tests != 'unsafe'
2514 message('@0@ is an unsafe test'.format(name))
2515 else
2516 test(name, exe,
2517 env : test_env,
2518 timeout : timeout)
2519 endif
2520 else
2521 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2522 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002523endforeach
2524
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002525test_libsystemd_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002526 'test-libsystemd-sym',
2527 test_libsystemd_sym_c,
2528 include_directories : includes,
2529 link_with : [libsystemd],
2530 install : install_tests,
2531 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002532test('test-libsystemd-sym',
2533 test_libsystemd_sym)
2534
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002535test_libudev_sym = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002536 'test-libudev-sym',
2537 test_libudev_sym_c,
2538 include_directories : includes,
2539 c_args : ['-Wno-deprecated-declarations'],
2540 link_with : [libudev],
2541 install : install_tests,
2542 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002543test('test-libudev-sym',
2544 test_libudev_sym)
2545
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002546############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002548fuzzer_exes = []
2549
2550foreach tuple : fuzzers
2551 sources = tuple[0]
2552 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2553 dependencies = tuple[2]
2554 defs = tuple.length() >= 4 ? tuple[3] : []
2555 incs = tuple.length() >= 5 ? tuple[4] : includes
2556
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002557 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002558 dependencies += fuzzing_engine
2559 else
2560 sources += 'src/fuzz/fuzz-main.c'
2561 endif
2562
2563 name = sources[0].split('/')[-1].split('.')[0]
2564
2565 fuzzer_exes += executable(
2566 name,
2567 sources,
2568 include_directories : [incs, include_directories('src/fuzz')],
2569 link_with : link_with,
2570 dependencies : dependencies,
2571 c_args : defs,
2572 install : false)
2573endforeach
2574
2575run_target('fuzzers',
2576 depends : fuzzer_exes,
2577 command : ['true'])
2578
2579############################################################
2580
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581make_directive_index_py = find_program('tools/make-directive-index.py')
2582make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002583xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002584hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585
2586subdir('units')
2587subdir('sysctl.d')
2588subdir('sysusers.d')
2589subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002590subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002591subdir('hwdb')
2592subdir('network')
2593subdir('man')
2594subdir('shell-completion/bash')
2595subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002596subdir('doc/sysvinit')
2597subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002598
2599# FIXME: figure out if the warning is true:
2600# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2601install_subdir('factory/etc',
2602 install_dir : factorydir)
2603
2604
2605install_data('xorg/50-systemd-user.sh',
2606 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002607install_data('modprobe.d/systemd.conf',
2608 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002609install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002611 'NEWS',
2612 'README',
2613 'doc/CODING_STYLE',
2614 'doc/DISTRO_PORTING',
2615 'doc/ENVIRONMENT.md',
2616 'doc/HACKING',
2617 'doc/TRANSIENT-SETTINGS.md',
2618 'doc/TRANSLATORS',
2619 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002620 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2621 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002622
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002623meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2624meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2625
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002626############################################################
2627
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002628meson_check_help = find_program('tools/meson-check-help.sh')
2629
2630foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002631 name = exec.full_path().split('/')[-1]
2632 test('check-help-' + name,
2633 meson_check_help,
2634 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635endforeach
2636
2637############################################################
2638
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002639# Enable tests for all supported sanitizers
2640foreach tuple : sanitizers
2641 sanitizer = tuple[0]
2642 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002643
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002644 have = run_command(check_compilation_sh,
2645 cc.cmd_array(), '-x', 'c',
2646 '-fsanitize=@0@'.format(sanitizer),
2647 '-include', link_test_c).returncode() == 0
2648 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002649
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002650 if have
2651 prev = ''
2652 foreach p : fuzz_regression_tests
2653 b = p.split('/')[-2]
2654 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002655
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002656 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002657
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002658 if name != prev
2659 if want_tests == 'false'
2660 message('Not compiling @0@ because tests is set to false'.format(name))
2661 elif slow_tests
2662 exe = custom_target(
2663 name,
2664 output : name,
2665 depends : build,
2666 command : [env, 'ln', '-fs',
2667 join_paths(build.full_path(), b),
2668 '@OUTPUT@'],
2669 build_by_default : true)
2670 else
2671 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2672 endif
2673 endif
2674 prev = name
2675
2676 if want_tests != 'false' and slow_tests
2677 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2678 env,
2679 args : [exe.full_path(),
2680 join_paths(meson.source_root(),
2681 'test/fuzz-regressions',
2682 p)])
2683 endif
2684 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002685 endif
2686endforeach
2687
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002688
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002689############################################################
2690
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002691if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 all_files = run_command(
2693 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002694 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002695 'ls-files',
2696 ':/*.[ch]'])
2697 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002698
userwithuide85a6902017-08-09 13:41:44 +00002699 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002700 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002701 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002702 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002703 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002704 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002705 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002706 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002707endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002708
2709if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002710 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002711 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002712 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002714endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002715
2716if git.found()
2717 git_head = run_command(
2718 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002719 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002720 'rev-parse', 'HEAD']).stdout().strip()
2721 git_head_short = run_command(
2722 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002723 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002724 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2725
2726 run_target(
2727 'git-snapshot',
2728 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002729 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002730 git_head_short),
2731 '--prefix', 'systemd-@0@/'.format(git_head),
2732 'HEAD'])
2733endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002734
2735############################################################
2736
Lennart Poettering51b13862017-12-20 12:51:14 +01002737meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2738run_target(
2739 'check-api-docs',
2740 depends : [man, libsystemd, libudev],
2741 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2742
2743############################################################
2744
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002745status = [
2746 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2747
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002748 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002749 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002750 'prefix directory: @0@'.format(prefixdir),
2751 'rootprefix directory: @0@'.format(rootprefixdir),
2752 'sysconf directory: @0@'.format(sysconfdir),
2753 'include directory: @0@'.format(includedir),
2754 'lib directory: @0@'.format(libdir),
2755 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002756 'SysV init scripts: @0@'.format(sysvinit_path),
2757 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002758 'PAM modules directory: @0@'.format(pamlibdir),
2759 'PAM configuration directory: @0@'.format(pamconfdir),
2760 'RPM macros directory: @0@'.format(rpmmacrosdir),
2761 'modprobe.d directory: @0@'.format(modprobedir),
2762 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2763 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2764 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2765 'bash completions directory: @0@'.format(bashcompletiondir),
2766 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002767 'extra start script: @0@'.format(get_option('rc-local')),
2768 'extra stop script: @0@'.format(get_option('halt-local')),
2769 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2770 get_option('debug-tty')),
2771 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002772 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002773 'maximum system UID: @0@'.format(system_uid_max),
2774 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002775 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2776 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2777 'minimum container UID base: @0@'.format(container_uid_base_min),
2778 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002779 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002780 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002781 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002782 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002783 'nobody user name: @0@'.format(nobody_user),
2784 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002785 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002786 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002787
2788 'default DNSSEC mode: @0@'.format(default_dnssec),
2789 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2790 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2791
2792alt_dns_servers = '\n '.join(dns_servers.split(' '))
2793alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2794status += [
2795 'default DNS servers: @0@'.format(alt_dns_servers),
2796 'default NTP servers: @0@'.format(alt_ntp_servers)]
2797
2798alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2799 '@@0@'.format(time_epoch)).stdout().strip()
2800status += [
2801 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2802
2803# TODO:
2804# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2805# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2806# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002808if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002809 status += [
2810 'efi arch: @0@'.format(efi_arch)]
2811
2812 if have_gnu_efi
2813 status += [
2814 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2815 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002816 'EFI lib directory: @0@'.format(efi_libdir),
2817 'EFI lds directory: @0@'.format(efi_ldsdir),
2818 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002819 endif
2820endif
2821
2822found = []
2823missing = []
2824
2825foreach tuple : [
2826 ['libcryptsetup'],
2827 ['PAM'],
2828 ['AUDIT'],
2829 ['IMA'],
2830 ['AppArmor'],
2831 ['SELinux'],
2832 ['SECCOMP'],
2833 ['SMACK'],
2834 ['zlib'],
2835 ['xz'],
2836 ['lz4'],
2837 ['bzip2'],
2838 ['ACL'],
2839 ['gcrypt'],
2840 ['qrencode'],
2841 ['microhttpd'],
2842 ['gnutls'],
2843 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002844 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002845 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002846 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002847 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002848 ['libiptc'],
2849 ['elfutils'],
2850 ['binfmt'],
2851 ['vconsole'],
2852 ['quotacheck'],
2853 ['tmpfiles'],
2854 ['environment.d'],
2855 ['sysusers'],
2856 ['firstboot'],
2857 ['randomseed'],
2858 ['backlight'],
2859 ['rfkill'],
2860 ['logind'],
2861 ['machined'],
2862 ['importd'],
2863 ['hostnamed'],
2864 ['timedated'],
2865 ['timesyncd'],
2866 ['localed'],
2867 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002868 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002869 ['coredump'],
2870 ['polkit'],
2871 ['legacy pkla', install_polkit_pkla],
2872 ['efi'],
2873 ['gnu-efi', have_gnu_efi],
2874 ['kmod'],
2875 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002876 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002877 ['blkid'],
2878 ['dbus'],
2879 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002880 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002881 ['hwdb'],
2882 ['tpm'],
2883 ['man pages', want_man],
2884 ['html pages', want_html],
2885 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002886 ['SysV compat'],
2887 ['utmp'],
2888 ['ldconfig'],
2889 ['hibernate'],
2890 ['adm group', get_option('adm-group')],
2891 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002892 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002893 ['debug hashmap'],
2894 ['debug mmap cache'],
2895]
2896
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002897 if tuple.length() >= 2
2898 cond = tuple[1]
2899 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002900 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2901 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002902 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002903 endif
2904 if cond
2905 found += [tuple[0]]
2906 else
2907 missing += [tuple[0]]
2908 endif
2909endforeach
2910
2911status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002912 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002913 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002914 '',
2915 'disabled features: @0@'.format(', '.join(missing)),
2916 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002917message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002918
2919if rootprefixdir != rootprefix_default
2920 message('WARNING:\n' +
2921 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2922 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2923 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2924endif