blob: dbe841ba19e22023739134357740a1f4f7f60663 [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
Davide Cavalca70848ec2018-04-09 02:43:35 -07001326static_libsystemd = get_option('static-libsystemd')
1327static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1328
1329install_libsystemd_static = static_library(
1330 'systemd',
1331 libsystemd_sources,
1332 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001333 basic_sources,
1334 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001335 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001336 build_by_default : static_libsystemd != 'false',
1337 install : static_libsystemd != 'false',
1338 install_dir : rootlibdir,
1339 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1340 dependencies : [threads,
1341 librt,
1342 libxz,
1343 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001344 libcap,
1345 libblkid,
1346 libmount,
1347 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001348 libgcrypt],
1349 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1350
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001351############################################################
1352
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001353# binaries that have --help and are intended for use by humans,
1354# usually, but not always, installed in /bin.
1355public_programs = []
1356
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357subdir('src/libudev')
1358subdir('src/shared')
1359subdir('src/core')
1360subdir('src/udev')
1361subdir('src/network')
1362
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001363subdir('src/analyze')
1364subdir('src/journal-remote')
1365subdir('src/coredump')
1366subdir('src/hostname')
1367subdir('src/import')
1368subdir('src/kernel-install')
1369subdir('src/locale')
1370subdir('src/machine')
1371subdir('src/nspawn')
1372subdir('src/resolve')
1373subdir('src/timedate')
1374subdir('src/timesync')
1375subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001376subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001377
1378subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001379subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001380subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001381subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001382
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001383############################################################
1384
1385# only static linking apart from libdl, to make sure that the
1386# module is linked to all libraries that it uses.
1387test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 'test-dlopen',
1389 test_dlopen_c,
1390 include_directories : includes,
1391 link_with : [libbasic],
1392 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001393
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001394foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001395 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001396 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001397 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001398
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001399 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 if condition
1401 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001402
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1404 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001405
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 nss = shared_library(
1407 'nss_' + module,
1408 'src/nss-@0@/nss-@0@.c'.format(module),
1409 version : '2',
1410 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001411 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1412 link_args : ['-Wl,-z,nodelete',
1413 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001414 '-Wl,--version-script=' + version_script_arg,
1415 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001416 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001417 libbasic],
1418 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001419 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001420 link_depends : sym,
1421 install : true,
1422 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001423
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001424 # We cannot use shared_module because it does not support version suffix.
1425 # Unfortunately shared_library insists on creating the symlink…
1426 meson.add_install_script('sh', '-c',
1427 'rm $DESTDIR@0@/libnss_@1@.so'
1428 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001429
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001430 test('dlopen-nss_' + module,
1431 test_dlopen,
1432 args : [nss.full_path()]) # path to dlopen must include a slash
1433 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001434endforeach
1435
1436############################################################
1437
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001438executable('systemd',
1439 systemd_sources,
1440 include_directories : includes,
1441 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001442 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443 dependencies : [threads,
1444 librt,
1445 libseccomp,
1446 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001447 libmount,
1448 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001449 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450 install : true,
1451 install_dir : rootlibexecdir)
1452
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001453meson.add_install_script(meson_make_symlink,
1454 join_paths(rootlibexecdir, 'systemd'),
1455 join_paths(rootsbindir, 'init'))
1456
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001457exe = executable('systemd-analyze',
1458 systemd_analyze_sources,
1459 include_directories : includes,
1460 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001461 libshared],
1462 dependencies : [threads,
1463 librt,
1464 libseccomp,
1465 libselinux,
1466 libmount,
1467 libblkid],
1468 install_rpath : rootlibexecdir,
1469 install : true)
1470public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001471
1472executable('systemd-journald',
1473 systemd_journald_sources,
1474 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001475 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001476 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001477 dependencies : [threads,
1478 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001479 liblz4,
1480 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001481 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482 install : true,
1483 install_dir : rootlibexecdir)
1484
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001485exe = executable('systemd-cat',
1486 systemd_cat_sources,
1487 include_directories : includes,
1488 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001489 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001490 dependencies : [threads],
1491 install_rpath : rootlibexecdir,
1492 install : true)
1493public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001495exe = executable('journalctl',
1496 journalctl_sources,
1497 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001498 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001499 dependencies : [threads,
1500 libqrencode,
1501 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001502 liblz4,
1503 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001504 install_rpath : rootlibexecdir,
1505 install : true,
1506 install_dir : rootbindir)
1507public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508
1509executable('systemd-getty-generator',
1510 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001512 link_with : [libshared],
1513 install_rpath : rootlibexecdir,
1514 install : true,
1515 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
1517executable('systemd-debug-generator',
1518 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001520 link_with : [libshared],
1521 install_rpath : rootlibexecdir,
1522 install : true,
1523 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001524
1525executable('systemd-fstab-generator',
1526 'src/fstab-generator/fstab-generator.c',
1527 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001528 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001529 link_with : [libshared],
1530 install_rpath : rootlibexecdir,
1531 install : true,
1532 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001533
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001534if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 executable('30-systemd-environment-d-generator',
1536 'src/environment-d-generator/environment-d-generator.c',
1537 include_directories : includes,
1538 link_with : [libshared],
1539 install_rpath : rootlibexecdir,
1540 install : true,
1541 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001542
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 meson.add_install_script(meson_make_symlink,
1544 join_paths(sysconfdir, 'environment'),
1545 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001546endif
1547
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001548if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 executable('systemd-hibernate-resume-generator',
1550 'src/hibernate-resume/hibernate-resume-generator.c',
1551 include_directories : includes,
1552 link_with : [libshared],
1553 install_rpath : rootlibexecdir,
1554 install : true,
1555 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001556
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 executable('systemd-hibernate-resume',
1558 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001559 include_directories : includes,
1560 link_with : [libshared],
1561 install_rpath : rootlibexecdir,
1562 install : true,
1563 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564endif
1565
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001566if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001567 executable('systemd-gpt-auto-generator',
1568 'src/gpt-auto-generator/gpt-auto-generator.c',
1569 'src/basic/blkid-util.h',
1570 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001571 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 dependencies : libblkid,
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : systemgeneratordir)
1576
1577 exe = executable('systemd-dissect',
1578 'src/dissect/dissect.c',
1579 include_directories : includes,
1580 link_with : [libshared],
1581 install_rpath : rootlibexecdir,
1582 install : true,
1583 install_dir : rootlibexecdir)
1584 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001585endif
1586
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001587if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001588 executable('systemd-resolved',
1589 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001590 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001591 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001592 libbasic_gcrypt,
1593 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001595 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001596 libm,
1597 libidn],
1598 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 install : true,
1600 install_dir : rootlibexecdir)
1601
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001602 exe = executable('resolvectl',
1603 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001604 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001605 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001606 libbasic_gcrypt,
1607 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001608 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001609 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001610 libm,
1611 libidn],
1612 install_rpath : rootlibexecdir,
1613 install : true)
1614 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001615
1616 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001617 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001618 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001619
1620 meson.add_install_script(meson_make_symlink,
1621 join_paths(bindir, 'resolvectl'),
1622 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001623endif
1624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001625if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 executable('systemd-logind',
1627 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001630 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001631 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001632 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001633 install_rpath : rootlibexecdir,
1634 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 exe = executable('loginctl',
1638 loginctl_sources,
1639 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001640 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 dependencies : [threads,
1642 liblz4,
1643 libxz],
1644 install_rpath : rootlibexecdir,
1645 install : true,
1646 install_dir : rootbindir)
1647 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001649 exe = executable('systemd-inhibit',
1650 'src/login/inhibit.c',
1651 include_directories : includes,
1652 link_with : [libshared],
1653 install_rpath : rootlibexecdir,
1654 install : true,
1655 install_dir : rootbindir)
1656 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001657
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001658 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001659 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1660 pam_systemd = shared_library(
1661 'pam_systemd',
1662 pam_systemd_c,
1663 name_prefix : '',
1664 include_directories : includes,
1665 link_args : ['-shared',
1666 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001667 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001668 libshared_static],
1669 dependencies : [threads,
1670 libpam,
1671 libpam_misc],
1672 link_depends : pam_systemd_sym,
1673 install : true,
1674 install_dir : pamlibdir)
1675
1676 test('dlopen-pam_systemd',
1677 test_dlopen,
1678 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1679 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001680endif
1681
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001682executable('systemd-user-runtime-dir',
1683 user_runtime_dir_sources,
1684 include_directories : includes,
1685 link_with : [libshared, liblogind_core],
1686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : rootlibexecdir)
1689
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001690if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001691 executable('systemd-user-sessions',
1692 'src/user-sessions/user-sessions.c',
1693 include_directories : includes,
1694 link_with : [libshared],
1695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698endif
1699
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001700if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001701 exe = executable('bootctl',
1702 'src/boot/bootctl.c',
1703 include_directories : includes,
1704 link_with : [libshared],
1705 dependencies : [libblkid],
1706 install_rpath : rootlibexecdir,
1707 install : true)
1708 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001709endif
1710
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001711exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1712 include_directories : includes,
1713 link_with : [libshared],
1714 dependencies : [threads],
1715 install_rpath : rootlibexecdir,
1716 install : true)
1717public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001718
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001719exe = executable('systemctl', 'src/systemctl/systemctl.c',
1720 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001721 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001722 dependencies : [threads,
1723 libcap,
1724 libselinux,
1725 libxz,
1726 liblz4],
1727 install_rpath : rootlibexecdir,
1728 install : true,
1729 install_dir : rootbindir)
1730public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001732foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1733 meson.add_install_script(meson_make_symlink,
1734 join_paths(rootbindir, 'systemctl'),
1735 join_paths(rootsbindir, alias))
1736endforeach
1737
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001738if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 executable('systemd-backlight',
1740 'src/backlight/backlight.c',
1741 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001742 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 install_rpath : rootlibexecdir,
1744 install : true,
1745 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001746endif
1747
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001748if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 executable('systemd-rfkill',
1750 'src/rfkill/rfkill.c',
1751 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001752 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 install_rpath : rootlibexecdir,
1754 install : true,
1755 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756endif
1757
1758executable('systemd-system-update-generator',
1759 'src/system-update-generator/system-update-generator.c',
1760 include_directories : includes,
1761 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001762 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001763 install : true,
1764 install_dir : systemgeneratordir)
1765
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001766if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001767 executable('systemd-cryptsetup',
1768 'src/cryptsetup/cryptsetup.c',
1769 include_directories : includes,
1770 link_with : [libshared],
1771 dependencies : [libcryptsetup],
1772 install_rpath : rootlibexecdir,
1773 install : true,
1774 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001776 executable('systemd-cryptsetup-generator',
1777 'src/cryptsetup/cryptsetup-generator.c',
1778 include_directories : includes,
1779 link_with : [libshared],
1780 dependencies : [libcryptsetup],
1781 install_rpath : rootlibexecdir,
1782 install : true,
1783 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001784
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001785 executable('systemd-veritysetup',
1786 'src/veritysetup/veritysetup.c',
1787 include_directories : includes,
1788 link_with : [libshared],
1789 dependencies : [libcryptsetup],
1790 install_rpath : rootlibexecdir,
1791 install : true,
1792 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001794 executable('systemd-veritysetup-generator',
1795 'src/veritysetup/veritysetup-generator.c',
1796 include_directories : includes,
1797 link_with : [libshared],
1798 dependencies : [libcryptsetup],
1799 install_rpath : rootlibexecdir,
1800 install : true,
1801 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802endif
1803
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001804if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-sysv-generator',
1806 'src/sysv-generator/sysv-generator.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001812
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 executable('systemd-rc-local-generator',
1814 'src/rc-local-generator/rc-local-generator.c',
1815 include_directories : includes,
1816 link_with : [libshared],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820endif
1821
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001822if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 executable('systemd-hostnamed',
1824 'src/hostname/hostnamed.c',
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-Szmek005a29f2017-04-13 11:52:05 -04001827 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 install : true,
1829 install_dir : rootlibexecdir)
1830
1831 exe = executable('hostnamectl',
1832 'src/hostname/hostnamectl.c',
1833 include_directories : includes,
1834 link_with : [libshared],
1835 install_rpath : rootlibexecdir,
1836 install : true)
1837 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001838endif
1839
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001840if conf.get('ENABLE_LOCALED') == 1
1841 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842 # logind will load libxkbcommon.so dynamically on its own
1843 deps = [libdl]
1844 else
1845 deps = []
1846 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001847
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001848 executable('systemd-localed',
1849 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001850 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001851 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001853 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 install : true,
1855 install_dir : rootlibexecdir)
1856
1857 exe = executable('localectl',
1858 localectl_sources,
1859 include_directories : includes,
1860 link_with : [libshared],
1861 install_rpath : rootlibexecdir,
1862 install : true)
1863 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001864endif
1865
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001866if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001867 executable('systemd-timedated',
1868 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001869 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001870 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 install_rpath : rootlibexecdir,
1872 install : true,
1873 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001874endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875
Yu Watanabe6129ec82018-05-03 18:07:43 +09001876if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001877 exe = executable('timedatectl',
1878 'src/timedate/timedatectl.c',
1879 include_directories : includes,
1880 install_rpath : rootlibexecdir,
1881 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001882 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 install : true)
1884 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001885endif
1886
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001887if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 executable('systemd-timesyncd',
1889 systemd_timesyncd_sources,
1890 include_directories : includes,
1891 link_with : [libshared],
1892 dependencies : [threads,
1893 libm],
1894 install_rpath : rootlibexecdir,
1895 install : true,
1896 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001897
1898 executable('systemd-time-wait-sync',
1899 'src/time-wait-sync/time-wait-sync.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 install_rpath : rootlibexecdir,
1903 install : true,
1904 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001905endif
1906
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001907if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001908 executable('systemd-machined',
1909 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001910 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001911 link_with : [libmachine_core,
1912 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001913 install_rpath : rootlibexecdir,
1914 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001915 install_dir : rootlibexecdir)
1916
1917 exe = executable('machinectl',
1918 'src/machine/machinectl.c',
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [threads,
1922 libxz,
1923 liblz4],
1924 install_rpath : rootlibexecdir,
1925 install : true,
1926 install_dir : rootbindir)
1927 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001928endif
1929
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001930if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001931 executable('systemd-importd',
1932 systemd_importd_sources,
1933 include_directories : includes,
1934 link_with : [libshared],
1935 dependencies : [threads],
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_pull = executable('systemd-pull',
1941 systemd_pull_sources,
1942 include_directories : includes,
1943 link_with : [libshared],
1944 dependencies : [libcurl,
1945 libz,
1946 libbzip2,
1947 libxz,
1948 libgcrypt],
1949 install_rpath : rootlibexecdir,
1950 install : true,
1951 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001952
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001953 systemd_import = executable('systemd-import',
1954 systemd_import_sources,
1955 include_directories : includes,
1956 link_with : [libshared],
1957 dependencies : [libcurl,
1958 libz,
1959 libbzip2,
1960 libxz],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001964
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 systemd_export = executable('systemd-export',
1966 systemd_export_sources,
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [libcurl,
1970 libz,
1971 libbzip2,
1972 libxz],
1973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : rootlibexecdir)
1976 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001977endif
1978
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001979if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001980 exe = executable('systemd-journal-upload',
1981 systemd_journal_upload_sources,
1982 include_directories : includes,
1983 link_with : [libshared],
1984 dependencies : [threads,
1985 libcurl,
1986 libgnutls,
1987 libxz,
1988 liblz4],
1989 install_rpath : rootlibexecdir,
1990 install : true,
1991 install_dir : rootlibexecdir)
1992 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993endif
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 s_j_remote = executable('systemd-journal-remote',
1997 systemd_journal_remote_sources,
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [threads,
2001 libmicrohttpd,
2002 libgnutls,
2003 libxz,
2004 liblz4],
2005 install_rpath : rootlibexecdir,
2006 install : true,
2007 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002009 s_j_gatewayd = executable('systemd-journal-gatewayd',
2010 systemd_journal_gatewayd_sources,
2011 include_directories : includes,
2012 link_with : [libshared],
2013 dependencies : [threads,
2014 libmicrohttpd,
2015 libgnutls,
2016 libxz,
2017 liblz4],
2018 install_rpath : rootlibexecdir,
2019 install : true,
2020 install_dir : rootlibexecdir)
2021 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022endif
2023
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002024if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 executable('systemd-coredump',
2026 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002027 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002028 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002029 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002030 libacl,
2031 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002032 libxz,
2033 liblz4],
2034 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035 install : true,
2036 install_dir : rootlibexecdir)
2037
2038 exe = executable('coredumpctl',
2039 coredumpctl_sources,
2040 include_directories : includes,
2041 link_with : [libshared],
2042 dependencies : [threads,
2043 libxz,
2044 liblz4],
2045 install_rpath : rootlibexecdir,
2046 install : true)
2047 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002048endif
2049
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002050if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002051 exe = executable('systemd-binfmt',
2052 'src/binfmt/binfmt.c',
2053 include_directories : includes,
2054 link_with : [libshared],
2055 install_rpath : rootlibexecdir,
2056 install : true,
2057 install_dir : rootlibexecdir)
2058 public_programs += [exe]
2059
2060 meson.add_install_script('sh', '-c',
2061 mkdir_p.format(binfmtdir))
2062 meson.add_install_script('sh', '-c',
2063 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2064endif
2065
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002066if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002067 executable('systemd-vconsole-setup',
2068 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002069 include_directories : includes,
2070 link_with : [libshared],
2071 install_rpath : rootlibexecdir,
2072 install : true,
2073 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002074endif
2075
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002076if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 executable('systemd-random-seed',
2078 'src/random-seed/random-seed.c',
2079 include_directories : includes,
2080 link_with : [libshared],
2081 install_rpath : rootlibexecdir,
2082 install : true,
2083 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002084endif
2085
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002086if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002087 executable('systemd-firstboot',
2088 'src/firstboot/firstboot.c',
2089 include_directories : includes,
2090 link_with : [libshared],
2091 dependencies : [libcrypt],
2092 install_rpath : rootlibexecdir,
2093 install : true,
2094 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002095endif
2096
2097executable('systemd-remount-fs',
2098 'src/remount-fs/remount-fs.c',
2099 'src/core/mount-setup.c',
2100 'src/core/mount-setup.h',
2101 include_directories : includes,
2102 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002103 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002104 install : true,
2105 install_dir : rootlibexecdir)
2106
2107executable('systemd-machine-id-setup',
2108 'src/machine-id-setup/machine-id-setup-main.c',
2109 'src/core/machine-id-setup.c',
2110 'src/core/machine-id-setup.h',
2111 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002112 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002113 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114 install : true,
2115 install_dir : rootbindir)
2116
2117executable('systemd-fsck',
2118 'src/fsck/fsck.c',
2119 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002120 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-Szmek80750ad2017-10-23 13:40:38 +02002125executable('systemd-growfs',
2126 'src/partition/growfs.c',
2127 include_directories : includes,
2128 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002129 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002130 install_rpath : rootlibexecdir,
2131 install : true,
2132 install_dir : rootlibexecdir)
2133
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002134executable('systemd-makefs',
2135 'src/partition/makefs.c',
2136 include_directories : includes,
2137 link_with : [libshared],
2138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootlibexecdir)
2141
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002142executable('systemd-sleep',
2143 'src/sleep/sleep.c',
2144 include_directories : includes,
2145 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002146 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002147 install : true,
2148 install_dir : rootlibexecdir)
2149
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002150exe = executable('systemd-sysctl',
2151 'src/sysctl/sysctl.c',
2152 include_directories : includes,
2153 link_with : [libshared],
2154 install_rpath : rootlibexecdir,
2155 install : true,
2156 install_dir : rootlibexecdir)
2157public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158
2159executable('systemd-ac-power',
2160 'src/ac-power/ac-power.c',
2161 include_directories : includes,
2162 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002163 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002164 install : true,
2165 install_dir : rootlibexecdir)
2166
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002167exe = executable('systemd-detect-virt',
2168 'src/detect-virt/detect-virt.c',
2169 include_directories : includes,
2170 link_with : [libshared],
2171 install_rpath : rootlibexecdir,
2172 install : true)
2173public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002174
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002175exe = executable('systemd-delta',
2176 'src/delta/delta.c',
2177 include_directories : includes,
2178 link_with : [libshared],
2179 install_rpath : rootlibexecdir,
2180 install : true)
2181public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002183exe = executable('systemd-escape',
2184 'src/escape/escape.c',
2185 include_directories : includes,
2186 link_with : [libshared],
2187 install_rpath : rootlibexecdir,
2188 install : true,
2189 install_dir : rootbindir)
2190public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002192exe = executable('systemd-notify',
2193 'src/notify/notify.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : rootbindir)
2199public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200
2201executable('systemd-volatile-root',
2202 'src/volatile-root/volatile-root.c',
2203 include_directories : includes,
2204 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002205 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002206 install : true,
2207 install_dir : rootlibexecdir)
2208
2209executable('systemd-cgroups-agent',
2210 'src/cgroups-agent/cgroups-agent.c',
2211 include_directories : includes,
2212 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-path',
2218 'src/path/path.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)
2223public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002225exe = executable('systemd-ask-password',
2226 'src/ask-password/ask-password.c',
2227 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002228 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootbindir)
2232public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002233
2234executable('systemd-reply-password',
2235 'src/reply-password/reply-password.c',
2236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002237 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002238 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002239 install : true,
2240 install_dir : rootlibexecdir)
2241
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242exe = executable('systemd-tty-ask-password-agent',
2243 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2244 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002245 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002246 install_rpath : rootlibexecdir,
2247 install : true,
2248 install_dir : rootbindir)
2249public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002250
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002251exe = executable('systemd-cgls',
2252 'src/cgls/cgls.c',
2253 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002254 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255 install_rpath : rootlibexecdir,
2256 install : true)
2257public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259exe = executable('systemd-cgtop',
2260 'src/cgtop/cgtop.c',
2261 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002262 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 install_rpath : rootlibexecdir,
2264 install : true)
2265public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002266
2267executable('systemd-initctl',
2268 'src/initctl/initctl.c',
2269 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002270 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002271 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002272 install : true,
2273 install_dir : rootlibexecdir)
2274
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275exe = executable('systemd-mount',
2276 'src/mount/mount-tool.c',
2277 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002278 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279 install_rpath : rootlibexecdir,
2280 install : true)
2281public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002282
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002283meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002284 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002285
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002286exe = executable('systemd-run',
2287 'src/run/run.c',
2288 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002289 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002290 install_rpath : rootlibexecdir,
2291 install : true)
2292public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002293
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294exe = executable('systemd-stdio-bridge',
2295 'src/stdio-bridge/stdio-bridge.c',
2296 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002297 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002298 install_rpath : rootlibexecdir,
2299 install : true)
2300public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002302exe = executable('busctl',
2303 'src/busctl/busctl.c',
2304 'src/busctl/busctl-introspect.c',
2305 'src/busctl/busctl-introspect.h',
2306 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002307 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 install_rpath : rootlibexecdir,
2309 install : true)
2310public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002311
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002312if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 exe = executable('systemd-sysusers',
2314 'src/sysusers/sysusers.c',
2315 include_directories : includes,
2316 link_with : [libshared],
2317 install_rpath : rootlibexecdir,
2318 install : true,
2319 install_dir : rootbindir)
2320 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321endif
2322
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002323if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002324 exe = executable('systemd-tmpfiles',
2325 'src/tmpfiles/tmpfiles.c',
2326 include_directories : includes,
2327 link_with : [libshared],
2328 dependencies : [libacl],
2329 install_rpath : rootlibexecdir,
2330 install : true,
2331 install_dir : rootbindir)
2332 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002333
2334 test('test-systemd-tmpfiles',
2335 test_systemd_tmpfiles_py,
2336 args : exe.full_path())
2337 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338endif
2339
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002340if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002341 exe = executable('systemd-hwdb',
2342 'src/hwdb/hwdb.c',
2343 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2344 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002345 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002346 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002347 install : true,
2348 install_dir : rootbindir)
2349 public_programs += [exe]
2350endif
2351
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002352if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002353 executable('systemd-quotacheck',
2354 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002355 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357 install_rpath : rootlibexecdir,
2358 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002359 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002360endif
2361
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362exe = executable('systemd-socket-proxyd',
2363 'src/socket-proxy/socket-proxyd.c',
2364 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002365 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366 dependencies : [threads],
2367 install_rpath : rootlibexecdir,
2368 install : true,
2369 install_dir : rootlibexecdir)
2370public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002371
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002372exe = executable('systemd-udevd',
2373 systemd_udevd_sources,
2374 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002375 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002376 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002378 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002379 dependencies : [threads,
2380 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002381 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002382 libacl,
2383 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002384 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385 install : true,
2386 install_dir : rootlibexecdir)
2387public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389exe = executable('udevadm',
2390 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002391 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002392 include_directories : includes,
2393 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002395 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002396 dependencies : [threads,
2397 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002399 libacl,
2400 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002401 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402 install : true,
2403 install_dir : rootbindir)
2404public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405
2406executable('systemd-shutdown',
2407 systemd_shutdown_sources,
2408 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002409 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002410 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002411 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412 install : true,
2413 install_dir : rootlibexecdir)
2414
2415executable('systemd-update-done',
2416 'src/update-done/update-done.c',
2417 include_directories : includes,
2418 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002419 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420 install : true,
2421 install_dir : rootlibexecdir)
2422
2423executable('systemd-update-utmp',
2424 'src/update-utmp/update-utmp.c',
2425 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002426 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002428 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429 install : true,
2430 install_dir : rootlibexecdir)
2431
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002432if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002433 executable('systemd-modules-load',
2434 'src/modules-load/modules-load.c',
2435 include_directories : includes,
2436 link_with : [libshared],
2437 dependencies : [libkmod],
2438 install_rpath : rootlibexecdir,
2439 install : true,
2440 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002441
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002442 meson.add_install_script('sh', '-c',
2443 mkdir_p.format(modulesloaddir))
2444 meson.add_install_script('sh', '-c',
2445 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446endif
2447
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002448exe = executable('systemd-nspawn',
2449 systemd_nspawn_sources,
2450 'src/core/mount-setup.c', # FIXME: use a variable?
2451 'src/core/mount-setup.h',
2452 'src/core/loopback-setup.c',
2453 'src/core/loopback-setup.h',
2454 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002455 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002456 dependencies : [libacl,
2457 libblkid,
2458 libseccomp,
2459 libselinux],
2460 install_rpath : rootlibexecdir,
2461 install : true)
2462public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002463
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002464if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002465 executable('systemd-networkd',
2466 systemd_networkd_sources,
2467 include_directories : includes,
2468 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002469 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002470 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002471 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002472 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002473 install_rpath : rootlibexecdir,
2474 install : true,
2475 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002476
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002477 executable('systemd-networkd-wait-online',
2478 systemd_networkd_wait_online_sources,
2479 include_directories : includes,
2480 link_with : [libnetworkd_core,
2481 libshared],
2482 install_rpath : rootlibexecdir,
2483 install : true,
2484 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002486 exe = executable('networkctl',
2487 networkctl_sources,
2488 include_directories : includes,
2489 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002490 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002491 install_rpath : rootlibexecdir,
2492 install : true,
2493 install_dir : rootbindir)
2494 public_programs += [exe]
2495endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002496
2497executable('systemd-sulogin-shell',
2498 ['src/sulogin-shell/sulogin-shell.c'],
2499 include_directories : includes,
2500 link_with : [libshared],
2501 install_rpath : rootlibexecdir,
2502 install : true,
2503 install_dir : rootlibexecdir)
2504
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002505############################################################
2506
2507foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002508 sources = tuple[0]
2509 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2510 dependencies = tuple[2]
2511 condition = tuple.length() >= 4 ? tuple[3] : ''
2512 type = tuple.length() >= 5 ? tuple[4] : ''
2513 defs = tuple.length() >= 6 ? tuple[5] : []
2514 incs = tuple.length() >= 7 ? tuple[6] : includes
2515 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002516
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002517 name = sources[0].split('/')[-1].split('.')[0]
2518 if type.startswith('timeout=')
2519 timeout = type.split('=')[1].to_int()
2520 type = ''
2521 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002522 if want_tests == 'false'
2523 message('Not compiling @0@ because tests is set to false'.format(name))
2524 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 exe = executable(
2526 name,
2527 sources,
2528 include_directories : incs,
2529 link_with : link_with,
2530 dependencies : dependencies,
2531 c_args : defs,
2532 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002533 install : install_tests,
2534 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002535
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002536 if type == 'manual'
2537 message('@0@ is a manual test'.format(name))
2538 elif type == 'unsafe' and want_tests != 'unsafe'
2539 message('@0@ is an unsafe test'.format(name))
2540 else
2541 test(name, exe,
2542 env : test_env,
2543 timeout : timeout)
2544 endif
2545 else
2546 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2547 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002548endforeach
2549
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002550exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002551 'test-libsystemd-sym',
2552 test_libsystemd_sym_c,
2553 include_directories : includes,
2554 link_with : [libsystemd],
2555 install : install_tests,
2556 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002557test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002558
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002559exe = executable(
2560 'test-libsystemd-static-sym',
2561 test_libsystemd_sym_c,
2562 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002563 link_with : [install_libsystemd_static],
2564 dependencies : [threads], # threads is already included in dependencies on the library,
2565 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002566 build_by_default : static_libsystemd_pic,
2567 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002568 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002569if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002570 test('test-libsystemd-static-sym', exe)
2571endif
2572
2573exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002574 'test-libudev-sym',
2575 test_libudev_sym_c,
2576 include_directories : includes,
2577 c_args : ['-Wno-deprecated-declarations'],
2578 link_with : [libudev],
2579 install : install_tests,
2580 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002581test('test-libudev-sym', exe)
2582
2583exe = executable(
2584 'test-libudev-static-sym',
2585 test_libudev_sym_c,
2586 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002587 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002588 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002589 build_by_default : static_libudev_pic,
2590 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002591 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002592if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002593 test('test-libudev-static-sym', exe)
2594endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002595
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002596############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002598fuzzer_exes = []
2599
2600foreach tuple : fuzzers
2601 sources = tuple[0]
2602 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2603 dependencies = tuple[2]
2604 defs = tuple.length() >= 4 ? tuple[3] : []
2605 incs = tuple.length() >= 5 ? tuple[4] : includes
2606
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002607 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002608 dependencies += fuzzing_engine
2609 else
2610 sources += 'src/fuzz/fuzz-main.c'
2611 endif
2612
2613 name = sources[0].split('/')[-1].split('.')[0]
2614
2615 fuzzer_exes += executable(
2616 name,
2617 sources,
2618 include_directories : [incs, include_directories('src/fuzz')],
2619 link_with : link_with,
2620 dependencies : dependencies,
2621 c_args : defs,
2622 install : false)
2623endforeach
2624
2625run_target('fuzzers',
2626 depends : fuzzer_exes,
2627 command : ['true'])
2628
2629############################################################
2630
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631make_directive_index_py = find_program('tools/make-directive-index.py')
2632make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002633xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002634hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002635
2636subdir('units')
2637subdir('sysctl.d')
2638subdir('sysusers.d')
2639subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002640subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641subdir('hwdb')
2642subdir('network')
2643subdir('man')
2644subdir('shell-completion/bash')
2645subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002646subdir('doc/sysvinit')
2647subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002648
2649# FIXME: figure out if the warning is true:
2650# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2651install_subdir('factory/etc',
2652 install_dir : factorydir)
2653
2654
2655install_data('xorg/50-systemd-user.sh',
2656 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002657install_data('modprobe.d/systemd.conf',
2658 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002659install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002660 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002661 'NEWS',
2662 'README',
2663 'doc/CODING_STYLE',
2664 'doc/DISTRO_PORTING',
2665 'doc/ENVIRONMENT.md',
2666 'doc/HACKING',
2667 'doc/TRANSIENT-SETTINGS.md',
2668 'doc/TRANSLATORS',
2669 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002670 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2671 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002672
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002673meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2674meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2675
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002676############################################################
2677
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002678meson_check_help = find_program('tools/meson-check-help.sh')
2679
2680foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002681 name = exec.full_path().split('/')[-1]
2682 test('check-help-' + name,
2683 meson_check_help,
2684 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002685endforeach
2686
2687############################################################
2688
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002689# Enable tests for all supported sanitizers
2690foreach tuple : sanitizers
2691 sanitizer = tuple[0]
2692 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002693
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002694 have = run_command(check_compilation_sh,
2695 cc.cmd_array(), '-x', 'c',
2696 '-fsanitize=@0@'.format(sanitizer),
2697 '-include', link_test_c).returncode() == 0
2698 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002699
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002700 if have
2701 prev = ''
2702 foreach p : fuzz_regression_tests
2703 b = p.split('/')[-2]
2704 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002705
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002706 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002707
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002708 if name != prev
2709 if want_tests == 'false'
2710 message('Not compiling @0@ because tests is set to false'.format(name))
2711 elif slow_tests
2712 exe = custom_target(
2713 name,
2714 output : name,
2715 depends : build,
2716 command : [env, 'ln', '-fs',
2717 join_paths(build.full_path(), b),
2718 '@OUTPUT@'],
2719 build_by_default : true)
2720 else
2721 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2722 endif
2723 endif
2724 prev = name
2725
2726 if want_tests != 'false' and slow_tests
2727 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2728 env,
2729 args : [exe.full_path(),
2730 join_paths(meson.source_root(),
2731 'test/fuzz-regressions',
2732 p)])
2733 endif
2734 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002735 endif
2736endforeach
2737
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002738
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002739############################################################
2740
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002741if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002742 all_files = run_command(
2743 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002744 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 'ls-files',
2746 ':/*.[ch]'])
2747 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002748
userwithuide85a6902017-08-09 13:41:44 +00002749 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002750 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002751 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002752 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002753 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002754 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002755 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002756 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002757endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002758
2759if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002760 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002761 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002762 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002763 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002764endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002765
2766if git.found()
2767 git_head = run_command(
2768 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002769 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002770 'rev-parse', 'HEAD']).stdout().strip()
2771 git_head_short = run_command(
2772 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002773 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002774 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2775
2776 run_target(
2777 'git-snapshot',
2778 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002779 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002780 git_head_short),
2781 '--prefix', 'systemd-@0@/'.format(git_head),
2782 'HEAD'])
2783endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002784
2785############################################################
2786
Lennart Poettering51b13862017-12-20 12:51:14 +01002787meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2788run_target(
2789 'check-api-docs',
2790 depends : [man, libsystemd, libudev],
2791 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2792
2793############################################################
2794
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002795status = [
2796 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2797
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002798 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002799 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002800 'prefix directory: @0@'.format(prefixdir),
2801 'rootprefix directory: @0@'.format(rootprefixdir),
2802 'sysconf directory: @0@'.format(sysconfdir),
2803 'include directory: @0@'.format(includedir),
2804 'lib directory: @0@'.format(libdir),
2805 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002806 'SysV init scripts: @0@'.format(sysvinit_path),
2807 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002808 'PAM modules directory: @0@'.format(pamlibdir),
2809 'PAM configuration directory: @0@'.format(pamconfdir),
2810 'RPM macros directory: @0@'.format(rpmmacrosdir),
2811 'modprobe.d directory: @0@'.format(modprobedir),
2812 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2813 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2814 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2815 'bash completions directory: @0@'.format(bashcompletiondir),
2816 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002817 'extra start script: @0@'.format(get_option('rc-local')),
2818 'extra stop script: @0@'.format(get_option('halt-local')),
2819 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2820 get_option('debug-tty')),
2821 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002822 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002823 'maximum system UID: @0@'.format(system_uid_max),
2824 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002825 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2826 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2827 'minimum container UID base: @0@'.format(container_uid_base_min),
2828 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002829 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002830 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002831 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002832 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002833 'nobody user name: @0@'.format(nobody_user),
2834 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002835 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002836 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002837
2838 'default DNSSEC mode: @0@'.format(default_dnssec),
2839 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2840 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2841
2842alt_dns_servers = '\n '.join(dns_servers.split(' '))
2843alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2844status += [
2845 'default DNS servers: @0@'.format(alt_dns_servers),
2846 'default NTP servers: @0@'.format(alt_ntp_servers)]
2847
2848alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2849 '@@0@'.format(time_epoch)).stdout().strip()
2850status += [
2851 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2852
2853# TODO:
2854# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2855# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2856# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002858if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002859 status += [
2860 'efi arch: @0@'.format(efi_arch)]
2861
2862 if have_gnu_efi
2863 status += [
2864 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2865 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002866 'EFI lib directory: @0@'.format(efi_libdir),
2867 'EFI lds directory: @0@'.format(efi_ldsdir),
2868 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002869 endif
2870endif
2871
2872found = []
2873missing = []
2874
2875foreach tuple : [
2876 ['libcryptsetup'],
2877 ['PAM'],
2878 ['AUDIT'],
2879 ['IMA'],
2880 ['AppArmor'],
2881 ['SELinux'],
2882 ['SECCOMP'],
2883 ['SMACK'],
2884 ['zlib'],
2885 ['xz'],
2886 ['lz4'],
2887 ['bzip2'],
2888 ['ACL'],
2889 ['gcrypt'],
2890 ['qrencode'],
2891 ['microhttpd'],
2892 ['gnutls'],
2893 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002894 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002895 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002896 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002897 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002898 ['libiptc'],
2899 ['elfutils'],
2900 ['binfmt'],
2901 ['vconsole'],
2902 ['quotacheck'],
2903 ['tmpfiles'],
2904 ['environment.d'],
2905 ['sysusers'],
2906 ['firstboot'],
2907 ['randomseed'],
2908 ['backlight'],
2909 ['rfkill'],
2910 ['logind'],
2911 ['machined'],
2912 ['importd'],
2913 ['hostnamed'],
2914 ['timedated'],
2915 ['timesyncd'],
2916 ['localed'],
2917 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002918 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002919 ['coredump'],
2920 ['polkit'],
2921 ['legacy pkla', install_polkit_pkla],
2922 ['efi'],
2923 ['gnu-efi', have_gnu_efi],
2924 ['kmod'],
2925 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002926 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002927 ['blkid'],
2928 ['dbus'],
2929 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002930 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002931 ['hwdb'],
2932 ['tpm'],
2933 ['man pages', want_man],
2934 ['html pages', want_html],
2935 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002936 ['SysV compat'],
2937 ['utmp'],
2938 ['ldconfig'],
2939 ['hibernate'],
2940 ['adm group', get_option('adm-group')],
2941 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002942 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002943 ['debug hashmap'],
2944 ['debug mmap cache'],
2945]
2946
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002947 if tuple.length() >= 2
2948 cond = tuple[1]
2949 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002950 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2951 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002952 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002953 endif
2954 if cond
2955 found += [tuple[0]]
2956 else
2957 missing += [tuple[0]]
2958 endif
2959endforeach
2960
2961status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002962 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002963 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002964 '',
2965 'disabled features: @0@'.format(', '.join(missing)),
2966 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002967message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002968
2969if rootprefixdir != rootprefix_default
2970 message('WARNING:\n' +
2971 ' Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2972 ' systemd used fixed names for unit file directories and other paths, so anything\n' +
2973 ' except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
2974endif