blob: 9c6bdf91b1f73e1918414c332f8d2e0f2ae301be [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-Szmek671677d2017-04-27 20:51:34 -0400763debug = get_option('debug')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200764enable_debug_hashmap = false
765enable_debug_mmap_cache = false
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400766if debug != ''
767 foreach name : debug.split(',')
768 if name == 'hashmap'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200769 enable_debug_hashmap = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400770 elif name == 'mmap-cache'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200771 enable_debug_mmap_cache = true
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400772 else
773 message('unknown debug option "@0@", ignoring'.format(name))
774 endif
775 endforeach
776endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200777conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
778conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400779
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400780#####################################################################
781
782threads = dependency('threads')
783librt = cc.find_library('rt')
784libm = cc.find_library('m')
785libdl = cc.find_library('dl')
786libcrypt = cc.find_library('crypt')
787
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400788libcap = dependency('libcap', required : false)
789if not libcap.found()
790 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
791 libcap = cc.find_library('cap')
792endif
793
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400794libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100795 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796
797want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500798if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400799 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400800 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400801 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200802 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400803else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400805 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400806endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200807conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808
809want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500810if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400811 libselinux = dependency('libselinux',
812 version : '>= 2.1.9',
813 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200814 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400815else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400817 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400818endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200819conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820
821want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500822if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400823 libapparmor = dependency('libapparmor',
824 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200825 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400826else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200830conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832smack_run_label = get_option('smack-run-label')
833if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
836
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400837want_polkit = get_option('polkit')
838install_polkit = false
839install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500840if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400841 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400842
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 libpolkit = dependency('polkit-gobject-1',
844 required : false)
845 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
846 message('Old polkit detected, will install pkla files')
847 install_polkit_pkla = true
848 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400849endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200850conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400852want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500853if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400854 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400856else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858 libacl = []
859endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200860conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400861
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400862want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500863if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400864 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200865 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400866else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400868 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400869endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200870conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871
872want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500873if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400874 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200875 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400878 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200880conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881
882want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500883if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 libkmod = dependency('libkmod',
885 version : '>= 15',
886 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400890 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200892conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893
894want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500895if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400896 libpam = cc.find_library('pam', required : want_pam == 'true')
897 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200898 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400899else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400901 libpam = []
902 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905
906want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500907if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libmicrohttpd = dependency('libmicrohttpd',
909 version : '>= 0.9.33',
910 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200911 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917
918want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500919if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400920 libcryptsetup = dependency('libcryptsetup',
921 version : '>= 1.6.0',
922 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200923 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400924else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400927endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200928conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929
930want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500931if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400932 libcurl = dependency('libcurl',
933 version : '>= 7.32.0',
934 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400936else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400938 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941
942want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400943want_libidn2 = get_option('libidn2')
944if want_libidn == 'true' and want_libidn2 == 'true'
945 error('libidn and libidn2 cannot be requested simultaneously')
946endif
947
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500948if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libidn = dependency('libidn',
950 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200951 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400952else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400954 libidn = []
955endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500957if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400958 # libidn is used for both libidn and libidn2 objects
959 libidn = dependency('libidn2',
960 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200961 have = libidn.found()
962else
963 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200965conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966
967want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500968if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400969 libiptc = dependency('libiptc',
970 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200971 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400972else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400974 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977
978want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500979if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400980 libqrencode = dependency('libqrencode',
981 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200982 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400985 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400989want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
992 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400994else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = false
996endif
997if not have
998 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400999 libgcrypt = []
1000 libgpg_error = []
1001endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001002conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001003
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001005if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001006 libgnutls = dependency('gnutls',
1007 version : '>= 3.1.4',
1008 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001012 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001013endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001014conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015
1016want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001017if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libdw = dependency('libdw',
1019 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001020 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001023 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001024endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001025conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026
1027want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001028if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001029 libz = dependency('zlib',
1030 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001031 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001032else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001035endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001036conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037
1038want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001039if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libbzip2 = cc.find_library('bz2',
1041 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001045 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001046endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048
1049want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001050if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001051 libxz = dependency('liblzma',
1052 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001054else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001056 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059
1060want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001061if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001062 liblz4 = dependency('liblz4',
1063 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001064 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001065else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001067 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001071want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001072if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001073 libxkbcommon = dependency('xkbcommon',
1074 version : '>= 0.3.0',
1075 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001077else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079 libxkbcommon = []
1080endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001082
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001083want_pcre2 = get_option('pcre2')
1084if want_pcre2 != 'false'
1085 libpcre2 = dependency('libpcre2-8',
1086 required : want_pcre2 == 'true')
1087 have = libpcre2.found()
1088else
1089 have = false
1090 libpcre2 = []
1091endif
1092conf.set10('HAVE_PCRE2', have)
1093
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001094want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001095if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001096 libglib = dependency('glib-2.0',
1097 version : '>= 2.22.0',
1098 required : want_glib == 'true')
1099 libgobject = dependency('gobject-2.0',
1100 version : '>= 2.22.0',
1101 required : want_glib == 'true')
1102 libgio = dependency('gio-2.0',
1103 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001104 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001105else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001106 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001107 libglib = []
1108 libgobject = []
1109 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001110endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001112
1113want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001114if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 libdbus = dependency('dbus-1',
1116 version : '>= 1.3.2',
1117 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124
Yu Watanabe42303dc2017-06-18 05:22:32 +09001125default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001126if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001127 default_dnssec = 'no'
1128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001130 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1131 default_dnssec = 'no'
1132endif
1133conf.set('DEFAULT_DNSSEC_MODE',
1134 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1135substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1136
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001137want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001138if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001139 have = (conf.get('HAVE_LIBCURL') == 1 and
1140 conf.get('HAVE_ZLIB') == 1 and
1141 conf.get('HAVE_BZIP2') == 1 and
1142 conf.get('HAVE_XZ') == 1 and
1143 conf.get('HAVE_GCRYPT') == 1)
1144 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001145 error('importd support was requested, but dependencies are not available')
1146 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001147else
1148 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001150conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151
1152want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001153if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1155 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001156 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1157 # it's possible to build one without the other. Complain only if
1158 # support was explictly requested. The auxiliary files like sysusers
1159 # config should be installed when any of the programs are built.
1160 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1161 error('remote support was requested, but dependencies are not available')
1162 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = have_deps[0] or have_deps[1]
1164else
1165 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001166endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001167conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001169foreach term : ['utmp',
1170 'hibernate',
1171 'environment-d',
1172 'binfmt',
1173 'coredump',
1174 'resolve',
1175 'logind',
1176 'hostnamed',
1177 'localed',
1178 'machined',
1179 'networkd',
1180 'timedated',
1181 'timesyncd',
1182 'myhostname',
1183 'firstboot',
1184 'randomseed',
1185 'backlight',
1186 'vconsole',
1187 'quotacheck',
1188 'sysusers',
1189 'tmpfiles',
1190 'hwdb',
1191 'rfkill',
1192 'ldconfig',
1193 'efi',
1194 'tpm',
1195 'ima',
1196 'smack',
1197 'gshadow',
1198 'idn',
1199 'nss-systemd']
1200 have = get_option(term)
1201 name = 'ENABLE_' + term.underscorify().to_upper()
1202 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001203endforeach
1204
Yu Watanabe348b4432018-05-07 18:17:35 +09001205conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001206
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001207want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001208install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001209slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001211fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001212
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001213conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001214
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001215#####################################################################
1216
1217if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001218 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001219
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001220 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001221 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001222 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 elif efi_arch == 'x86_64'
1224 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001225 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 elif efi_arch == 'arm'
1227 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001228 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 elif efi_arch == 'aarch64'
1230 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001231 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 else
1233 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001234 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001236
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001237 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001238 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001239
1240 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001241else
1242 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001243endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001245
1246#####################################################################
1247
1248config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001249 output : 'config.h',
1250 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001251
Yu Watanabe348b4432018-05-07 18:17:35 +09001252meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1253
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254includes = include_directories('src/basic',
1255 'src/shared',
1256 'src/systemd',
1257 'src/journal',
1258 'src/resolve',
1259 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001260 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001261 'src/login',
1262 'src/udev',
1263 'src/libudev',
1264 'src/core',
1265 'src/libsystemd/sd-bus',
1266 'src/libsystemd/sd-device',
1267 'src/libsystemd/sd-hwdb',
1268 'src/libsystemd/sd-id128',
1269 'src/libsystemd/sd-netlink',
1270 'src/libsystemd/sd-network',
1271 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001272 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001273
1274add_project_arguments('-include', 'config.h', language : 'c')
1275
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001276subdir('po')
1277subdir('catalog')
1278subdir('src/systemd')
1279subdir('src/basic')
1280subdir('src/libsystemd')
1281subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001282subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001283subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001284
1285libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001286 'journal-core',
1287 libjournal_core_sources,
1288 journald_gperf_c,
1289 include_directories : includes,
1290 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001292libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001294 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001295 '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 +02001296 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001297 include_directories : includes,
1298 link_args : ['-shared',
1299 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001300 link_with : [libbasic,
1301 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001302 link_whole : [libsystemd_static,
1303 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001304 dependencies : [threads,
1305 librt,
1306 libxz,
1307 liblz4],
1308 link_depends : libsystemd_sym,
1309 install : true,
1310 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001311
Davide Cavalca70848ec2018-04-09 02:43:35 -07001312static_libsystemd = get_option('static-libsystemd')
1313static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1314
1315install_libsystemd_static = static_library(
1316 'systemd',
1317 libsystemd_sources,
1318 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001319 basic_sources,
1320 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001321 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001322 build_by_default : static_libsystemd != 'false',
1323 install : static_libsystemd != 'false',
1324 install_dir : rootlibdir,
1325 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1326 dependencies : [threads,
1327 librt,
1328 libxz,
1329 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001330 libcap,
1331 libblkid,
1332 libmount,
1333 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001334 libgcrypt],
1335 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1336
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001337############################################################
1338
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001339# binaries that have --help and are intended for use by humans,
1340# usually, but not always, installed in /bin.
1341public_programs = []
1342
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343subdir('src/libudev')
1344subdir('src/shared')
1345subdir('src/core')
1346subdir('src/udev')
1347subdir('src/network')
1348
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001349subdir('src/analyze')
1350subdir('src/journal-remote')
1351subdir('src/coredump')
1352subdir('src/hostname')
1353subdir('src/import')
1354subdir('src/kernel-install')
1355subdir('src/locale')
1356subdir('src/machine')
1357subdir('src/nspawn')
1358subdir('src/resolve')
1359subdir('src/timedate')
1360subdir('src/timesync')
1361subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001362subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001363
1364subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001365subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001366subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001367subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001368
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001369############################################################
1370
1371# only static linking apart from libdl, to make sure that the
1372# module is linked to all libraries that it uses.
1373test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001374 'test-dlopen',
1375 test_dlopen_c,
1376 include_directories : includes,
1377 link_with : [libbasic],
1378 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001379
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001380foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001381 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001382 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001383 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001384
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001385 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 if condition
1387 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001388
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1390 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001391
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 nss = shared_library(
1393 'nss_' + module,
1394 'src/nss-@0@/nss-@0@.c'.format(module),
1395 version : '2',
1396 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001397 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1398 link_args : ['-Wl,-z,nodelete',
1399 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001400 '-Wl,--version-script=' + version_script_arg,
1401 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001402 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001403 libbasic],
1404 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001405 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 link_depends : sym,
1407 install : true,
1408 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001409
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001410 # We cannot use shared_module because it does not support version suffix.
1411 # Unfortunately shared_library insists on creating the symlink…
1412 meson.add_install_script('sh', '-c',
1413 'rm $DESTDIR@0@/libnss_@1@.so'
1414 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001415
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 test('dlopen-nss_' + module,
1417 test_dlopen,
1418 args : [nss.full_path()]) # path to dlopen must include a slash
1419 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001420endforeach
1421
1422############################################################
1423
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001424executable('systemd',
1425 systemd_sources,
1426 include_directories : includes,
1427 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001428 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429 dependencies : [threads,
1430 librt,
1431 libseccomp,
1432 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001433 libmount,
1434 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001435 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436 install : true,
1437 install_dir : rootlibexecdir)
1438
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001439meson.add_install_script(meson_make_symlink,
1440 join_paths(rootlibexecdir, 'systemd'),
1441 join_paths(rootsbindir, 'init'))
1442
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001443exe = executable('systemd-analyze',
1444 systemd_analyze_sources,
1445 include_directories : includes,
1446 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001447 libshared],
1448 dependencies : [threads,
1449 librt,
1450 libseccomp,
1451 libselinux,
1452 libmount,
1453 libblkid],
1454 install_rpath : rootlibexecdir,
1455 install : true)
1456public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001457
1458executable('systemd-journald',
1459 systemd_journald_sources,
1460 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001461 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001462 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463 dependencies : [threads,
1464 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001465 liblz4,
1466 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001467 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001468 install : true,
1469 install_dir : rootlibexecdir)
1470
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001471exe = executable('systemd-cat',
1472 systemd_cat_sources,
1473 include_directories : includes,
1474 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001475 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001476 dependencies : [threads],
1477 install_rpath : rootlibexecdir,
1478 install : true)
1479public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001480
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001481exe = executable('journalctl',
1482 journalctl_sources,
1483 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001485 dependencies : [threads,
1486 libqrencode,
1487 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001488 liblz4,
1489 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001490 install_rpath : rootlibexecdir,
1491 install : true,
1492 install_dir : rootbindir)
1493public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001494
1495executable('systemd-getty-generator',
1496 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001497 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001498 link_with : [libshared],
1499 install_rpath : rootlibexecdir,
1500 install : true,
1501 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001502
1503executable('systemd-debug-generator',
1504 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001506 link_with : [libshared],
1507 install_rpath : rootlibexecdir,
1508 install : true,
1509 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510
1511executable('systemd-fstab-generator',
1512 'src/fstab-generator/fstab-generator.c',
1513 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001514 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001515 link_with : [libshared],
1516 install_rpath : rootlibexecdir,
1517 install : true,
1518 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001519
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001520if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001521 executable('30-systemd-environment-d-generator',
1522 'src/environment-d-generator/environment-d-generator.c',
1523 include_directories : includes,
1524 link_with : [libshared],
1525 install_rpath : rootlibexecdir,
1526 install : true,
1527 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001528
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001529 meson.add_install_script(meson_make_symlink,
1530 join_paths(sysconfdir, 'environment'),
1531 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532endif
1533
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001534if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 executable('systemd-hibernate-resume-generator',
1536 'src/hibernate-resume/hibernate-resume-generator.c',
1537 include_directories : includes,
1538 link_with : [libshared],
1539 install_rpath : rootlibexecdir,
1540 install : true,
1541 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001542
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 executable('systemd-hibernate-resume',
1544 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001545 include_directories : includes,
1546 link_with : [libshared],
1547 install_rpath : rootlibexecdir,
1548 install : true,
1549 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550endif
1551
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001552if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001553 executable('systemd-gpt-auto-generator',
1554 'src/gpt-auto-generator/gpt-auto-generator.c',
1555 'src/basic/blkid-util.h',
1556 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001557 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 dependencies : libblkid,
1559 install_rpath : rootlibexecdir,
1560 install : true,
1561 install_dir : systemgeneratordir)
1562
1563 exe = executable('systemd-dissect',
1564 'src/dissect/dissect.c',
1565 include_directories : includes,
1566 link_with : [libshared],
1567 install_rpath : rootlibexecdir,
1568 install : true,
1569 install_dir : rootlibexecdir)
1570 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001571endif
1572
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001573if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001574 executable('systemd-resolved',
1575 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001576 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001577 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001578 libbasic_gcrypt,
1579 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001580 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001581 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 libm,
1583 libidn],
1584 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001585 install : true,
1586 install_dir : rootlibexecdir)
1587
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001588 exe = executable('resolvectl',
1589 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001590 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001591 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001592 libbasic_gcrypt,
1593 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001594 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001595 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 libm,
1597 libidn],
1598 install_rpath : rootlibexecdir,
1599 install : true)
1600 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001601
1602 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001603 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001604 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001605
1606 meson.add_install_script(meson_make_symlink,
1607 join_paths(bindir, 'resolvectl'),
1608 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609endif
1610
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001611if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001612 executable('systemd-logind',
1613 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001614 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001615 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001616 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001617 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001619 install_rpath : rootlibexecdir,
1620 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001622
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 exe = executable('loginctl',
1624 loginctl_sources,
1625 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001626 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 dependencies : [threads,
1628 liblz4,
1629 libxz],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : rootbindir)
1633 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001634
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001635 exe = executable('systemd-inhibit',
1636 'src/login/inhibit.c',
1637 include_directories : includes,
1638 link_with : [libshared],
1639 install_rpath : rootlibexecdir,
1640 install : true,
1641 install_dir : rootbindir)
1642 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001643
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001644 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001645 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1646 pam_systemd = shared_library(
1647 'pam_systemd',
1648 pam_systemd_c,
1649 name_prefix : '',
1650 include_directories : includes,
1651 link_args : ['-shared',
1652 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001653 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001654 libshared_static],
1655 dependencies : [threads,
1656 libpam,
1657 libpam_misc],
1658 link_depends : pam_systemd_sym,
1659 install : true,
1660 install_dir : pamlibdir)
1661
1662 test('dlopen-pam_systemd',
1663 test_dlopen,
1664 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1665 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001666endif
1667
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001668executable('systemd-user-runtime-dir',
1669 user_runtime_dir_sources,
1670 include_directories : includes,
1671 link_with : [libshared, liblogind_core],
1672 install_rpath : rootlibexecdir,
1673 install : true,
1674 install_dir : rootlibexecdir)
1675
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001676if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001677 executable('systemd-user-sessions',
1678 'src/user-sessions/user-sessions.c',
1679 include_directories : includes,
1680 link_with : [libshared],
1681 install_rpath : rootlibexecdir,
1682 install : true,
1683 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684endif
1685
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001686if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 exe = executable('bootctl',
1688 'src/boot/bootctl.c',
1689 include_directories : includes,
1690 link_with : [libshared],
1691 dependencies : [libblkid],
1692 install_rpath : rootlibexecdir,
1693 install : true)
1694 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695endif
1696
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001697exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1698 include_directories : includes,
1699 link_with : [libshared],
1700 dependencies : [threads],
1701 install_rpath : rootlibexecdir,
1702 install : true)
1703public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001704
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001705exe = executable('systemctl', 'src/systemctl/systemctl.c',
1706 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001707 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001708 dependencies : [threads,
1709 libcap,
1710 libselinux,
1711 libxz,
1712 liblz4],
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : rootbindir)
1716public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001717
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001718foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1719 meson.add_install_script(meson_make_symlink,
1720 join_paths(rootbindir, 'systemctl'),
1721 join_paths(rootsbindir, alias))
1722endforeach
1723
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001724if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001725 executable('systemd-backlight',
1726 'src/backlight/backlight.c',
1727 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001728 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001729 install_rpath : rootlibexecdir,
1730 install : true,
1731 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001732endif
1733
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001734if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001735 executable('systemd-rfkill',
1736 'src/rfkill/rfkill.c',
1737 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001738 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001739 install_rpath : rootlibexecdir,
1740 install : true,
1741 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001742endif
1743
1744executable('systemd-system-update-generator',
1745 'src/system-update-generator/system-update-generator.c',
1746 include_directories : includes,
1747 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001748 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001749 install : true,
1750 install_dir : systemgeneratordir)
1751
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001752if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001753 executable('systemd-cryptsetup',
1754 'src/cryptsetup/cryptsetup.c',
1755 include_directories : includes,
1756 link_with : [libshared],
1757 dependencies : [libcryptsetup],
1758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001761
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 executable('systemd-cryptsetup-generator',
1763 'src/cryptsetup/cryptsetup-generator.c',
1764 include_directories : includes,
1765 link_with : [libshared],
1766 dependencies : [libcryptsetup],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001770
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 executable('systemd-veritysetup',
1772 'src/veritysetup/veritysetup.c',
1773 include_directories : includes,
1774 link_with : [libshared],
1775 dependencies : [libcryptsetup],
1776 install_rpath : rootlibexecdir,
1777 install : true,
1778 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001779
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 executable('systemd-veritysetup-generator',
1781 'src/veritysetup/veritysetup-generator.c',
1782 include_directories : includes,
1783 link_with : [libshared],
1784 dependencies : [libcryptsetup],
1785 install_rpath : rootlibexecdir,
1786 install : true,
1787 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001788endif
1789
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001790if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 executable('systemd-sysv-generator',
1792 'src/sysv-generator/sysv-generator.c',
1793 include_directories : includes,
1794 link_with : [libshared],
1795 install_rpath : rootlibexecdir,
1796 install : true,
1797 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001798
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 executable('systemd-rc-local-generator',
1800 'src/rc-local-generator/rc-local-generator.c',
1801 include_directories : includes,
1802 link_with : [libshared],
1803 install_rpath : rootlibexecdir,
1804 install : true,
1805 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806endif
1807
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001808if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001809 executable('systemd-hostnamed',
1810 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001811 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001812 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001813 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001814 install : true,
1815 install_dir : rootlibexecdir)
1816
1817 exe = executable('hostnamectl',
1818 'src/hostname/hostnamectl.c',
1819 include_directories : includes,
1820 link_with : [libshared],
1821 install_rpath : rootlibexecdir,
1822 install : true)
1823 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824endif
1825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001826if conf.get('ENABLE_LOCALED') == 1
1827 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 # logind will load libxkbcommon.so dynamically on its own
1829 deps = [libdl]
1830 else
1831 deps = []
1832 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001833
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001834 executable('systemd-localed',
1835 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001836 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001837 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001839 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001840 install : true,
1841 install_dir : rootlibexecdir)
1842
1843 exe = executable('localectl',
1844 localectl_sources,
1845 include_directories : includes,
1846 link_with : [libshared],
1847 install_rpath : rootlibexecdir,
1848 install : true)
1849 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850endif
1851
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001852if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 executable('systemd-timedated',
1854 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001855 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001856 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 install_rpath : rootlibexecdir,
1858 install : true,
1859 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001860endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861
Yu Watanabe6129ec82018-05-03 18:07:43 +09001862if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 exe = executable('timedatectl',
1864 'src/timedate/timedatectl.c',
1865 include_directories : includes,
1866 install_rpath : rootlibexecdir,
1867 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001868 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001869 install : true)
1870 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871endif
1872
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001873if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 executable('systemd-timesyncd',
1875 systemd_timesyncd_sources,
1876 include_directories : includes,
1877 link_with : [libshared],
1878 dependencies : [threads,
1879 libm],
1880 install_rpath : rootlibexecdir,
1881 install : true,
1882 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001883
1884 executable('systemd-time-wait-sync',
1885 'src/time-wait-sync/time-wait-sync.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001891endif
1892
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001893if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 executable('systemd-machined',
1895 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001896 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001897 link_with : [libmachine_core,
1898 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001899 install_rpath : rootlibexecdir,
1900 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001901 install_dir : rootlibexecdir)
1902
1903 exe = executable('machinectl',
1904 'src/machine/machinectl.c',
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [threads,
1908 libxz,
1909 liblz4],
1910 install_rpath : rootlibexecdir,
1911 install : true,
1912 install_dir : rootbindir)
1913 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914endif
1915
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001916if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001917 executable('systemd-importd',
1918 systemd_importd_sources,
1919 include_directories : includes,
1920 link_with : [libshared],
1921 dependencies : [threads],
1922 install_rpath : rootlibexecdir,
1923 install : true,
1924 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001925
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001926 systemd_pull = executable('systemd-pull',
1927 systemd_pull_sources,
1928 include_directories : includes,
1929 link_with : [libshared],
1930 dependencies : [libcurl,
1931 libz,
1932 libbzip2,
1933 libxz,
1934 libgcrypt],
1935 install_rpath : rootlibexecdir,
1936 install : true,
1937 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001938
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001939 systemd_import = executable('systemd-import',
1940 systemd_import_sources,
1941 include_directories : includes,
1942 link_with : [libshared],
1943 dependencies : [libcurl,
1944 libz,
1945 libbzip2,
1946 libxz],
1947 install_rpath : rootlibexecdir,
1948 install : true,
1949 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001950
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001951 systemd_export = executable('systemd-export',
1952 systemd_export_sources,
1953 include_directories : includes,
1954 link_with : [libshared],
1955 dependencies : [libcurl,
1956 libz,
1957 libbzip2,
1958 libxz],
1959 install_rpath : rootlibexecdir,
1960 install : true,
1961 install_dir : rootlibexecdir)
1962 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001963endif
1964
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001965if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001966 exe = executable('systemd-journal-upload',
1967 systemd_journal_upload_sources,
1968 include_directories : includes,
1969 link_with : [libshared],
1970 dependencies : [threads,
1971 libcurl,
1972 libgnutls,
1973 libxz,
1974 liblz4],
1975 install_rpath : rootlibexecdir,
1976 install : true,
1977 install_dir : rootlibexecdir)
1978 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001979endif
1980
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001981if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 s_j_remote = executable('systemd-journal-remote',
1983 systemd_journal_remote_sources,
1984 include_directories : includes,
1985 link_with : [libshared],
1986 dependencies : [threads,
1987 libmicrohttpd,
1988 libgnutls,
1989 libxz,
1990 liblz4],
1991 install_rpath : rootlibexecdir,
1992 install : true,
1993 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001994
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001995 s_j_gatewayd = executable('systemd-journal-gatewayd',
1996 systemd_journal_gatewayd_sources,
1997 include_directories : includes,
1998 link_with : [libshared],
1999 dependencies : [threads,
2000 libmicrohttpd,
2001 libgnutls,
2002 libxz,
2003 liblz4],
2004 install_rpath : rootlibexecdir,
2005 install : true,
2006 install_dir : rootlibexecdir)
2007 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002008endif
2009
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002010if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-coredump',
2012 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002013 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002014 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002015 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002016 libacl,
2017 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002018 libxz,
2019 liblz4],
2020 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 install : true,
2022 install_dir : rootlibexecdir)
2023
2024 exe = executable('coredumpctl',
2025 coredumpctl_sources,
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [threads,
2029 libxz,
2030 liblz4],
2031 install_rpath : rootlibexecdir,
2032 install : true)
2033 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002034endif
2035
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002036if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002037 exe = executable('systemd-binfmt',
2038 'src/binfmt/binfmt.c',
2039 include_directories : includes,
2040 link_with : [libshared],
2041 install_rpath : rootlibexecdir,
2042 install : true,
2043 install_dir : rootlibexecdir)
2044 public_programs += [exe]
2045
2046 meson.add_install_script('sh', '-c',
2047 mkdir_p.format(binfmtdir))
2048 meson.add_install_script('sh', '-c',
2049 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2050endif
2051
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002052if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-vconsole-setup',
2054 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002055 include_directories : includes,
2056 link_with : [libshared],
2057 install_rpath : rootlibexecdir,
2058 install : true,
2059 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002060endif
2061
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002062if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002063 executable('systemd-random-seed',
2064 'src/random-seed/random-seed.c',
2065 include_directories : includes,
2066 link_with : [libshared],
2067 install_rpath : rootlibexecdir,
2068 install : true,
2069 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002070endif
2071
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002072if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002073 executable('systemd-firstboot',
2074 'src/firstboot/firstboot.c',
2075 include_directories : includes,
2076 link_with : [libshared],
2077 dependencies : [libcrypt],
2078 install_rpath : rootlibexecdir,
2079 install : true,
2080 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002081endif
2082
2083executable('systemd-remount-fs',
2084 'src/remount-fs/remount-fs.c',
2085 'src/core/mount-setup.c',
2086 'src/core/mount-setup.h',
2087 include_directories : includes,
2088 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002089 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090 install : true,
2091 install_dir : rootlibexecdir)
2092
2093executable('systemd-machine-id-setup',
2094 'src/machine-id-setup/machine-id-setup-main.c',
2095 'src/core/machine-id-setup.c',
2096 'src/core/machine-id-setup.h',
2097 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002098 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002099 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002100 install : true,
2101 install_dir : rootbindir)
2102
2103executable('systemd-fsck',
2104 'src/fsck/fsck.c',
2105 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002106 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002107 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108 install : true,
2109 install_dir : rootlibexecdir)
2110
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002111executable('systemd-growfs',
2112 'src/partition/growfs.c',
2113 include_directories : includes,
2114 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002115 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002116 install_rpath : rootlibexecdir,
2117 install : true,
2118 install_dir : rootlibexecdir)
2119
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002120executable('systemd-makefs',
2121 'src/partition/makefs.c',
2122 include_directories : includes,
2123 link_with : [libshared],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
2127
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002128executable('systemd-sleep',
2129 'src/sleep/sleep.c',
2130 include_directories : includes,
2131 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002132 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002133 install : true,
2134 install_dir : rootlibexecdir)
2135
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136exe = executable('systemd-sysctl',
2137 'src/sysctl/sysctl.c',
2138 include_directories : includes,
2139 link_with : [libshared],
2140 install_rpath : rootlibexecdir,
2141 install : true,
2142 install_dir : rootlibexecdir)
2143public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002144
2145executable('systemd-ac-power',
2146 'src/ac-power/ac-power.c',
2147 include_directories : includes,
2148 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002149 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150 install : true,
2151 install_dir : rootlibexecdir)
2152
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002153exe = executable('systemd-detect-virt',
2154 'src/detect-virt/detect-virt.c',
2155 include_directories : includes,
2156 link_with : [libshared],
2157 install_rpath : rootlibexecdir,
2158 install : true)
2159public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002161exe = executable('systemd-delta',
2162 'src/delta/delta.c',
2163 include_directories : includes,
2164 link_with : [libshared],
2165 install_rpath : rootlibexecdir,
2166 install : true)
2167public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002169exe = executable('systemd-escape',
2170 'src/escape/escape.c',
2171 include_directories : includes,
2172 link_with : [libshared],
2173 install_rpath : rootlibexecdir,
2174 install : true,
2175 install_dir : rootbindir)
2176public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002177
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002178exe = executable('systemd-notify',
2179 'src/notify/notify.c',
2180 include_directories : includes,
2181 link_with : [libshared],
2182 install_rpath : rootlibexecdir,
2183 install : true,
2184 install_dir : rootbindir)
2185public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002186
2187executable('systemd-volatile-root',
2188 'src/volatile-root/volatile-root.c',
2189 include_directories : includes,
2190 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002191 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002192 install : true,
2193 install_dir : rootlibexecdir)
2194
2195executable('systemd-cgroups-agent',
2196 'src/cgroups-agent/cgroups-agent.c',
2197 include_directories : includes,
2198 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002199 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200 install : true,
2201 install_dir : rootlibexecdir)
2202
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002203exe = executable('systemd-path',
2204 'src/path/path.c',
2205 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002206 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002207 install_rpath : rootlibexecdir,
2208 install : true)
2209public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002210
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002211exe = executable('systemd-ask-password',
2212 'src/ask-password/ask-password.c',
2213 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002214 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : rootbindir)
2218public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219
2220executable('systemd-reply-password',
2221 'src/reply-password/reply-password.c',
2222 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002223 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002224 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002225 install : true,
2226 install_dir : rootlibexecdir)
2227
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002228exe = executable('systemd-tty-ask-password-agent',
2229 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2230 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002231 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002232 install_rpath : rootlibexecdir,
2233 install : true,
2234 install_dir : rootbindir)
2235public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002237exe = executable('systemd-cgls',
2238 'src/cgls/cgls.c',
2239 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002240 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241 install_rpath : rootlibexecdir,
2242 install : true)
2243public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002245exe = executable('systemd-cgtop',
2246 'src/cgtop/cgtop.c',
2247 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002248 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002249 install_rpath : rootlibexecdir,
2250 install : true)
2251public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252
2253executable('systemd-initctl',
2254 'src/initctl/initctl.c',
2255 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002256 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002257 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258 install : true,
2259 install_dir : rootlibexecdir)
2260
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002261exe = executable('systemd-mount',
2262 'src/mount/mount-tool.c',
2263 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002264 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 install_rpath : rootlibexecdir,
2266 install : true)
2267public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002268
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002269meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002270 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002271
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272exe = executable('systemd-run',
2273 'src/run/run.c',
2274 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002275 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002276 install_rpath : rootlibexecdir,
2277 install : true)
2278public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002279
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002280exe = executable('systemd-stdio-bridge',
2281 'src/stdio-bridge/stdio-bridge.c',
2282 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002283 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002284 install_rpath : rootlibexecdir,
2285 install : true)
2286public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288exe = executable('busctl',
2289 'src/busctl/busctl.c',
2290 'src/busctl/busctl-introspect.c',
2291 'src/busctl/busctl-introspect.h',
2292 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002293 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002294 install_rpath : rootlibexecdir,
2295 install : true)
2296public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002297
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002298if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299 exe = executable('systemd-sysusers',
2300 'src/sysusers/sysusers.c',
2301 include_directories : includes,
2302 link_with : [libshared],
2303 install_rpath : rootlibexecdir,
2304 install : true,
2305 install_dir : rootbindir)
2306 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002307endif
2308
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002309if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002310 exe = executable('systemd-tmpfiles',
2311 'src/tmpfiles/tmpfiles.c',
2312 include_directories : includes,
2313 link_with : [libshared],
2314 dependencies : [libacl],
2315 install_rpath : rootlibexecdir,
2316 install : true,
2317 install_dir : rootbindir)
2318 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002319
2320 test('test-systemd-tmpfiles',
2321 test_systemd_tmpfiles_py,
2322 args : exe.full_path())
2323 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324endif
2325
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002326if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 exe = executable('systemd-hwdb',
2328 'src/hwdb/hwdb.c',
2329 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2330 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002331 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002332 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 install : true,
2334 install_dir : rootbindir)
2335 public_programs += [exe]
2336endif
2337
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002338if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002339 executable('systemd-quotacheck',
2340 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002343 install_rpath : rootlibexecdir,
2344 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002345 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002346endif
2347
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002348exe = executable('systemd-socket-proxyd',
2349 'src/socket-proxy/socket-proxyd.c',
2350 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002352 dependencies : [threads],
2353 install_rpath : rootlibexecdir,
2354 install : true,
2355 install_dir : rootlibexecdir)
2356public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002357
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002358exe = executable('systemd-udevd',
2359 systemd_udevd_sources,
2360 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002361 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002362 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002363 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002364 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002365 dependencies : [threads,
2366 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002367 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002368 libacl,
2369 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002370 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002371 install : true,
2372 install_dir : rootlibexecdir)
2373public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375exe = executable('udevadm',
2376 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002377 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002378 include_directories : includes,
2379 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002380 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002381 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002382 dependencies : [threads,
2383 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002384 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002385 libacl,
2386 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002387 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002388 install : true,
2389 install_dir : rootbindir)
2390public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002391
2392executable('systemd-shutdown',
2393 systemd_shutdown_sources,
2394 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002395 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002396 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002397 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398 install : true,
2399 install_dir : rootlibexecdir)
2400
2401executable('systemd-update-done',
2402 'src/update-done/update-done.c',
2403 include_directories : includes,
2404 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002405 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406 install : true,
2407 install_dir : rootlibexecdir)
2408
2409executable('systemd-update-utmp',
2410 'src/update-utmp/update-utmp.c',
2411 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002414 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415 install : true,
2416 install_dir : rootlibexecdir)
2417
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002418if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002419 executable('systemd-modules-load',
2420 'src/modules-load/modules-load.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 dependencies : [libkmod],
2424 install_rpath : rootlibexecdir,
2425 install : true,
2426 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002427
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002428 meson.add_install_script('sh', '-c',
2429 mkdir_p.format(modulesloaddir))
2430 meson.add_install_script('sh', '-c',
2431 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432endif
2433
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002434exe = executable('systemd-nspawn',
2435 systemd_nspawn_sources,
2436 'src/core/mount-setup.c', # FIXME: use a variable?
2437 'src/core/mount-setup.h',
2438 'src/core/loopback-setup.c',
2439 'src/core/loopback-setup.h',
2440 include_directories : [includes, include_directories('src/nspawn')],
Zbigniew Jędrzejewski-Szmek0bc91152017-04-27 13:39:54 -04002441 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002442 dependencies : [libacl,
2443 libblkid,
2444 libseccomp,
2445 libselinux],
2446 install_rpath : rootlibexecdir,
2447 install : true)
2448public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002449
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002450if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002451 executable('systemd-networkd',
2452 systemd_networkd_sources,
2453 include_directories : includes,
2454 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002456 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002457 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002458 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002459 install_rpath : rootlibexecdir,
2460 install : true,
2461 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002462
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002463 executable('systemd-networkd-wait-online',
2464 systemd_networkd_wait_online_sources,
2465 include_directories : includes,
2466 link_with : [libnetworkd_core,
2467 libshared],
2468 install_rpath : rootlibexecdir,
2469 install : true,
2470 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002472 exe = executable('networkctl',
2473 networkctl_sources,
2474 include_directories : includes,
2475 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002476 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootbindir)
2480 public_programs += [exe]
2481endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002482
2483executable('systemd-sulogin-shell',
2484 ['src/sulogin-shell/sulogin-shell.c'],
2485 include_directories : includes,
2486 link_with : [libshared],
2487 install_rpath : rootlibexecdir,
2488 install : true,
2489 install_dir : rootlibexecdir)
2490
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002491############################################################
2492
2493foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002494 sources = tuple[0]
2495 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2496 dependencies = tuple[2]
2497 condition = tuple.length() >= 4 ? tuple[3] : ''
2498 type = tuple.length() >= 5 ? tuple[4] : ''
2499 defs = tuple.length() >= 6 ? tuple[5] : []
2500 incs = tuple.length() >= 7 ? tuple[6] : includes
2501 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002502
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002503 name = sources[0].split('/')[-1].split('.')[0]
2504 if type.startswith('timeout=')
2505 timeout = type.split('=')[1].to_int()
2506 type = ''
2507 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002508 if want_tests == 'false'
2509 message('Not compiling @0@ because tests is set to false'.format(name))
2510 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511 exe = executable(
2512 name,
2513 sources,
2514 include_directories : incs,
2515 link_with : link_with,
2516 dependencies : dependencies,
2517 c_args : defs,
2518 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002519 install : install_tests,
2520 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002521
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002522 if type == 'manual'
2523 message('@0@ is a manual test'.format(name))
2524 elif type == 'unsafe' and want_tests != 'unsafe'
2525 message('@0@ is an unsafe test'.format(name))
2526 else
2527 test(name, exe,
2528 env : test_env,
2529 timeout : timeout)
2530 endif
2531 else
2532 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2533 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002534endforeach
2535
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002536exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 'test-libsystemd-sym',
2538 test_libsystemd_sym_c,
2539 include_directories : includes,
2540 link_with : [libsystemd],
2541 install : install_tests,
2542 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002543test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002544
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002545exe = executable(
2546 'test-libsystemd-static-sym',
2547 test_libsystemd_sym_c,
2548 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002549 link_with : [install_libsystemd_static],
2550 dependencies : [threads], # threads is already included in dependencies on the library,
2551 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002552 build_by_default : static_libsystemd_pic,
2553 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002554 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002555if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002556 test('test-libsystemd-static-sym', exe)
2557endif
2558
2559exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 'test-libudev-sym',
2561 test_libudev_sym_c,
2562 include_directories : includes,
2563 c_args : ['-Wno-deprecated-declarations'],
2564 link_with : [libudev],
2565 install : install_tests,
2566 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002567test('test-libudev-sym', exe)
2568
2569exe = executable(
2570 'test-libudev-static-sym',
2571 test_libudev_sym_c,
2572 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002573 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002574 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002575 build_by_default : static_libudev_pic,
2576 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002577 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002578if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002579 test('test-libudev-static-sym', exe)
2580endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002581
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002582############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002583
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002584fuzzer_exes = []
2585
2586foreach tuple : fuzzers
2587 sources = tuple[0]
2588 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2589 dependencies = tuple[2]
2590 defs = tuple.length() >= 4 ? tuple[3] : []
2591 incs = tuple.length() >= 5 ? tuple[4] : includes
2592
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002593 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002594 dependencies += fuzzing_engine
2595 else
2596 sources += 'src/fuzz/fuzz-main.c'
2597 endif
2598
2599 name = sources[0].split('/')[-1].split('.')[0]
2600
2601 fuzzer_exes += executable(
2602 name,
2603 sources,
2604 include_directories : [incs, include_directories('src/fuzz')],
2605 link_with : link_with,
2606 dependencies : dependencies,
2607 c_args : defs,
2608 install : false)
2609endforeach
2610
2611run_target('fuzzers',
2612 depends : fuzzer_exes,
2613 command : ['true'])
2614
2615############################################################
2616
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617make_directive_index_py = find_program('tools/make-directive-index.py')
2618make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002619xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002620hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621
2622subdir('units')
2623subdir('sysctl.d')
2624subdir('sysusers.d')
2625subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002626subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002627subdir('hwdb')
2628subdir('network')
2629subdir('man')
2630subdir('shell-completion/bash')
2631subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002632subdir('doc/sysvinit')
2633subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634
2635# FIXME: figure out if the warning is true:
2636# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2637install_subdir('factory/etc',
2638 install_dir : factorydir)
2639
2640
2641install_data('xorg/50-systemd-user.sh',
2642 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002643install_data('modprobe.d/systemd.conf',
2644 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002645install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002647 'NEWS',
2648 'README',
2649 'doc/CODING_STYLE',
2650 'doc/DISTRO_PORTING',
2651 'doc/ENVIRONMENT.md',
2652 'doc/HACKING',
2653 'doc/TRANSIENT-SETTINGS.md',
2654 'doc/TRANSLATORS',
2655 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2657 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002658
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002659meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2660meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2661
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002662############################################################
2663
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002664meson_check_help = find_program('tools/meson-check-help.sh')
2665
2666foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002667 name = exec.full_path().split('/')[-1]
2668 test('check-help-' + name,
2669 meson_check_help,
2670 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002671endforeach
2672
2673############################################################
2674
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002675# Enable tests for all supported sanitizers
2676foreach tuple : sanitizers
2677 sanitizer = tuple[0]
2678 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002679
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002680 have = run_command(check_compilation_sh,
2681 cc.cmd_array(), '-x', 'c',
2682 '-fsanitize=@0@'.format(sanitizer),
2683 '-include', link_test_c).returncode() == 0
2684 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002685
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002686 if have
2687 prev = ''
2688 foreach p : fuzz_regression_tests
2689 b = p.split('/')[-2]
2690 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002691
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002692 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002693
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002694 if name != prev
2695 if want_tests == 'false'
2696 message('Not compiling @0@ because tests is set to false'.format(name))
2697 elif slow_tests
2698 exe = custom_target(
2699 name,
2700 output : name,
2701 depends : build,
2702 command : [env, 'ln', '-fs',
2703 join_paths(build.full_path(), b),
2704 '@OUTPUT@'],
2705 build_by_default : true)
2706 else
2707 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2708 endif
2709 endif
2710 prev = name
2711
2712 if want_tests != 'false' and slow_tests
2713 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2714 env,
2715 args : [exe.full_path(),
2716 join_paths(meson.source_root(),
2717 'test/fuzz-regressions',
2718 p)])
2719 endif
2720 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002721 endif
2722endforeach
2723
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002724
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002725############################################################
2726
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002727if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002728 all_files = run_command(
2729 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002730 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002731 'ls-files',
2732 ':/*.[ch]'])
2733 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002734
userwithuide85a6902017-08-09 13:41:44 +00002735 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002736 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002737 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002738 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
userwithuide85a6902017-08-09 13:41:44 +00002739 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002740 'ctags',
userwithuide85a6902017-08-09 13:41:44 +00002741 output : 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002742 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002743endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002744
2745if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002746 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002747 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002748 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002749 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002750endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002751
2752if git.found()
2753 git_head = run_command(
2754 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002755 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002756 'rev-parse', 'HEAD']).stdout().strip()
2757 git_head_short = run_command(
2758 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002759 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002760 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2761
2762 run_target(
2763 'git-snapshot',
2764 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002765 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002766 git_head_short),
2767 '--prefix', 'systemd-@0@/'.format(git_head),
2768 'HEAD'])
2769endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002770
2771############################################################
2772
Lennart Poettering51b13862017-12-20 12:51:14 +01002773meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2774run_target(
2775 'check-api-docs',
2776 depends : [man, libsystemd, libudev],
2777 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2778
2779############################################################
2780
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002781status = [
2782 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2783
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002784 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002785 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002786 'prefix directory: @0@'.format(prefixdir),
2787 'rootprefix directory: @0@'.format(rootprefixdir),
2788 'sysconf directory: @0@'.format(sysconfdir),
2789 'include directory: @0@'.format(includedir),
2790 'lib directory: @0@'.format(libdir),
2791 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002792 'SysV init scripts: @0@'.format(sysvinit_path),
2793 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002794 'PAM modules directory: @0@'.format(pamlibdir),
2795 'PAM configuration directory: @0@'.format(pamconfdir),
2796 'RPM macros directory: @0@'.format(rpmmacrosdir),
2797 'modprobe.d directory: @0@'.format(modprobedir),
2798 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2799 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2800 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2801 'bash completions directory: @0@'.format(bashcompletiondir),
2802 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002803 'extra start script: @0@'.format(get_option('rc-local')),
2804 'extra stop script: @0@'.format(get_option('halt-local')),
2805 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2806 get_option('debug-tty')),
2807 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002808 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002809 'maximum system UID: @0@'.format(system_uid_max),
2810 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002811 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2812 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2813 'minimum container UID base: @0@'.format(container_uid_base_min),
2814 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002815 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002816 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002817 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002818 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002819 'nobody user name: @0@'.format(nobody_user),
2820 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002821 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002822 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002823
2824 'default DNSSEC mode: @0@'.format(default_dnssec),
2825 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2826 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2827
2828alt_dns_servers = '\n '.join(dns_servers.split(' '))
2829alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2830status += [
2831 'default DNS servers: @0@'.format(alt_dns_servers),
2832 'default NTP servers: @0@'.format(alt_ntp_servers)]
2833
2834alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2835 '@@0@'.format(time_epoch)).stdout().strip()
2836status += [
2837 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2838
2839# TODO:
2840# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2841# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2842# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2843
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002844if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002845 status += [
2846 'efi arch: @0@'.format(efi_arch)]
2847
2848 if have_gnu_efi
2849 status += [
2850 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2851 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002852 'EFI lib directory: @0@'.format(efi_libdir),
2853 'EFI lds directory: @0@'.format(efi_ldsdir),
2854 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002855 endif
2856endif
2857
2858found = []
2859missing = []
2860
2861foreach tuple : [
2862 ['libcryptsetup'],
2863 ['PAM'],
2864 ['AUDIT'],
2865 ['IMA'],
2866 ['AppArmor'],
2867 ['SELinux'],
2868 ['SECCOMP'],
2869 ['SMACK'],
2870 ['zlib'],
2871 ['xz'],
2872 ['lz4'],
2873 ['bzip2'],
2874 ['ACL'],
2875 ['gcrypt'],
2876 ['qrencode'],
2877 ['microhttpd'],
2878 ['gnutls'],
2879 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002880 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002881 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002882 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002883 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002884 ['libiptc'],
2885 ['elfutils'],
2886 ['binfmt'],
2887 ['vconsole'],
2888 ['quotacheck'],
2889 ['tmpfiles'],
2890 ['environment.d'],
2891 ['sysusers'],
2892 ['firstboot'],
2893 ['randomseed'],
2894 ['backlight'],
2895 ['rfkill'],
2896 ['logind'],
2897 ['machined'],
2898 ['importd'],
2899 ['hostnamed'],
2900 ['timedated'],
2901 ['timesyncd'],
2902 ['localed'],
2903 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002904 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002905 ['coredump'],
2906 ['polkit'],
2907 ['legacy pkla', install_polkit_pkla],
2908 ['efi'],
2909 ['gnu-efi', have_gnu_efi],
2910 ['kmod'],
2911 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002912 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002913 ['blkid'],
2914 ['dbus'],
2915 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002916 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002917 ['hwdb'],
2918 ['tpm'],
2919 ['man pages', want_man],
2920 ['html pages', want_html],
2921 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002922 ['SysV compat'],
2923 ['utmp'],
2924 ['ldconfig'],
2925 ['hibernate'],
2926 ['adm group', get_option('adm-group')],
2927 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002928 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002929 ['debug hashmap'],
2930 ['debug mmap cache'],
2931]
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