blob: 469737819d81dc63fc8b751041813d75e788d876 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
2#
3# Copyright 2017 Zbigniew Jędrzejewski-Szmek
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01004
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005project('systemd', 'c',
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +01006 version : '238',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04007 license : 'LGPLv2+',
8 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04009 'c_std=gnu99',
10 'prefix=/usr',
11 'sysconfdir=/etc',
12 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 ],
Yu Watanabe8ea9fad2018-05-10 14:50:52 +090014 meson_version : '>= 0.44',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040015 )
16
Zbigniew Jędrzejewski-Szmekad6a0852018-03-05 17:12:48 +010017libsystemd_version = '0.22.0'
18libudev_version = '1.6.10'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020019
Yu Watanabe348b4432018-05-07 18:17:35 +090020# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040021# Also, for hysterical reasons, we use different variable
22# names, sometimes. Not all variables are included in every
23# set. Ugh, ugh, ugh!
24conf = configuration_data()
25conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
26conf.set_quoted('PACKAGE_VERSION', meson.project_version())
27
28substs = configuration_data()
29substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
30substs.set('PACKAGE_VERSION', meson.project_version())
31
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040032#####################################################################
33
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040034# Try to install the git pre-commit hook
35git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
36if git_hook.returncode() == 0
37 message(git_hook.stdout().strip())
38endif
39
40#####################################################################
41
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010042if get_option('split-usr') == 'auto'
43 split_usr = run_command('test', '-L', '/bin').returncode() != 0
44else
45 split_usr = get_option('split-usr') == 'true'
46endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010047conf.set10('HAVE_SPLIT_USR', split_usr,
48 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010049
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010050if get_option('split-bin') == 'auto'
51 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
52else
53 split_bin = get_option('split-bin') == 'true'
54endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010055conf.set10('HAVE_SPLIT_BIN', split_bin,
56 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010057
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010058rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010059# Unusual rootprefixdir values are used by some distros
60# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010061rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010062if rootprefixdir == ''
63 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040065
66sysvinit_path = get_option('sysvinit-path')
67sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090068conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020069 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71# join_paths ignore the preceding arguments if an absolute component is
72# encountered, so this should canonicalize various paths when they are
73# absolute or relative.
74prefixdir = get_option('prefix')
75if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040076 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040077endif
78bindir = join_paths(prefixdir, get_option('bindir'))
79libdir = join_paths(prefixdir, get_option('libdir'))
80sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
81includedir = join_paths(prefixdir, get_option('includedir'))
82datadir = join_paths(prefixdir, get_option('datadir'))
83localstatedir = join_paths('/', get_option('localstatedir'))
84
85rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010086rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040087rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
88
89rootlibdir = get_option('rootlibdir')
90if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040091 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040092endif
93
94# Dirs of external packages
Michael Bieble17e5ba2017-04-13 10:30:56 -040095pkgconfigdatadir = join_paths(datadir, 'pkgconfig')
96pkgconfiglibdir = join_paths(libdir, 'pkgconfig')
97polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
98polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
99polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
100varlogdir = join_paths(localstatedir, 'log')
101xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900102rpmmacrosdir = get_option('rpmmacrosdir')
103if rpmmacrosdir != 'no'
104 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
105endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200106modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400107
108# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400109pkgdatadir = join_paths(datadir, 'systemd')
110environmentdir = join_paths(prefixdir, 'lib/environment.d')
111pkgsysconfdir = join_paths(sysconfdir, 'systemd')
112userunitdir = join_paths(prefixdir, 'lib/systemd/user')
113userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
114tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
115sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
116sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
117binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
118modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
119networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
120pkgincludedir = join_paths(includedir, 'systemd')
121systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
122usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
123systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
124userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
125systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
126systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
127systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
128systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
129udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
130udevhomedir = udevlibexecdir
131udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
132udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
133catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
134kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
135factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400136bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
137testsdir = join_paths(prefixdir, 'lib/systemd/tests')
138systemdstatedir = join_paths(localstatedir, 'lib/systemd')
139catalogstatedir = join_paths(systemdstatedir, 'catalog')
140randomseeddir = join_paths(localstatedir, 'lib/systemd')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400141
tblume75aaade2018-02-01 22:46:15 +0100142docdir = get_option('docdir')
143if docdir == ''
144 docdir = join_paths(datadir, 'doc/systemd')
145endif
146
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400147dbuspolicydir = get_option('dbuspolicydir')
148if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400149 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400150endif
151
152dbussessionservicedir = get_option('dbussessionservicedir')
153if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400154 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400155endif
156
157dbussystemservicedir = get_option('dbussystemservicedir')
158if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162pamlibdir = get_option('pamlibdir')
163if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167pamconfdir = get_option('pamconfdir')
168if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100172memory_accounting_default = get_option('memory-accounting-default')
173
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400174conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400175conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400176conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
177conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
178conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400179conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
180conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100181
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100182conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100183
Michael Bieble17e5ba2017-04-13 10:30:56 -0400184conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
186conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400187conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
188conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
189conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
190conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100191conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100192conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400193conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
194conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
195conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
196conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
197conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100198conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400199conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400200conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
201conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
203conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
204conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
205conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
206conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
207conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400208conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
209conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400210conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400211conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('LIBDIR', libdir)
213conf.set_quoted('ROOTLIBDIR', rootlibdir)
214conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
215conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400216conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
217conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
218conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
219conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
220conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
221conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100222conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100223conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224
225conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
226conf.set_quoted('ABS_SRC_DIR', meson.source_root())
227
228substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400229substs.set('exec_prefix', prefixdir)
230substs.set('libdir', libdir)
231substs.set('rootlibdir', rootlibdir)
232substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400233substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400234substs.set('bindir', bindir)
235substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236substs.set('rootlibexecdir', rootlibexecdir)
237substs.set('systemunitdir', systemunitdir)
238substs.set('userunitdir', userunitdir)
239substs.set('systempresetdir', systempresetdir)
240substs.set('userpresetdir', userpresetdir)
241substs.set('udevhwdbdir', udevhwdbdir)
242substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400244substs.set('catalogdir', catalogdir)
245substs.set('tmpfilesdir', tmpfilesdir)
246substs.set('sysusersdir', sysusersdir)
247substs.set('sysctldir', sysctldir)
248substs.set('binfmtdir', binfmtdir)
249substs.set('modulesloaddir', modulesloaddir)
250substs.set('systemgeneratordir', systemgeneratordir)
251substs.set('usergeneratordir', usergeneratordir)
252substs.set('systemenvgeneratordir', systemenvgeneratordir)
253substs.set('userenvgeneratordir', userenvgeneratordir)
254substs.set('systemshutdowndir', systemshutdowndir)
255substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400256substs.set('VARLOGDIR', varlogdir)
257substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400258substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
259substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400260substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
261substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
262substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
263substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100264substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265
266#####################################################################
267
268cc = meson.get_compiler('c')
269pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400270check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100271meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400272
Adam Duskett08318a22018-01-15 06:25:46 -0500273if get_option('tests') != 'false'
274 cxx = find_program('c++', required : false)
275 if cxx.found()
276 # Used only for tests
277 add_languages('cpp')
278 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400279endif
280
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500281want_ossfuzz = get_option('oss-fuzz')
282want_libfuzzer = get_option('llvm-fuzz')
283fuzzer_build = want_ossfuzz or want_libfuzzer
284if want_ossfuzz and want_libfuzzer
285 error('only one of oss-fuzz and llvm-fuzz can be specified')
286endif
287if want_libfuzzer
288 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
289endif
290if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500291 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
292endif
293
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900294possible_cc_flags = [
295 '-Wextra',
296 '-Werror=undef',
297 '-Wlogical-op',
298 '-Wmissing-include-dirs',
299 '-Wold-style-definition',
300 '-Wpointer-arith',
301 '-Winit-self',
302 '-Wdeclaration-after-statement',
303 '-Wfloat-equal',
304 '-Wsuggest-attribute=noreturn',
305 '-Werror=missing-prototypes',
306 '-Werror=implicit-function-declaration',
307 '-Werror=missing-declarations',
308 '-Werror=return-type',
309 '-Werror=incompatible-pointer-types',
310 '-Werror=format=2',
311 '-Wstrict-prototypes',
312 '-Wredundant-decls',
313 '-Wmissing-noreturn',
314 '-Wimplicit-fallthrough=5',
315 '-Wshadow',
316 '-Wendif-labels',
317 '-Wstrict-aliasing=2',
318 '-Wwrite-strings',
319 '-Werror=overflow',
320 '-Wdate-time',
321 '-Wnested-externs',
322 '-ffast-math',
323 '-fno-common',
324 '-fdiagnostics-show-option',
325 '-fno-strict-aliasing',
326 '-fvisibility=hidden',
327 '-fstack-protector',
328 '-fstack-protector-strong',
329 '--param=ssp-buffer-size=4',
330]
331
332# --as-needed and --no-undefined are provided by meson by default,
333# run mesonconf to see what is enabled
334possible_link_flags = [
335 '-Wl,-z,relro',
336 '-Wl,-z,now',
337]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400338
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500339# the oss-fuzz fuzzers are not built with -fPIE, so don't
340# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500341if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900342 possible_cc_flags += '-fPIE'
343 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500344endif
345
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900346if cc.get_id() == 'clang'
347 possible_cc_flags += [
348 '-Wno-typedef-redefinition',
349 '-Wno-gnu-variable-sized-type-not-at-end',
350 ]
351endif
352
353if get_option('buildtype') != 'debug'
354 possible_cc_flags += [
355 '-ffunction-sections',
356 '-fdata-sections',
357 ]
358
359 possible_link_flags += '-Wl,--gc-sections'
360endif
361
362add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
363
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400364# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
365# arguments, just emits a warnings. So test for the "positive" version instead.
366foreach arg : ['unused-parameter',
367 'missing-field-initializers',
368 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300369 'format-signedness',
370 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
371 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400372 if cc.has_argument('-W' + arg)
373 add_project_arguments('-Wno-' + arg, language : 'c')
374 endif
375endforeach
376
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800377if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400378 #include <time.h>
379 #include <inttypes.h>
380 typedef uint64_t usec_t;
381 usec_t now(clockid_t clock);
382 int main(void) {
383 struct timespec now;
384 return 0;
385 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800386''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400387 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400388endif
389
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400390link_test_c = files('tools/meson-link-test.c')
391
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900392foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400393 have = run_command(check_compilation_sh,
394 cc.cmd_array(), '-x', 'c', arg,
395 '-include', link_test_c).returncode() == 0
396 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900397 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400398 add_project_link_arguments(arg, language : 'c')
399 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400400endforeach
401
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400402cpp = ' '.join(cc.cmd_array()) + ' -E'
403
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404#####################################################################
405# compilation result tests
406
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400407conf.set('_GNU_SOURCE', true)
408conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400409
410conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
411conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
416conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
417
418decl_headers = '''
419#include <uchar.h>
420#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000421#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100422#include <linux/stat.h>
423#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424'''
425# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
426
427foreach decl : ['char16_t',
428 'char32_t',
429 'key_serial_t',
430 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000431 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100432 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400433 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400434
435 # We get -1 if the size cannot be determined
436 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200437 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400438endforeach
439
440foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
441 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
442 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
443 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530444 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400445 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
446 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
447 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
448 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
449 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530450 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400451 # if_tunnel.h is buggy and cannot be included on its own
452 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
453 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
454 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
455 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
456 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
457 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
458 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530459 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400460 ['NDA_IFINDEX', 'linux/neighbour.h'],
461 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000462 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530464 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400465 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400466 prefix = decl.length() > 2 ? decl[2] : ''
467 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200468 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400469endforeach
470
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400471foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200472 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400473endforeach
474
475foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100476 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100477 ['gettid', '''#include <sys/types.h>
478 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100479 ['pivot_root', '''#include <stdlib.h>
480 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100481 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400482 #include <sys/stat.h>
483 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100484 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100485 ['renameat2', '''#include <stdio.h>
486 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 ['kcmp', '''#include <linux/kcmp.h>'''],
488 ['keyctl', '''#include <sys/types.h>
489 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100490 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400491 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200492 ['bpf', '''#include <sys/syscall.h>
493 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100494 ['statx', '''#include <sys/types.h>
495 #include <sys/stat.h>
496 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100497 ['explicit_bzero' , '''#include <string.h>'''],
498 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400499]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400500
Lennart Poettering85db59b2017-12-25 12:01:14 +0100501 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200502 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503endforeach
504
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200506 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200507 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400508else
509 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200510 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200511 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400512endif
513
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400514#####################################################################
515
516sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400518m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400519stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400520git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100521env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100522perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400523
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400524meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400525mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400526test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
527splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400528
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400529# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
530# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500531progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400533 ['kmod', '/usr/bin/kmod' ],
534 ['kexec', '/usr/sbin/kexec' ],
535 ['sulogin', '/usr/sbin/sulogin' ],
536 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
537 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
538 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
539 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
540 ]
541foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400542 path = get_option(prog[0] + '-path')
543 if path != ''
544 message('Using @1@ for @0@'.format(prog[0], path))
545 else
546 exe = find_program(prog[0],
547 '/usr/sbin/' + prog[0],
548 '/sbin/' + prog[0],
549 required: false)
550 path = exe.found() ? exe.path() : prog[1]
551 endif
552 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
553 conf.set_quoted(name, path)
554 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400555endforeach
556
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500557conf.set_quoted('TELINIT', get_option('telinit-path'))
558
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400559if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100560 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400561endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400562
563############################################################
564
565gperf = find_program('gperf')
566
567gperf_test_format = '''
568#include <string.h>
569const char * in_word_set(const char *, @0@);
570@1@
571'''
572gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
573gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
574gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
575if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400576 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400578 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
579 if cc.compiles(gperf_test)
580 gperf_len_type = 'unsigned'
581 else
582 error('unable to determine gperf len type')
583 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400584endif
585message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400586conf.set('GPERF_LEN_TYPE', gperf_len_type,
587 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588
589############################################################
590
591if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400592 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400593endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100594foreach header : ['crypt.h',
595 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596 'linux/memfd.h',
597 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200598 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599 'valgrind/memcheck.h',
600 'valgrind/valgrind.h',
601 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400602
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200603 conf.set10('HAVE_' + header.underscorify().to_upper(),
604 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605endforeach
606
607############################################################
608
609conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400610conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
611gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400612
613default_hierarchy = get_option('default-hierarchy')
614conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
615 description : 'default cgroup hierarchy as string')
616if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400617 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400619 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400620else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622endif
623
624time_epoch = get_option('time-epoch')
625if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400626 NEWS = files('NEWS')
627 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400628endif
629time_epoch = time_epoch.to_int()
630conf.set('TIME_EPOCH', time_epoch)
631
632system_uid_max = get_option('system-uid-max')
633if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400634 system_uid_max = run_command(
635 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800636 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
637 '/etc/login.defs').stdout().strip()
638 if system_uid_max == ''
639 system_uid_max = '999'
640 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400641endif
642system_uid_max = system_uid_max.to_int()
643conf.set('SYSTEM_UID_MAX', system_uid_max)
644substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400645message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400646
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400647system_gid_max = get_option('system-gid-max')
648if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 system_gid_max = run_command(
650 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800651 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
652 '/etc/login.defs').stdout().strip()
653 if system_gid_max == ''
654 system_gid_max = '999'
655 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656endif
657system_gid_max = system_gid_max.to_int()
658conf.set('SYSTEM_GID_MAX', system_gid_max)
659substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400660message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400661
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100662dynamic_uid_min = get_option('dynamic-uid-min').to_int()
663dynamic_uid_max = get_option('dynamic-uid-max').to_int()
664conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
665conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
666substs.set('dynamicuidmin', dynamic_uid_min)
667substs.set('dynamicuidmax', dynamic_uid_max)
668
669container_uid_base_min = get_option('container-uid-base-min').to_int()
670container_uid_base_max = get_option('container-uid-base-max').to_int()
671conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
672conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
673substs.set('containeruidbasemin', container_uid_base_min)
674substs.set('containeruidbasemax', container_uid_base_max)
675
Lennart Poetteringafde4572017-12-05 11:00:24 +0100676nobody_user = get_option('nobody-user')
677nobody_group = get_option('nobody-group')
678
679getent_result = run_command('getent', 'passwd', '65534')
680if getent_result.returncode() == 0
681 name = getent_result.stdout().split(':')[0]
682 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900683 warning('\n' +
684 'The local user with the UID 65534 does not match the configured user name "@0@" of the nobody user (its name is @1@).\n'.format(nobody_user, name) +
685 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100686 endif
687endif
688id_result = run_command('id', '-u', nobody_user)
689if id_result.returncode() == 0
690 id = id_result.stdout().to_int()
691 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900692 warning('\n' +
693 'The local user with the configured user name "@0@" of the nobody user does not have UID 65534 (it has @1@).\n'.format(nobody_user, id) +
694 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100695 endif
696endif
697
698getent_result = run_command('getent', 'group', '65534')
699if getent_result.returncode() == 0
700 name = getent_result.stdout().split(':')[0]
701 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900702 warning('\n' +
703 'The local group with the GID 65534 does not match the configured group name "@0@" of the nobody group (its name is @1@).\n'.format(nobody_group, name) +
704 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100705 endif
706endif
707id_result = run_command('id', '-g', nobody_group)
708if id_result.returncode() == 0
709 id = id_result.stdout().to_int()
710 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900711 warning('\n' +
712 'The local group with the configured group name "@0@" of the nobody group does not have UID 65534 (it has @1@).\n'.format(nobody_group, id) +
713 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100714 endif
715endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900716if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900717 warning('\n' +
718 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
719 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900720endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100721
722conf.set_quoted('NOBODY_USER_NAME', nobody_user)
723conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900724substs.set('NOBODY_USER_NAME', nobody_user)
725substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100726
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400727tty_gid = get_option('tty-gid')
728conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400729substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730
Ikey Doherty84786b82017-12-03 12:28:23 +0000731# Ensure provided GID argument is numeric, otherwise fallback to default assignment
732if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900733 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000734else
Yu Watanabed6806872017-12-05 14:01:39 +0900735 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000736endif
737substs.set('USERS_GID', users_gid)
738
Yu Watanabe348b4432018-05-07 18:17:35 +0900739conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
740conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400741
742substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700743substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400745kill_user_processes = get_option('default-kill-user-processes')
746conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100747conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400748substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400749
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400750dns_servers = get_option('dns-servers')
751conf.set_quoted('DNS_SERVERS', dns_servers)
752substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400754ntp_servers = get_option('ntp-servers')
755conf.set_quoted('NTP_SERVERS', ntp_servers)
756substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400757
758conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
759
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400760substs.set('SUSHELL', get_option('debug-shell'))
761substs.set('DEBUGTTY', get_option('debug-tty'))
762
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200763enable_debug_hashmap = false
764enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900765foreach name : get_option('debug')
766 if name == 'hashmap'
767 enable_debug_hashmap = true
768 elif name == 'mmap-cache'
769 enable_debug_mmap_cache = true
770 else
771 message('unknown debug option "@0@", ignoring'.format(name))
772 endif
773endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200774conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
775conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400776
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200777conf.set10('VALGRIND', get_option('valgrind'))
778
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400779#####################################################################
780
781threads = dependency('threads')
782librt = cc.find_library('rt')
783libm = cc.find_library('m')
784libdl = cc.find_library('dl')
785libcrypt = cc.find_library('crypt')
786
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400787libcap = dependency('libcap', required : false)
788if not libcap.found()
789 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
790 libcap = cc.find_library('cap')
791endif
792
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400793libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100794 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400795
796want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500797if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400798 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400799 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400800 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400802else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200803 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400804 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
808want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500809if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400810 libselinux = dependency('libselinux',
811 version : '>= 2.1.9',
812 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200813 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200815 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400816 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819
820want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500821if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400822 libapparmor = dependency('libapparmor',
823 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200824 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200826 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400827 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400830
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831smack_run_label = get_option('smack-run-label')
832if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400833 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834endif
835
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400836want_polkit = get_option('polkit')
837install_polkit = false
838install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500839if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400841
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400842 libpolkit = dependency('polkit-gobject-1',
843 required : false)
844 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
845 message('Old polkit detected, will install pkla files')
846 install_polkit_pkla = true
847 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400848endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200849conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400850
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400851want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500852if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400853 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400857 libacl = []
858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500862if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200864 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400865else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200866 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400867 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400870
871want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500872if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400873 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200874 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400875else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200876 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400877 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400880
881want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400883 libkmod = dependency('libkmod',
884 version : '>= 15',
885 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400887else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200888 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400889 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400892
893want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500894if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400895 libpam = cc.find_library('pam', required : want_pam == 'true')
896 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libpam = []
901 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400904
905want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500906if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libmicrohttpd = dependency('libmicrohttpd',
908 version : '>= 0.9.33',
909 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200912 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400916
917want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500918if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libcryptsetup = dependency('libcryptsetup',
920 version : '>= 1.6.0',
921 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200922 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400923else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928
929want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500930if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400931 libcurl = dependency('libcurl',
932 version : '>= 7.32.0',
933 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200934 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400935else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200936 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400940
941want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400942want_libidn2 = get_option('libidn2')
943if want_libidn == 'true' and want_libidn2 == 'true'
944 error('libidn and libidn2 cannot be requested simultaneously')
945endif
946
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500947if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libidn = dependency('libidn',
949 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400951else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400953 libidn = []
954endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500956if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400957 # libidn is used for both libidn and libidn2 objects
958 libidn = dependency('libidn2',
959 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = libidn.found()
961else
962 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400963endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965
966want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500967if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400968 libiptc = dependency('libiptc',
969 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libqrencode = dependency('libqrencode',
980 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400988want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500989if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400990 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
991 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200992 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400993else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = false
995endif
996if not have
997 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400998 libgcrypt = []
999 libgpg_error = []
1000endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001001conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001003want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001004if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001005 libgnutls = dependency('gnutls',
1006 version : '>= 3.1.4',
1007 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001009else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014
1015want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001016if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001017 libdw = dependency('libdw',
1018 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001020else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001022 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025
1026want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001027if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libz = dependency('zlib',
1029 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001032 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001033 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001036
1037want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001038if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001039 libbzip2 = cc.find_library('bz2',
1040 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001041 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001042else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001043 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001044 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001047
1048want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001049if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001050 libxz = dependency('liblzma',
1051 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001052 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058
1059want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001060if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001061 liblz4 = dependency('liblz4',
1062 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001063 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001070want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001071if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001072 libxkbcommon = dependency('xkbcommon',
1073 version : '>= 0.3.0',
1074 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001076else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001077 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078 libxkbcommon = []
1079endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001081
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001082want_pcre2 = get_option('pcre2')
1083if want_pcre2 != 'false'
1084 libpcre2 = dependency('libpcre2-8',
1085 required : want_pcre2 == 'true')
1086 have = libpcre2.found()
1087else
1088 have = false
1089 libpcre2 = []
1090endif
1091conf.set10('HAVE_PCRE2', have)
1092
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001093want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001094if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libglib = dependency('glib-2.0',
1096 version : '>= 2.22.0',
1097 required : want_glib == 'true')
1098 libgobject = dependency('gobject-2.0',
1099 version : '>= 2.22.0',
1100 required : want_glib == 'true')
1101 libgio = dependency('gio-2.0',
1102 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001103 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001104else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001106 libglib = []
1107 libgobject = []
1108 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001109endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001110conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001111
1112want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001113if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libdbus = dependency('dbus-1',
1115 version : '>= 1.3.2',
1116 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001118else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001119 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001120 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001121endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001123
Yu Watanabe42303dc2017-06-18 05:22:32 +09001124default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001125if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001126 default_dnssec = 'no'
1127endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001128if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001129 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1130 default_dnssec = 'no'
1131endif
1132conf.set('DEFAULT_DNSSEC_MODE',
1133 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1134substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1135
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001137if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001138 have = (conf.get('HAVE_LIBCURL') == 1 and
1139 conf.get('HAVE_ZLIB') == 1 and
1140 conf.get('HAVE_BZIP2') == 1 and
1141 conf.get('HAVE_XZ') == 1 and
1142 conf.get('HAVE_GCRYPT') == 1)
1143 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 error('importd support was requested, but dependencies are not available')
1145 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146else
1147 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001148endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150
1151want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001152if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1154 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1156 # it's possible to build one without the other. Complain only if
1157 # support was explictly requested. The auxiliary files like sysusers
1158 # config should be installed when any of the programs are built.
1159 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1160 error('remote support was requested, but dependencies are not available')
1161 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162 have = have_deps[0] or have_deps[1]
1163else
1164 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001165endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001168foreach term : ['utmp',
1169 'hibernate',
1170 'environment-d',
1171 'binfmt',
1172 'coredump',
1173 'resolve',
1174 'logind',
1175 'hostnamed',
1176 'localed',
1177 'machined',
1178 'networkd',
1179 'timedated',
1180 'timesyncd',
1181 'myhostname',
1182 'firstboot',
1183 'randomseed',
1184 'backlight',
1185 'vconsole',
1186 'quotacheck',
1187 'sysusers',
1188 'tmpfiles',
1189 'hwdb',
1190 'rfkill',
1191 'ldconfig',
1192 'efi',
1193 'tpm',
1194 'ima',
1195 'smack',
1196 'gshadow',
1197 'idn',
1198 'nss-systemd']
1199 have = get_option(term)
1200 name = 'ENABLE_' + term.underscorify().to_upper()
1201 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001202endforeach
1203
Yu Watanabe348b4432018-05-07 18:17:35 +09001204conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001205
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001206want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001207install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001208slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001210fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001211
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001212conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001213
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001214#####################################################################
1215
1216if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001217 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001218
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001219 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001221 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001222 elif efi_arch == 'x86_64'
1223 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001224 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001225 elif efi_arch == 'arm'
1226 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001227 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001228 elif efi_arch == 'aarch64'
1229 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001230 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001231 else
1232 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001233 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001235
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001236 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001237 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001238
1239 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240else
1241 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001242endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001243conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001244
1245#####################################################################
1246
1247config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001248 output : 'config.h',
1249 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001250
Yu Watanabe348b4432018-05-07 18:17:35 +09001251meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1252
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001253includes = include_directories('src/basic',
1254 'src/shared',
1255 'src/systemd',
1256 'src/journal',
1257 'src/resolve',
1258 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001259 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001260 'src/login',
1261 'src/udev',
1262 'src/libudev',
1263 'src/core',
1264 'src/libsystemd/sd-bus',
1265 'src/libsystemd/sd-device',
1266 'src/libsystemd/sd-hwdb',
1267 'src/libsystemd/sd-id128',
1268 'src/libsystemd/sd-netlink',
1269 'src/libsystemd/sd-network',
1270 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001271 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001272
1273add_project_arguments('-include', 'config.h', language : 'c')
1274
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001275subdir('po')
1276subdir('catalog')
1277subdir('src/systemd')
1278subdir('src/basic')
1279subdir('src/libsystemd')
1280subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283
1284libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001285 'journal-core',
1286 libjournal_core_sources,
1287 journald_gperf_c,
1288 include_directories : includes,
1289 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001291libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001293 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001294 '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 +02001295 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001296 include_directories : includes,
1297 link_args : ['-shared',
1298 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001299 link_with : [libbasic,
1300 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001301 link_whole : [libsystemd_static,
1302 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001303 dependencies : [threads,
1304 librt,
1305 libxz,
1306 liblz4],
1307 link_depends : libsystemd_sym,
1308 install : true,
1309 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310
Davide Cavalca70848ec2018-04-09 02:43:35 -07001311static_libsystemd = get_option('static-libsystemd')
1312static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1313
1314install_libsystemd_static = static_library(
1315 'systemd',
1316 libsystemd_sources,
1317 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001318 basic_sources,
1319 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001320 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001321 build_by_default : static_libsystemd != 'false',
1322 install : static_libsystemd != 'false',
1323 install_dir : rootlibdir,
1324 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1325 dependencies : [threads,
1326 librt,
1327 libxz,
1328 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001329 libcap,
1330 libblkid,
1331 libmount,
1332 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001333 libgcrypt],
1334 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1335
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001336############################################################
1337
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001338# binaries that have --help and are intended for use by humans,
1339# usually, but not always, installed in /bin.
1340public_programs = []
1341
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342subdir('src/libudev')
1343subdir('src/shared')
1344subdir('src/core')
1345subdir('src/udev')
1346subdir('src/network')
1347
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001348subdir('src/analyze')
1349subdir('src/journal-remote')
1350subdir('src/coredump')
1351subdir('src/hostname')
1352subdir('src/import')
1353subdir('src/kernel-install')
1354subdir('src/locale')
1355subdir('src/machine')
1356subdir('src/nspawn')
1357subdir('src/resolve')
1358subdir('src/timedate')
1359subdir('src/timesync')
1360subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001361subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001362
1363subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001364subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001365subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001366subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001367
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001368############################################################
1369
1370# only static linking apart from libdl, to make sure that the
1371# module is linked to all libraries that it uses.
1372test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001373 'test-dlopen',
1374 test_dlopen_c,
1375 include_directories : includes,
1376 link_with : [libbasic],
1377 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001378
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001379foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001380 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001381 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001382 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001383
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001384 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001385 if condition
1386 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001387
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001388 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1389 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001390
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001391 nss = shared_library(
1392 'nss_' + module,
1393 'src/nss-@0@/nss-@0@.c'.format(module),
1394 version : '2',
1395 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001396 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1397 link_args : ['-Wl,-z,nodelete',
1398 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001399 '-Wl,--version-script=' + version_script_arg,
1400 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001401 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001402 libbasic],
1403 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001404 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001405 link_depends : sym,
1406 install : true,
1407 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001408
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 # We cannot use shared_module because it does not support version suffix.
1410 # Unfortunately shared_library insists on creating the symlink…
1411 meson.add_install_script('sh', '-c',
1412 'rm $DESTDIR@0@/libnss_@1@.so'
1413 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001414
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 test('dlopen-nss_' + module,
1416 test_dlopen,
1417 args : [nss.full_path()]) # path to dlopen must include a slash
1418 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001419endforeach
1420
1421############################################################
1422
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423executable('systemd',
1424 systemd_sources,
1425 include_directories : includes,
1426 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001427 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001428 dependencies : [threads,
1429 librt,
1430 libseccomp,
1431 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001432 libmount,
1433 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001434 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 install : true,
1436 install_dir : rootlibexecdir)
1437
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001438meson.add_install_script(meson_make_symlink,
1439 join_paths(rootlibexecdir, 'systemd'),
1440 join_paths(rootsbindir, 'init'))
1441
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001442exe = executable('systemd-analyze',
1443 systemd_analyze_sources,
1444 include_directories : includes,
1445 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001446 libshared],
1447 dependencies : [threads,
1448 librt,
1449 libseccomp,
1450 libselinux,
1451 libmount,
1452 libblkid],
1453 install_rpath : rootlibexecdir,
1454 install : true)
1455public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456
1457executable('systemd-journald',
1458 systemd_journald_sources,
1459 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001460 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001461 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462 dependencies : [threads,
1463 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001464 liblz4,
1465 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001466 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467 install : true,
1468 install_dir : rootlibexecdir)
1469
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001470exe = executable('systemd-cat',
1471 systemd_cat_sources,
1472 include_directories : includes,
1473 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001474 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001475 dependencies : [threads],
1476 install_rpath : rootlibexecdir,
1477 install : true)
1478public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001480exe = executable('journalctl',
1481 journalctl_sources,
1482 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001483 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001484 dependencies : [threads,
1485 libqrencode,
1486 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001487 liblz4,
1488 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001489 install_rpath : rootlibexecdir,
1490 install : true,
1491 install_dir : rootbindir)
1492public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001493
1494executable('systemd-getty-generator',
1495 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001496 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001497 link_with : [libshared],
1498 install_rpath : rootlibexecdir,
1499 install : true,
1500 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001501
1502executable('systemd-debug-generator',
1503 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001504 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001505 link_with : [libshared],
1506 install_rpath : rootlibexecdir,
1507 install : true,
1508 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509
1510executable('systemd-fstab-generator',
1511 'src/fstab-generator/fstab-generator.c',
1512 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001514 link_with : [libshared],
1515 install_rpath : rootlibexecdir,
1516 install : true,
1517 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001518
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001519if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 executable('30-systemd-environment-d-generator',
1521 'src/environment-d-generator/environment-d-generator.c',
1522 include_directories : includes,
1523 link_with : [libshared],
1524 install_rpath : rootlibexecdir,
1525 install : true,
1526 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001527
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001528 meson.add_install_script(meson_make_symlink,
1529 join_paths(sysconfdir, 'environment'),
1530 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001531endif
1532
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001533if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001534 executable('systemd-hibernate-resume-generator',
1535 'src/hibernate-resume/hibernate-resume-generator.c',
1536 include_directories : includes,
1537 link_with : [libshared],
1538 install_rpath : rootlibexecdir,
1539 install : true,
1540 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001541
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 executable('systemd-hibernate-resume',
1543 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001544 include_directories : includes,
1545 link_with : [libshared],
1546 install_rpath : rootlibexecdir,
1547 install : true,
1548 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549endif
1550
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001551if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001552 executable('systemd-gpt-auto-generator',
1553 'src/gpt-auto-generator/gpt-auto-generator.c',
1554 'src/basic/blkid-util.h',
1555 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001556 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001557 dependencies : libblkid,
1558 install_rpath : rootlibexecdir,
1559 install : true,
1560 install_dir : systemgeneratordir)
1561
1562 exe = executable('systemd-dissect',
1563 'src/dissect/dissect.c',
1564 include_directories : includes,
1565 link_with : [libshared],
1566 install_rpath : rootlibexecdir,
1567 install : true,
1568 install_dir : rootlibexecdir)
1569 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001570endif
1571
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001572if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 executable('systemd-resolved',
1574 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001575 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001576 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001577 libbasic_gcrypt,
1578 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001579 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001580 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001581 libm,
1582 libidn],
1583 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001584 install : true,
1585 install_dir : rootlibexecdir)
1586
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001587 exe = executable('resolvectl',
1588 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001589 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001590 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001591 libbasic_gcrypt,
1592 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001593 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001594 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 libm,
1596 libidn],
1597 install_rpath : rootlibexecdir,
1598 install : true)
1599 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001600
1601 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001602 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001603 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001604
1605 meson.add_install_script(meson_make_symlink,
1606 join_paths(bindir, 'resolvectl'),
1607 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608endif
1609
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001610if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001611 executable('systemd-logind',
1612 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001614 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001615 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001616 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001617 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001618 install_rpath : rootlibexecdir,
1619 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001620 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001621
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001622 exe = executable('loginctl',
1623 loginctl_sources,
1624 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001625 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 dependencies : [threads,
1627 liblz4,
1628 libxz],
1629 install_rpath : rootlibexecdir,
1630 install : true,
1631 install_dir : rootbindir)
1632 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001634 exe = executable('systemd-inhibit',
1635 'src/login/inhibit.c',
1636 include_directories : includes,
1637 link_with : [libshared],
1638 install_rpath : rootlibexecdir,
1639 install : true,
1640 install_dir : rootbindir)
1641 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001642
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001643 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001644 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1645 pam_systemd = shared_library(
1646 'pam_systemd',
1647 pam_systemd_c,
1648 name_prefix : '',
1649 include_directories : includes,
1650 link_args : ['-shared',
1651 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001652 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001653 libshared_static],
1654 dependencies : [threads,
1655 libpam,
1656 libpam_misc],
1657 link_depends : pam_systemd_sym,
1658 install : true,
1659 install_dir : pamlibdir)
1660
1661 test('dlopen-pam_systemd',
1662 test_dlopen,
1663 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1664 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001665endif
1666
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001667executable('systemd-user-runtime-dir',
1668 user_runtime_dir_sources,
1669 include_directories : includes,
1670 link_with : [libshared, liblogind_core],
1671 install_rpath : rootlibexecdir,
1672 install : true,
1673 install_dir : rootlibexecdir)
1674
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001675if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001676 executable('systemd-user-sessions',
1677 'src/user-sessions/user-sessions.c',
1678 include_directories : includes,
1679 link_with : [libshared],
1680 install_rpath : rootlibexecdir,
1681 install : true,
1682 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001683endif
1684
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001685if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001686 exe = executable('bootctl',
1687 'src/boot/bootctl.c',
1688 include_directories : includes,
1689 link_with : [libshared],
1690 dependencies : [libblkid],
1691 install_rpath : rootlibexecdir,
1692 install : true)
1693 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001694endif
1695
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001696exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1697 include_directories : includes,
1698 link_with : [libshared],
1699 dependencies : [threads],
1700 install_rpath : rootlibexecdir,
1701 install : true)
1702public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704exe = executable('systemctl', 'src/systemctl/systemctl.c',
1705 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001706 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707 dependencies : [threads,
1708 libcap,
1709 libselinux,
1710 libxz,
1711 liblz4],
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : rootbindir)
1715public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001717foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1718 meson.add_install_script(meson_make_symlink,
1719 join_paths(rootbindir, 'systemctl'),
1720 join_paths(rootsbindir, alias))
1721endforeach
1722
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001723if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 executable('systemd-backlight',
1725 'src/backlight/backlight.c',
1726 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001727 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001728 install_rpath : rootlibexecdir,
1729 install : true,
1730 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001731endif
1732
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001733if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734 executable('systemd-rfkill',
1735 'src/rfkill/rfkill.c',
1736 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001737 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001741endif
1742
1743executable('systemd-system-update-generator',
1744 'src/system-update-generator/system-update-generator.c',
1745 include_directories : includes,
1746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001747 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001748 install : true,
1749 install_dir : systemgeneratordir)
1750
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001751if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001752 executable('systemd-cryptsetup',
1753 'src/cryptsetup/cryptsetup.c',
1754 include_directories : includes,
1755 link_with : [libshared],
1756 dependencies : [libcryptsetup],
1757 install_rpath : rootlibexecdir,
1758 install : true,
1759 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001760
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 executable('systemd-cryptsetup-generator',
1762 'src/cryptsetup/cryptsetup-generator.c',
1763 include_directories : includes,
1764 link_with : [libshared],
1765 dependencies : [libcryptsetup],
1766 install_rpath : rootlibexecdir,
1767 install : true,
1768 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001769
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 executable('systemd-veritysetup',
1771 'src/veritysetup/veritysetup.c',
1772 include_directories : includes,
1773 link_with : [libshared],
1774 dependencies : [libcryptsetup],
1775 install_rpath : rootlibexecdir,
1776 install : true,
1777 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001778
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 executable('systemd-veritysetup-generator',
1780 'src/veritysetup/veritysetup-generator.c',
1781 include_directories : includes,
1782 link_with : [libshared],
1783 dependencies : [libcryptsetup],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001787endif
1788
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001789if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001790 executable('systemd-sysv-generator',
1791 'src/sysv-generator/sysv-generator.c',
1792 include_directories : includes,
1793 link_with : [libshared],
1794 install_rpath : rootlibexecdir,
1795 install : true,
1796 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001798 executable('systemd-rc-local-generator',
1799 'src/rc-local-generator/rc-local-generator.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805endif
1806
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001807if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 executable('systemd-hostnamed',
1809 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001810 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001811 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001812 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 install : true,
1814 install_dir : rootlibexecdir)
1815
1816 exe = executable('hostnamectl',
1817 'src/hostname/hostnamectl.c',
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true)
1822 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001823endif
1824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001825if conf.get('ENABLE_LOCALED') == 1
1826 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 # logind will load libxkbcommon.so dynamically on its own
1828 deps = [libdl]
1829 else
1830 deps = []
1831 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001832
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001833 executable('systemd-localed',
1834 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001835 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001836 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001837 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001838 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 install : true,
1840 install_dir : rootlibexecdir)
1841
1842 exe = executable('localectl',
1843 localectl_sources,
1844 include_directories : includes,
1845 link_with : [libshared],
1846 install_rpath : rootlibexecdir,
1847 install : true)
1848 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001849endif
1850
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001851if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 executable('systemd-timedated',
1853 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001855 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001856 install_rpath : rootlibexecdir,
1857 install : true,
1858 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001859endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860
Yu Watanabe6129ec82018-05-03 18:07:43 +09001861if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001862 exe = executable('timedatectl',
1863 'src/timedate/timedatectl.c',
1864 include_directories : includes,
1865 install_rpath : rootlibexecdir,
1866 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001867 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001868 install : true)
1869 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001870endif
1871
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001872if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001873 executable('systemd-timesyncd',
1874 systemd_timesyncd_sources,
1875 include_directories : includes,
1876 link_with : [libshared],
1877 dependencies : [threads,
1878 libm],
1879 install_rpath : rootlibexecdir,
1880 install : true,
1881 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001882
1883 executable('systemd-time-wait-sync',
1884 'src/time-wait-sync/time-wait-sync.c',
1885 include_directories : includes,
1886 link_with : [libshared],
1887 install_rpath : rootlibexecdir,
1888 install : true,
1889 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001890endif
1891
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001892if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001893 executable('systemd-machined',
1894 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001895 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001896 link_with : [libmachine_core,
1897 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001898 install_rpath : rootlibexecdir,
1899 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 install_dir : rootlibexecdir)
1901
1902 exe = executable('machinectl',
1903 'src/machine/machinectl.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [threads,
1907 libxz,
1908 liblz4],
1909 install_rpath : rootlibexecdir,
1910 install : true,
1911 install_dir : rootbindir)
1912 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913endif
1914
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001915if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 executable('systemd-importd',
1917 systemd_importd_sources,
1918 include_directories : includes,
1919 link_with : [libshared],
1920 dependencies : [threads],
1921 install_rpath : rootlibexecdir,
1922 install : true,
1923 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001924
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 systemd_pull = executable('systemd-pull',
1926 systemd_pull_sources,
1927 include_directories : includes,
1928 link_with : [libshared],
1929 dependencies : [libcurl,
1930 libz,
1931 libbzip2,
1932 libxz,
1933 libgcrypt],
1934 install_rpath : rootlibexecdir,
1935 install : true,
1936 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001937
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001938 systemd_import = executable('systemd-import',
1939 systemd_import_sources,
1940 include_directories : includes,
1941 link_with : [libshared],
1942 dependencies : [libcurl,
1943 libz,
1944 libbzip2,
1945 libxz],
1946 install_rpath : rootlibexecdir,
1947 install : true,
1948 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001949
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001950 systemd_export = executable('systemd-export',
1951 systemd_export_sources,
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [libcurl,
1955 libz,
1956 libbzip2,
1957 libxz],
1958 install_rpath : rootlibexecdir,
1959 install : true,
1960 install_dir : rootlibexecdir)
1961 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001962endif
1963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001964if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 exe = executable('systemd-journal-upload',
1966 systemd_journal_upload_sources,
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [threads,
1970 libcurl,
1971 libgnutls,
1972 libxz,
1973 liblz4],
1974 install_rpath : rootlibexecdir,
1975 install : true,
1976 install_dir : rootlibexecdir)
1977 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001978endif
1979
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001980if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001981 s_j_remote = executable('systemd-journal-remote',
1982 systemd_journal_remote_sources,
1983 include_directories : includes,
1984 link_with : [libshared],
1985 dependencies : [threads,
1986 libmicrohttpd,
1987 libgnutls,
1988 libxz,
1989 liblz4],
1990 install_rpath : rootlibexecdir,
1991 install : true,
1992 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001994 s_j_gatewayd = executable('systemd-journal-gatewayd',
1995 systemd_journal_gatewayd_sources,
1996 include_directories : includes,
1997 link_with : [libshared],
1998 dependencies : [threads,
1999 libmicrohttpd,
2000 libgnutls,
2001 libxz,
2002 liblz4],
2003 install_rpath : rootlibexecdir,
2004 install : true,
2005 install_dir : rootlibexecdir)
2006 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002007endif
2008
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002009if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002010 executable('systemd-coredump',
2011 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002012 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002013 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002014 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 libacl,
2016 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 libxz,
2018 liblz4],
2019 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 install : true,
2021 install_dir : rootlibexecdir)
2022
2023 exe = executable('coredumpctl',
2024 coredumpctl_sources,
2025 include_directories : includes,
2026 link_with : [libshared],
2027 dependencies : [threads,
2028 libxz,
2029 liblz4],
2030 install_rpath : rootlibexecdir,
2031 install : true)
2032 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002033endif
2034
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002035if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002036 exe = executable('systemd-binfmt',
2037 'src/binfmt/binfmt.c',
2038 include_directories : includes,
2039 link_with : [libshared],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootlibexecdir)
2043 public_programs += [exe]
2044
2045 meson.add_install_script('sh', '-c',
2046 mkdir_p.format(binfmtdir))
2047 meson.add_install_script('sh', '-c',
2048 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2049endif
2050
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002051if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-vconsole-setup',
2053 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002054 include_directories : includes,
2055 link_with : [libshared],
2056 install_rpath : rootlibexecdir,
2057 install : true,
2058 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002059endif
2060
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002061if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002062 executable('systemd-random-seed',
2063 'src/random-seed/random-seed.c',
2064 include_directories : includes,
2065 link_with : [libshared],
2066 install_rpath : rootlibexecdir,
2067 install : true,
2068 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002069endif
2070
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002071if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 executable('systemd-firstboot',
2073 'src/firstboot/firstboot.c',
2074 include_directories : includes,
2075 link_with : [libshared],
2076 dependencies : [libcrypt],
2077 install_rpath : rootlibexecdir,
2078 install : true,
2079 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002080endif
2081
2082executable('systemd-remount-fs',
2083 'src/remount-fs/remount-fs.c',
2084 'src/core/mount-setup.c',
2085 'src/core/mount-setup.h',
2086 include_directories : includes,
2087 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002088 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002089 install : true,
2090 install_dir : rootlibexecdir)
2091
2092executable('systemd-machine-id-setup',
2093 'src/machine-id-setup/machine-id-setup-main.c',
2094 'src/core/machine-id-setup.c',
2095 'src/core/machine-id-setup.h',
2096 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002097 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002098 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002099 install : true,
2100 install_dir : rootbindir)
2101
2102executable('systemd-fsck',
2103 'src/fsck/fsck.c',
2104 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002105 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002106 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002107 install : true,
2108 install_dir : rootlibexecdir)
2109
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002110executable('systemd-growfs',
2111 'src/partition/growfs.c',
2112 include_directories : includes,
2113 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002114 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002115 install_rpath : rootlibexecdir,
2116 install : true,
2117 install_dir : rootlibexecdir)
2118
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002119executable('systemd-makefs',
2120 'src/partition/makefs.c',
2121 include_directories : includes,
2122 link_with : [libshared],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
2126
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127executable('systemd-sleep',
2128 'src/sleep/sleep.c',
2129 include_directories : includes,
2130 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002131 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002132 install : true,
2133 install_dir : rootlibexecdir)
2134
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002135exe = executable('systemd-sysctl',
2136 'src/sysctl/sysctl.c',
2137 include_directories : includes,
2138 link_with : [libshared],
2139 install_rpath : rootlibexecdir,
2140 install : true,
2141 install_dir : rootlibexecdir)
2142public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002143
2144executable('systemd-ac-power',
2145 'src/ac-power/ac-power.c',
2146 include_directories : includes,
2147 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002148 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002149 install : true,
2150 install_dir : rootlibexecdir)
2151
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002152exe = executable('systemd-detect-virt',
2153 'src/detect-virt/detect-virt.c',
2154 include_directories : includes,
2155 link_with : [libshared],
2156 install_rpath : rootlibexecdir,
2157 install : true)
2158public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002159
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002160exe = executable('systemd-delta',
2161 'src/delta/delta.c',
2162 include_directories : includes,
2163 link_with : [libshared],
2164 install_rpath : rootlibexecdir,
2165 install : true)
2166public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002167
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002168exe = executable('systemd-escape',
2169 'src/escape/escape.c',
2170 include_directories : includes,
2171 link_with : [libshared],
2172 install_rpath : rootlibexecdir,
2173 install : true,
2174 install_dir : rootbindir)
2175public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002176
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002177exe = executable('systemd-notify',
2178 'src/notify/notify.c',
2179 include_directories : includes,
2180 link_with : [libshared],
2181 install_rpath : rootlibexecdir,
2182 install : true,
2183 install_dir : rootbindir)
2184public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002185
2186executable('systemd-volatile-root',
2187 'src/volatile-root/volatile-root.c',
2188 include_directories : includes,
2189 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002190 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191 install : true,
2192 install_dir : rootlibexecdir)
2193
2194executable('systemd-cgroups-agent',
2195 'src/cgroups-agent/cgroups-agent.c',
2196 include_directories : includes,
2197 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002198 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199 install : true,
2200 install_dir : rootlibexecdir)
2201
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002202exe = executable('systemd-path',
2203 'src/path/path.c',
2204 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002205 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002206 install_rpath : rootlibexecdir,
2207 install : true)
2208public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002210exe = executable('systemd-ask-password',
2211 'src/ask-password/ask-password.c',
2212 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002213 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002214 install_rpath : rootlibexecdir,
2215 install : true,
2216 install_dir : rootbindir)
2217public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218
2219executable('systemd-reply-password',
2220 'src/reply-password/reply-password.c',
2221 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002222 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002223 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002224 install : true,
2225 install_dir : rootlibexecdir)
2226
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002227exe = executable('systemd-tty-ask-password-agent',
2228 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2229 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002230 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002231 install_rpath : rootlibexecdir,
2232 install : true,
2233 install_dir : rootbindir)
2234public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002235
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002236exe = executable('systemd-cgls',
2237 'src/cgls/cgls.c',
2238 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002239 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002240 install_rpath : rootlibexecdir,
2241 install : true)
2242public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002243
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002244exe = executable('systemd-cgtop',
2245 'src/cgtop/cgtop.c',
2246 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002247 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002248 install_rpath : rootlibexecdir,
2249 install : true)
2250public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002251
2252executable('systemd-initctl',
2253 'src/initctl/initctl.c',
2254 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002255 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002256 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002257 install : true,
2258 install_dir : rootlibexecdir)
2259
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002260exe = executable('systemd-mount',
2261 'src/mount/mount-tool.c',
2262 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002263 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002264 install_rpath : rootlibexecdir,
2265 install : true)
2266public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002267
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002268meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002269 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002270
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271exe = executable('systemd-run',
2272 'src/run/run.c',
2273 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002274 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002275 install_rpath : rootlibexecdir,
2276 install : true)
2277public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002279exe = executable('systemd-stdio-bridge',
2280 'src/stdio-bridge/stdio-bridge.c',
2281 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002282 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002283 install_rpath : rootlibexecdir,
2284 install : true)
2285public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002286
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002287exe = executable('busctl',
2288 'src/busctl/busctl.c',
2289 'src/busctl/busctl-introspect.c',
2290 'src/busctl/busctl-introspect.h',
2291 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002292 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002293 install_rpath : rootlibexecdir,
2294 install : true)
2295public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002297if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002298 exe = executable('systemd-sysusers',
2299 'src/sysusers/sysusers.c',
2300 include_directories : includes,
2301 link_with : [libshared],
2302 install_rpath : rootlibexecdir,
2303 install : true,
2304 install_dir : rootbindir)
2305 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306endif
2307
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002308if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002309 exe = executable('systemd-tmpfiles',
2310 'src/tmpfiles/tmpfiles.c',
2311 include_directories : includes,
2312 link_with : [libshared],
2313 dependencies : [libacl],
2314 install_rpath : rootlibexecdir,
2315 install : true,
2316 install_dir : rootbindir)
2317 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002318
2319 test('test-systemd-tmpfiles',
2320 test_systemd_tmpfiles_py,
2321 args : exe.full_path())
2322 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323endif
2324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 exe = executable('systemd-hwdb',
2327 'src/hwdb/hwdb.c',
2328 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2329 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002330 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002331 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002332 install : true,
2333 install_dir : rootbindir)
2334 public_programs += [exe]
2335endif
2336
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002337if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002338 executable('systemd-quotacheck',
2339 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002340 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002341 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002342 install_rpath : rootlibexecdir,
2343 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002344 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002345endif
2346
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002347exe = executable('systemd-socket-proxyd',
2348 'src/socket-proxy/socket-proxyd.c',
2349 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002350 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002351 dependencies : [threads],
2352 install_rpath : rootlibexecdir,
2353 install : true,
2354 install_dir : rootlibexecdir)
2355public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357exe = executable('systemd-udevd',
2358 systemd_udevd_sources,
2359 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002360 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002361 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002363 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002364 dependencies : [threads,
2365 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002367 libacl,
2368 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002369 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 install : true,
2371 install_dir : rootlibexecdir)
2372public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002374exe = executable('udevadm',
2375 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002376 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002377 include_directories : includes,
2378 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002380 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002381 dependencies : [threads,
2382 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002383 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002384 libacl,
2385 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002386 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002387 install : true,
2388 install_dir : rootbindir)
2389public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
2391executable('systemd-shutdown',
2392 systemd_shutdown_sources,
2393 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002394 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002395 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002396 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002397 install : true,
2398 install_dir : rootlibexecdir)
2399
2400executable('systemd-update-done',
2401 'src/update-done/update-done.c',
2402 include_directories : includes,
2403 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002404 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405 install : true,
2406 install_dir : rootlibexecdir)
2407
2408executable('systemd-update-utmp',
2409 'src/update-utmp/update-utmp.c',
2410 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002411 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002413 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414 install : true,
2415 install_dir : rootlibexecdir)
2416
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002417if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002418 executable('systemd-modules-load',
2419 'src/modules-load/modules-load.c',
2420 include_directories : includes,
2421 link_with : [libshared],
2422 dependencies : [libkmod],
2423 install_rpath : rootlibexecdir,
2424 install : true,
2425 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002426
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002427 meson.add_install_script('sh', '-c',
2428 mkdir_p.format(modulesloaddir))
2429 meson.add_install_script('sh', '-c',
2430 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431endif
2432
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433exe = executable('systemd-nspawn',
2434 systemd_nspawn_sources,
2435 'src/core/mount-setup.c', # FIXME: use a variable?
2436 'src/core/mount-setup.h',
2437 'src/core/loopback-setup.c',
2438 'src/core/loopback-setup.h',
2439 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002440 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441 dependencies : [libacl,
2442 libblkid,
2443 libseccomp,
2444 libselinux],
2445 install_rpath : rootlibexecdir,
2446 install : true)
2447public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002449if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002450 executable('systemd-networkd',
2451 systemd_networkd_sources,
2452 include_directories : includes,
2453 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002454 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002455 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002456 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002457 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002458 install_rpath : rootlibexecdir,
2459 install : true,
2460 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002461
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462 executable('systemd-networkd-wait-online',
2463 systemd_networkd_wait_online_sources,
2464 include_directories : includes,
2465 link_with : [libnetworkd_core,
2466 libshared],
2467 install_rpath : rootlibexecdir,
2468 install : true,
2469 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002470
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002471 exe = executable('networkctl',
2472 networkctl_sources,
2473 include_directories : includes,
2474 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002475 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002476 install_rpath : rootlibexecdir,
2477 install : true,
2478 install_dir : rootbindir)
2479 public_programs += [exe]
2480endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002481
2482executable('systemd-sulogin-shell',
2483 ['src/sulogin-shell/sulogin-shell.c'],
2484 include_directories : includes,
2485 link_with : [libshared],
2486 install_rpath : rootlibexecdir,
2487 install : true,
2488 install_dir : rootlibexecdir)
2489
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002490############################################################
2491
2492foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002493 sources = tuple[0]
2494 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2495 dependencies = tuple[2]
2496 condition = tuple.length() >= 4 ? tuple[3] : ''
2497 type = tuple.length() >= 5 ? tuple[4] : ''
2498 defs = tuple.length() >= 6 ? tuple[5] : []
2499 incs = tuple.length() >= 7 ? tuple[6] : includes
2500 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002501
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002502 name = sources[0].split('/')[-1].split('.')[0]
2503 if type.startswith('timeout=')
2504 timeout = type.split('=')[1].to_int()
2505 type = ''
2506 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002507 if want_tests == 'false'
2508 message('Not compiling @0@ because tests is set to false'.format(name))
2509 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002510 exe = executable(
2511 name,
2512 sources,
2513 include_directories : incs,
2514 link_with : link_with,
2515 dependencies : dependencies,
2516 c_args : defs,
2517 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002518 install : install_tests,
2519 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002520
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521 if type == 'manual'
2522 message('@0@ is a manual test'.format(name))
2523 elif type == 'unsafe' and want_tests != 'unsafe'
2524 message('@0@ is an unsafe test'.format(name))
2525 else
2526 test(name, exe,
2527 env : test_env,
2528 timeout : timeout)
2529 endif
2530 else
2531 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2532 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002533endforeach
2534
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002535exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002536 'test-libsystemd-sym',
2537 test_libsystemd_sym_c,
2538 include_directories : includes,
2539 link_with : [libsystemd],
2540 install : install_tests,
2541 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002542test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002543
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002544exe = executable(
2545 'test-libsystemd-static-sym',
2546 test_libsystemd_sym_c,
2547 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002548 link_with : [install_libsystemd_static],
2549 dependencies : [threads], # threads is already included in dependencies on the library,
2550 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002551 build_by_default : static_libsystemd_pic,
2552 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002553 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002554if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002555 test('test-libsystemd-static-sym', exe)
2556endif
2557
2558exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002559 'test-libudev-sym',
2560 test_libudev_sym_c,
2561 include_directories : includes,
2562 c_args : ['-Wno-deprecated-declarations'],
2563 link_with : [libudev],
2564 install : install_tests,
2565 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002566test('test-libudev-sym', exe)
2567
2568exe = executable(
2569 'test-libudev-static-sym',
2570 test_libudev_sym_c,
2571 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002572 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002573 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002574 build_by_default : static_libudev_pic,
2575 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002576 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002577if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002578 test('test-libudev-static-sym', exe)
2579endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002580
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002581############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002582
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002583fuzzer_exes = []
2584
2585foreach tuple : fuzzers
2586 sources = tuple[0]
2587 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2588 dependencies = tuple[2]
2589 defs = tuple.length() >= 4 ? tuple[3] : []
2590 incs = tuple.length() >= 5 ? tuple[4] : includes
2591
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002592 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002593 dependencies += fuzzing_engine
2594 else
2595 sources += 'src/fuzz/fuzz-main.c'
2596 endif
2597
2598 name = sources[0].split('/')[-1].split('.')[0]
2599
2600 fuzzer_exes += executable(
2601 name,
2602 sources,
2603 include_directories : [incs, include_directories('src/fuzz')],
2604 link_with : link_with,
2605 dependencies : dependencies,
2606 c_args : defs,
2607 install : false)
2608endforeach
2609
2610run_target('fuzzers',
2611 depends : fuzzer_exes,
2612 command : ['true'])
2613
2614############################################################
2615
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002616make_directive_index_py = find_program('tools/make-directive-index.py')
2617make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002618xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002619hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002620
2621subdir('units')
2622subdir('sysctl.d')
2623subdir('sysusers.d')
2624subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002625subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002626subdir('hwdb')
2627subdir('network')
2628subdir('man')
2629subdir('shell-completion/bash')
2630subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002631subdir('doc/sysvinit')
2632subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002633
2634# FIXME: figure out if the warning is true:
2635# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2636install_subdir('factory/etc',
2637 install_dir : factorydir)
2638
2639
2640install_data('xorg/50-systemd-user.sh',
2641 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002642install_data('modprobe.d/systemd.conf',
2643 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002644install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002646 'NEWS',
2647 'README',
2648 'doc/CODING_STYLE',
2649 'doc/DISTRO_PORTING',
2650 'doc/ENVIRONMENT.md',
2651 'doc/HACKING',
2652 'doc/TRANSIENT-SETTINGS.md',
2653 'doc/TRANSLATORS',
2654 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2656 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002657
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002658meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2659meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2660
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002661############################################################
2662
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002663meson_check_help = find_program('tools/meson-check-help.sh')
2664
2665foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002666 name = exec.full_path().split('/')[-1]
2667 test('check-help-' + name,
2668 meson_check_help,
2669 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002670endforeach
2671
2672############################################################
2673
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002674# Enable tests for all supported sanitizers
2675foreach tuple : sanitizers
2676 sanitizer = tuple[0]
2677 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002678
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002679 have = run_command(check_compilation_sh,
2680 cc.cmd_array(), '-x', 'c',
2681 '-fsanitize=@0@'.format(sanitizer),
2682 '-include', link_test_c).returncode() == 0
2683 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002684
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002685 if have
2686 prev = ''
2687 foreach p : fuzz_regression_tests
2688 b = p.split('/')[-2]
2689 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002690
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002691 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002692
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002693 if name != prev
2694 if want_tests == 'false'
2695 message('Not compiling @0@ because tests is set to false'.format(name))
2696 elif slow_tests
2697 exe = custom_target(
2698 name,
2699 output : name,
2700 depends : build,
2701 command : [env, 'ln', '-fs',
2702 join_paths(build.full_path(), b),
2703 '@OUTPUT@'],
2704 build_by_default : true)
2705 else
2706 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2707 endif
2708 endif
2709 prev = name
2710
2711 if want_tests != 'false' and slow_tests
2712 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2713 env,
2714 args : [exe.full_path(),
2715 join_paths(meson.source_root(),
2716 'test/fuzz-regressions',
2717 p)])
2718 endif
2719 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002720 endif
2721endforeach
2722
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002723
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002724############################################################
2725
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002726if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 all_files = run_command(
2728 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002729 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002730 'ls-files',
2731 ':/*.[ch]'])
2732 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002733
userwithuide85a6902017-08-09 13:41:44 +00002734 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002735 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002736 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002737 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002738 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002739 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002740 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002741 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002742endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002743
2744if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002745 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002746 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002747 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002749endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002750
2751if git.found()
2752 git_head = run_command(
2753 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002754 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002755 'rev-parse', 'HEAD']).stdout().strip()
2756 git_head_short = run_command(
2757 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002758 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002759 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2760
2761 run_target(
2762 'git-snapshot',
2763 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002764 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002765 git_head_short),
2766 '--prefix', 'systemd-@0@/'.format(git_head),
2767 'HEAD'])
2768endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002769
2770############################################################
2771
Lennart Poettering51b13862017-12-20 12:51:14 +01002772meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2773run_target(
2774 'check-api-docs',
2775 depends : [man, libsystemd, libudev],
2776 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2777
2778############################################################
2779
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002780status = [
2781 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2782
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002783 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002784 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002785 'prefix directory: @0@'.format(prefixdir),
2786 'rootprefix directory: @0@'.format(rootprefixdir),
2787 'sysconf directory: @0@'.format(sysconfdir),
2788 'include directory: @0@'.format(includedir),
2789 'lib directory: @0@'.format(libdir),
2790 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002791 'SysV init scripts: @0@'.format(sysvinit_path),
2792 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002793 'PAM modules directory: @0@'.format(pamlibdir),
2794 'PAM configuration directory: @0@'.format(pamconfdir),
2795 'RPM macros directory: @0@'.format(rpmmacrosdir),
2796 'modprobe.d directory: @0@'.format(modprobedir),
2797 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2798 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2799 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2800 'bash completions directory: @0@'.format(bashcompletiondir),
2801 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002802 'extra start script: @0@'.format(get_option('rc-local')),
2803 'extra stop script: @0@'.format(get_option('halt-local')),
2804 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2805 get_option('debug-tty')),
2806 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002807 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002808 'maximum system UID: @0@'.format(system_uid_max),
2809 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002810 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2811 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2812 'minimum container UID base: @0@'.format(container_uid_base_min),
2813 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002814 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002815 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002816 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002817 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002818 'nobody user name: @0@'.format(nobody_user),
2819 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002820 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002821 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002822
2823 'default DNSSEC mode: @0@'.format(default_dnssec),
2824 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2825 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2826
2827alt_dns_servers = '\n '.join(dns_servers.split(' '))
2828alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2829status += [
2830 'default DNS servers: @0@'.format(alt_dns_servers),
2831 'default NTP servers: @0@'.format(alt_ntp_servers)]
2832
2833alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2834 '@@0@'.format(time_epoch)).stdout().strip()
2835status += [
2836 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2837
2838# TODO:
2839# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2840# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2841# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2842
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002843if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002844 status += [
2845 'efi arch: @0@'.format(efi_arch)]
2846
2847 if have_gnu_efi
2848 status += [
2849 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2850 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002851 'EFI lib directory: @0@'.format(efi_libdir),
2852 'EFI lds directory: @0@'.format(efi_ldsdir),
2853 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002854 endif
2855endif
2856
2857found = []
2858missing = []
2859
2860foreach tuple : [
2861 ['libcryptsetup'],
2862 ['PAM'],
2863 ['AUDIT'],
2864 ['IMA'],
2865 ['AppArmor'],
2866 ['SELinux'],
2867 ['SECCOMP'],
2868 ['SMACK'],
2869 ['zlib'],
2870 ['xz'],
2871 ['lz4'],
2872 ['bzip2'],
2873 ['ACL'],
2874 ['gcrypt'],
2875 ['qrencode'],
2876 ['microhttpd'],
2877 ['gnutls'],
2878 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002879 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002880 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002881 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002882 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002883 ['libiptc'],
2884 ['elfutils'],
2885 ['binfmt'],
2886 ['vconsole'],
2887 ['quotacheck'],
2888 ['tmpfiles'],
2889 ['environment.d'],
2890 ['sysusers'],
2891 ['firstboot'],
2892 ['randomseed'],
2893 ['backlight'],
2894 ['rfkill'],
2895 ['logind'],
2896 ['machined'],
2897 ['importd'],
2898 ['hostnamed'],
2899 ['timedated'],
2900 ['timesyncd'],
2901 ['localed'],
2902 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002903 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002904 ['coredump'],
2905 ['polkit'],
2906 ['legacy pkla', install_polkit_pkla],
2907 ['efi'],
2908 ['gnu-efi', have_gnu_efi],
2909 ['kmod'],
2910 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002911 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002912 ['blkid'],
2913 ['dbus'],
2914 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002915 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002916 ['hwdb'],
2917 ['tpm'],
2918 ['man pages', want_man],
2919 ['html pages', want_html],
2920 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002921 ['SysV compat'],
2922 ['utmp'],
2923 ['ldconfig'],
2924 ['hibernate'],
2925 ['adm group', get_option('adm-group')],
2926 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002927 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002928 ['debug hashmap'],
2929 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02002930 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002931]
2932
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002933 if tuple.length() >= 2
2934 cond = tuple[1]
2935 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002936 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2937 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002938 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002939 endif
2940 if cond
2941 found += [tuple[0]]
2942 else
2943 missing += [tuple[0]]
2944 endif
2945endforeach
2946
2947status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002948 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002949 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002950 '',
2951 'disabled features: @0@'.format(', '.join(missing)),
2952 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002953message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002954
2955if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09002956 warning('\n' +
2957 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2958 'systemd used fixed names for unit file directories and other paths, so anything\n' +
2959 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002960endif