blob: 484271ff1c0c236a515317c048cb7f39272fa268 [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')
Lennart Poettering61d05782018-04-16 21:41:40 +0200141profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400142
tblume75aaade2018-02-01 22:46:15 +0100143docdir = get_option('docdir')
144if docdir == ''
145 docdir = join_paths(datadir, 'doc/systemd')
146endif
147
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400148dbuspolicydir = get_option('dbuspolicydir')
149if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400150 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151endif
152
153dbussessionservicedir = get_option('dbussessionservicedir')
154if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400155 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400156endif
157
158dbussystemservicedir = get_option('dbussystemservicedir')
159if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400160 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400161endif
162
163pamlibdir = get_option('pamlibdir')
164if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400165 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166endif
167
168pamconfdir = get_option('pamconfdir')
169if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400170 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400171endif
172
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100173memory_accounting_default = get_option('memory-accounting-default')
174
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400176conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400177conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
178conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
179conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400180conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
181conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100182
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100183conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100184
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
187conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400188conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
189conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
190conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
191conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100192conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100193conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
195conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
196conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
197conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
198conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100199conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400200conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400201conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
202conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400203conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
204conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
205conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
206conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
207conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
208conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400209conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
210conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400213conf.set_quoted('LIBDIR', libdir)
214conf.set_quoted('ROOTLIBDIR', rootlibdir)
215conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
216conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400217conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
218conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
219conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
220conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
221conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
222conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100223conf.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'true' : 'false')
Michal Koutný7f672e82018-03-09 18:27:13 +0100224conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400225
226conf.set_quoted('ABS_BUILD_DIR', meson.build_root())
227conf.set_quoted('ABS_SRC_DIR', meson.source_root())
228
229substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400230substs.set('exec_prefix', prefixdir)
231substs.set('libdir', libdir)
232substs.set('rootlibdir', rootlibdir)
233substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400234substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400235substs.set('bindir', bindir)
236substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('rootlibexecdir', rootlibexecdir)
238substs.set('systemunitdir', systemunitdir)
239substs.set('userunitdir', userunitdir)
240substs.set('systempresetdir', systempresetdir)
241substs.set('userpresetdir', userpresetdir)
242substs.set('udevhwdbdir', udevhwdbdir)
243substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200245substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400246substs.set('catalogdir', catalogdir)
247substs.set('tmpfilesdir', tmpfilesdir)
248substs.set('sysusersdir', sysusersdir)
249substs.set('sysctldir', sysctldir)
250substs.set('binfmtdir', binfmtdir)
251substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200252substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400253substs.set('systemgeneratordir', systemgeneratordir)
254substs.set('usergeneratordir', usergeneratordir)
255substs.set('systemenvgeneratordir', systemenvgeneratordir)
256substs.set('userenvgeneratordir', userenvgeneratordir)
257substs.set('systemshutdowndir', systemshutdowndir)
258substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400259substs.set('VARLOGDIR', varlogdir)
260substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400261substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
262substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400263substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
264substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
265substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
266substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100267substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400268
269#####################################################################
270
271cc = meson.get_compiler('c')
272pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400273check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100274meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400275
Adam Duskett08318a22018-01-15 06:25:46 -0500276if get_option('tests') != 'false'
277 cxx = find_program('c++', required : false)
278 if cxx.found()
279 # Used only for tests
280 add_languages('cpp')
281 endif
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400282endif
283
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500284want_ossfuzz = get_option('oss-fuzz')
285want_libfuzzer = get_option('llvm-fuzz')
286fuzzer_build = want_ossfuzz or want_libfuzzer
287if want_ossfuzz and want_libfuzzer
288 error('only one of oss-fuzz and llvm-fuzz can be specified')
289endif
290if want_libfuzzer
291 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
292endif
293if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500294 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
295endif
296
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900297possible_cc_flags = [
298 '-Wextra',
299 '-Werror=undef',
300 '-Wlogical-op',
301 '-Wmissing-include-dirs',
302 '-Wold-style-definition',
303 '-Wpointer-arith',
304 '-Winit-self',
305 '-Wdeclaration-after-statement',
306 '-Wfloat-equal',
307 '-Wsuggest-attribute=noreturn',
308 '-Werror=missing-prototypes',
309 '-Werror=implicit-function-declaration',
310 '-Werror=missing-declarations',
311 '-Werror=return-type',
312 '-Werror=incompatible-pointer-types',
313 '-Werror=format=2',
314 '-Wstrict-prototypes',
315 '-Wredundant-decls',
316 '-Wmissing-noreturn',
317 '-Wimplicit-fallthrough=5',
318 '-Wshadow',
319 '-Wendif-labels',
320 '-Wstrict-aliasing=2',
321 '-Wwrite-strings',
322 '-Werror=overflow',
323 '-Wdate-time',
324 '-Wnested-externs',
325 '-ffast-math',
326 '-fno-common',
327 '-fdiagnostics-show-option',
328 '-fno-strict-aliasing',
329 '-fvisibility=hidden',
330 '-fstack-protector',
331 '-fstack-protector-strong',
332 '--param=ssp-buffer-size=4',
333]
334
335# --as-needed and --no-undefined are provided by meson by default,
336# run mesonconf to see what is enabled
337possible_link_flags = [
338 '-Wl,-z,relro',
339 '-Wl,-z,now',
340]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400341
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500342# the oss-fuzz fuzzers are not built with -fPIE, so don't
343# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500344if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900345 possible_cc_flags += '-fPIE'
346 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500347endif
348
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900349if cc.get_id() == 'clang'
350 possible_cc_flags += [
351 '-Wno-typedef-redefinition',
352 '-Wno-gnu-variable-sized-type-not-at-end',
353 ]
354endif
355
356if get_option('buildtype') != 'debug'
357 possible_cc_flags += [
358 '-ffunction-sections',
359 '-fdata-sections',
360 ]
361
362 possible_link_flags += '-Wl,--gc-sections'
363endif
364
365add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
366
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400367# "negative" arguments: gcc on purpose does not return an error for "-Wno-"
368# arguments, just emits a warnings. So test for the "positive" version instead.
369foreach arg : ['unused-parameter',
370 'missing-field-initializers',
371 'unused-result',
Zbigniew Jędrzejewski-Szmekfb1b5882017-09-04 19:49:12 +0300372 'format-signedness',
373 'error=nonnull', # work-around for gcc 7.1 turning this on on its own
374 ]
Zbigniew Jędrzejewski-Szmek2c5434a2017-04-27 10:05:41 -0400375 if cc.has_argument('-W' + arg)
376 add_project_arguments('-Wno-' + arg, language : 'c')
377 endif
378endforeach
379
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800380if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400381 #include <time.h>
382 #include <inttypes.h>
383 typedef uint64_t usec_t;
384 usec_t now(clockid_t clock);
385 int main(void) {
386 struct timespec now;
387 return 0;
388 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800389''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400390 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391endif
392
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400393link_test_c = files('tools/meson-link-test.c')
394
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900395foreach arg : possible_link_flags
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400396 have = run_command(check_compilation_sh,
397 cc.cmd_array(), '-x', 'c', arg,
398 '-include', link_test_c).returncode() == 0
399 message('Linking with @0@ supported: @1@'.format(arg, have ? 'yes' : 'no'))
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900400 if have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400401 add_project_link_arguments(arg, language : 'c')
402 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400403endforeach
404
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400405cpp = ' '.join(cc.cmd_array()) + ' -E'
406
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400407#####################################################################
408# compilation result tests
409
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400410conf.set('_GNU_SOURCE', true)
411conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400412
413conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
418conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
419conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
420
421decl_headers = '''
422#include <uchar.h>
423#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000424#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100425#include <linux/stat.h>
426#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400427'''
428# FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
429
430foreach decl : ['char16_t',
431 'char32_t',
432 'key_serial_t',
433 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000434 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100435 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400437
438 # We get -1 if the size cannot be determined
439 have = cc.sizeof(decl, prefix : decl_headers) > 0
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200440 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400441endforeach
442
443foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
444 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
445 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
446 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530447 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
449 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
450 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
451 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
452 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
Susant Sahani9dfed8d2017-04-25 20:30:34 +0530453 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400454 # if_tunnel.h is buggy and cannot be included on its own
455 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
456 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
457 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
458 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
459 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
460 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
461 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
Susant Sahanid3848262017-12-23 23:25:03 +0530462 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 ['NDA_IFINDEX', 'linux/neighbour.h'],
464 ['IFA_FLAGS', 'linux/if_addr.h'],
Susant Sahanibce67bb2017-09-14 19:51:39 +0000465 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Susant Sahanid6df5832017-11-22 12:53:22 +0530467 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400468 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400469 prefix = decl.length() > 2 ? decl[2] : ''
470 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200471 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400472endforeach
473
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400474foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200475 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400476endforeach
477
478foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100479 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100480 ['gettid', '''#include <sys/types.h>
481 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100482 ['pivot_root', '''#include <stdlib.h>
483 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100484 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400485 #include <sys/stat.h>
486 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100487 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100488 ['renameat2', '''#include <stdio.h>
489 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400490 ['kcmp', '''#include <linux/kcmp.h>'''],
491 ['keyctl', '''#include <sys/types.h>
492 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100493 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400494 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200495 ['bpf', '''#include <sys/syscall.h>
496 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100497 ['statx', '''#include <sys/types.h>
498 #include <sys/stat.h>
499 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100500 ['explicit_bzero' , '''#include <string.h>'''],
501 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400502]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400503
Lennart Poettering85db59b2017-12-25 12:01:14 +0100504 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200505 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400506endforeach
507
Lennart Poettering85db59b2017-12-25 12:01:14 +0100508if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200509 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200510 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400511else
512 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200513 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200514 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400515endif
516
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400517#####################################################################
518
519sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400520awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400521m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400522stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400523git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100524env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100525perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400526
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400527meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400528mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400529test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
530splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400531
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
533# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500534progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536 ['kmod', '/usr/bin/kmod' ],
537 ['kexec', '/usr/sbin/kexec' ],
538 ['sulogin', '/usr/sbin/sulogin' ],
539 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
540 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
541 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
542 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
543 ]
544foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400545 path = get_option(prog[0] + '-path')
546 if path != ''
547 message('Using @1@ for @0@'.format(prog[0], path))
548 else
549 exe = find_program(prog[0],
550 '/usr/sbin/' + prog[0],
551 '/sbin/' + prog[0],
552 required: false)
553 path = exe.found() ? exe.path() : prog[1]
554 endif
555 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
556 conf.set_quoted(name, path)
557 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400558endforeach
559
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500560conf.set_quoted('TELINIT', get_option('telinit-path'))
561
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400562if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100563 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400564endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400565
566############################################################
567
568gperf = find_program('gperf')
569
570gperf_test_format = '''
571#include <string.h>
572const char * in_word_set(const char *, @0@);
573@1@
574'''
575gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
576gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
577gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
578if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400579 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400580else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400581 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
582 if cc.compiles(gperf_test)
583 gperf_len_type = 'unsigned'
584 else
585 error('unable to determine gperf len type')
586 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400587endif
588message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400589conf.set('GPERF_LEN_TYPE', gperf_len_type,
590 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400591
592############################################################
593
594if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400595 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400596endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100597foreach header : ['crypt.h',
598 'linux/btrfs.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400599 'linux/memfd.h',
600 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200601 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400602 'valgrind/memcheck.h',
603 'valgrind/valgrind.h',
604 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400605
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200606 conf.set10('HAVE_' + header.underscorify().to_upper(),
607 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400608endforeach
609
610############################################################
611
612conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400613conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
614gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400615
616default_hierarchy = get_option('default-hierarchy')
617conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
618 description : 'default cgroup hierarchy as string')
619if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400620 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400622 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400623else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400624 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400625endif
626
627time_epoch = get_option('time-epoch')
628if time_epoch == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400629 NEWS = files('NEWS')
630 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400631endif
632time_epoch = time_epoch.to_int()
633conf.set('TIME_EPOCH', time_epoch)
634
635system_uid_max = get_option('system-uid-max')
636if system_uid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 system_uid_max = run_command(
638 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800639 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
640 '/etc/login.defs').stdout().strip()
641 if system_uid_max == ''
642 system_uid_max = '999'
643 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
645system_uid_max = system_uid_max.to_int()
646conf.set('SYSTEM_UID_MAX', system_uid_max)
647substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400648message('maximum system UID is @0@'.format(system_uid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650system_gid_max = get_option('system-gid-max')
651if system_gid_max == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400652 system_gid_max = run_command(
653 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800654 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
655 '/etc/login.defs').stdout().strip()
656 if system_gid_max == ''
657 system_gid_max = '999'
658 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659endif
660system_gid_max = system_gid_max.to_int()
661conf.set('SYSTEM_GID_MAX', system_gid_max)
662substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek7572aa82017-04-24 21:46:40 -0400663message('maximum system GID is @0@'.format(system_gid_max))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100665dynamic_uid_min = get_option('dynamic-uid-min').to_int()
666dynamic_uid_max = get_option('dynamic-uid-max').to_int()
667conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
668conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
669substs.set('dynamicuidmin', dynamic_uid_min)
670substs.set('dynamicuidmax', dynamic_uid_max)
671
672container_uid_base_min = get_option('container-uid-base-min').to_int()
673container_uid_base_max = get_option('container-uid-base-max').to_int()
674conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
675conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
676substs.set('containeruidbasemin', container_uid_base_min)
677substs.set('containeruidbasemax', container_uid_base_max)
678
Lennart Poetteringafde4572017-12-05 11:00:24 +0100679nobody_user = get_option('nobody-user')
680nobody_group = get_option('nobody-group')
681
682getent_result = run_command('getent', 'passwd', '65534')
683if getent_result.returncode() == 0
684 name = getent_result.stdout().split(':')[0]
685 if name != nobody_user
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900686 warning('\n' +
687 '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) +
688 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100689 endif
690endif
691id_result = run_command('id', '-u', nobody_user)
692if id_result.returncode() == 0
693 id = id_result.stdout().to_int()
694 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900695 warning('\n' +
696 '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) +
697 'Your build will result in an user table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100698 endif
699endif
700
701getent_result = run_command('getent', 'group', '65534')
702if getent_result.returncode() == 0
703 name = getent_result.stdout().split(':')[0]
704 if name != nobody_group
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900705 warning('\n' +
706 '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) +
707 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100708 endif
709endif
710id_result = run_command('id', '-g', nobody_group)
711if id_result.returncode() == 0
712 id = id_result.stdout().to_int()
713 if id != 65534
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900714 warning('\n' +
715 '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) +
716 'Your build will result in an group table setup that is incompatible with the local system.')
Lennart Poetteringafde4572017-12-05 11:00:24 +0100717 endif
718endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900719if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900720 warning('\n' +
721 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
722 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900723endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100724
725conf.set_quoted('NOBODY_USER_NAME', nobody_user)
726conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900727substs.set('NOBODY_USER_NAME', nobody_user)
728substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100729
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730tty_gid = get_option('tty-gid')
731conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400732substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733
Ikey Doherty84786b82017-12-03 12:28:23 +0000734# Ensure provided GID argument is numeric, otherwise fallback to default assignment
735if get_option('users-gid') != ''
Yu Watanabed6806872017-12-05 14:01:39 +0900736 users_gid = get_option('users-gid').to_int()
Ikey Doherty84786b82017-12-03 12:28:23 +0000737else
Yu Watanabed6806872017-12-05 14:01:39 +0900738 users_gid = '-'
Ikey Doherty84786b82017-12-03 12:28:23 +0000739endif
740substs.set('USERS_GID', users_gid)
741
Yu Watanabe348b4432018-05-07 18:17:35 +0900742conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
743conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400744
745substs.set('DEV_KVM_MODE', get_option('dev-kvm-mode'))
Tom Stellard4e15a732017-10-31 08:46:24 -0700746substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400747
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400748kill_user_processes = get_option('default-kill-user-processes')
749conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100750conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400751substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400752
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400753dns_servers = get_option('dns-servers')
754conf.set_quoted('DNS_SERVERS', dns_servers)
755substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400756
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400757ntp_servers = get_option('ntp-servers')
758conf.set_quoted('NTP_SERVERS', ntp_servers)
759substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
761conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
762
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400763substs.set('SUSHELL', get_option('debug-shell'))
764substs.set('DEBUGTTY', get_option('debug-tty'))
765
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200766enable_debug_hashmap = false
767enable_debug_mmap_cache = false
Yu Watanabead7aa762018-05-02 13:56:28 +0900768foreach name : get_option('debug')
769 if name == 'hashmap'
770 enable_debug_hashmap = true
771 elif name == 'mmap-cache'
772 enable_debug_mmap_cache = true
773 else
774 message('unknown debug option "@0@", ignoring'.format(name))
775 endif
776endforeach
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-Szmekd18cb392018-05-13 22:28:24 +0200780conf.set10('VALGRIND', get_option('valgrind'))
781
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400782#####################################################################
783
784threads = dependency('threads')
785librt = cc.find_library('rt')
786libm = cc.find_library('m')
787libdl = cc.find_library('dl')
788libcrypt = cc.find_library('crypt')
789
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400790libcap = dependency('libcap', required : false)
791if not libcap.found()
792 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
793 libcap = cc.find_library('cap')
794endif
795
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400796libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100797 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400798
799want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500800if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400801 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400802 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400803 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200804 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200806 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400807 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400808endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200809conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400810
811want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500812if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400813 libselinux = dependency('libselinux',
814 version : '>= 2.1.9',
815 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200816 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200818 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400819 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400820endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200821conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400822
823want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500824if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400825 libapparmor = dependency('libapparmor',
826 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200829 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400831endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200832conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400833
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400834smack_run_label = get_option('smack-run-label')
835if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400836 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837endif
838
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400839want_polkit = get_option('polkit')
840install_polkit = false
841install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500842if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400843 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400844
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400845 libpolkit = dependency('polkit-gobject-1',
846 required : false)
847 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
848 message('Old polkit detected, will install pkla files')
849 install_polkit_pkla = true
850 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400851endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400853
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400854want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500855if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400856 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200857 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400858else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400860 libacl = []
861endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200862conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400863
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500865if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400866 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200867 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400868else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200869 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400871endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200872conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400873
874want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500875if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400876 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200877 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400878else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400880 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400881endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883
884want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500885if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400886 libkmod = dependency('libkmod',
887 version : '>= 15',
888 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400890else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200891 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400892 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400893endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895
896want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500897if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libpam = cc.find_library('pam', required : want_pam == 'true')
899 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200900 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libpam = []
904 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500909if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libmicrohttpd = dependency('libmicrohttpd',
911 version : '>= 0.9.33',
912 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500921if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libcryptsetup = dependency('libcryptsetup',
923 version : '>= 1.6.0',
924 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200925 have = libcryptsetup.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400926else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400928 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931
932want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500933if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400934 libcurl = dependency('libcurl',
935 version : '>= 7.32.0',
936 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400938else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200939 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400943
944want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400945want_libidn2 = get_option('libidn2')
946if want_libidn == 'true' and want_libidn2 == 'true'
947 error('libidn and libidn2 cannot be requested simultaneously')
948endif
949
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500950if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libidn = dependency('libidn',
952 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400954else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400956 libidn = []
957endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500959if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400960 # libidn is used for both libidn and libidn2 objects
961 libidn = dependency('libidn2',
962 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963 have = libidn.found()
964else
965 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400966endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968
969want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500970if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400971 libiptc = dependency('libiptc',
972 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200973 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400977endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979
980want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500981if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400982 libqrencode = dependency('libqrencode',
983 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400987 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200989conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400991want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400993 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
994 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200995 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -0400996else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = false
998endif
999if not have
1000 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001001 libgcrypt = []
1002 libgpg_error = []
1003endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001004conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001005
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001006want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001007if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001008 libgnutls = dependency('gnutls',
1009 version : '>= 3.1.4',
1010 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001017
1018want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001019if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libdw = dependency('libdw',
1021 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001025 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028
1029want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001030if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001031 libz = dependency('zlib',
1032 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001033 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001034else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001035 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001036 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001037endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001038conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039
1040want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001041if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001042 libbzip2 = cc.find_library('bz2',
1043 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
1051want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001052if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001053 libxz = dependency('liblzma',
1054 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001055 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001056else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001059endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061
1062want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001063if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001064 liblz4 = dependency('liblz4',
1065 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001066 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001067else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001070endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001073want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001074if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001075 libxkbcommon = dependency('xkbcommon',
1076 version : '>= 0.3.0',
1077 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001081 libxkbcommon = []
1082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001084
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001085want_pcre2 = get_option('pcre2')
1086if want_pcre2 != 'false'
1087 libpcre2 = dependency('libpcre2-8',
1088 required : want_pcre2 == 'true')
1089 have = libpcre2.found()
1090else
1091 have = false
1092 libpcre2 = []
1093endif
1094conf.set10('HAVE_PCRE2', have)
1095
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001096want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libglib = dependency('glib-2.0',
1099 version : '>= 2.22.0',
1100 required : want_glib == 'true')
1101 libgobject = dependency('gobject-2.0',
1102 version : '>= 2.22.0',
1103 required : want_glib == 'true')
1104 libgio = dependency('gio-2.0',
1105 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001106 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001107else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001108 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 libglib = []
1110 libgobject = []
1111 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001112endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001114
1115want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001116if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001117 libdbus = dependency('dbus-1',
1118 version : '>= 1.3.2',
1119 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001121else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001122 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001123 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001124endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001125conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001126
Yu Watanabe42303dc2017-06-18 05:22:32 +09001127default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001128if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001129 default_dnssec = 'no'
1130endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001132 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1133 default_dnssec = 'no'
1134endif
1135conf.set('DEFAULT_DNSSEC_MODE',
1136 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1137substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1138
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001139want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001140if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001141 have = (conf.get('HAVE_LIBCURL') == 1 and
1142 conf.get('HAVE_ZLIB') == 1 and
1143 conf.get('HAVE_BZIP2') == 1 and
1144 conf.get('HAVE_XZ') == 1 and
1145 conf.get('HAVE_GCRYPT') == 1)
1146 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001147 error('importd support was requested, but dependencies are not available')
1148 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001149else
1150 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001151endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001152conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001153
1154want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001155if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1157 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001158 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1159 # it's possible to build one without the other. Complain only if
1160 # support was explictly requested. The auxiliary files like sysusers
1161 # config should be installed when any of the programs are built.
1162 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1163 error('remote support was requested, but dependencies are not available')
1164 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = have_deps[0] or have_deps[1]
1166else
1167 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001168endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001169conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001171foreach term : ['utmp',
1172 'hibernate',
1173 'environment-d',
1174 'binfmt',
1175 'coredump',
1176 'resolve',
1177 'logind',
1178 'hostnamed',
1179 'localed',
1180 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001181 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001182 'networkd',
1183 'timedated',
1184 'timesyncd',
1185 'myhostname',
1186 'firstboot',
1187 'randomseed',
1188 'backlight',
1189 'vconsole',
1190 'quotacheck',
1191 'sysusers',
1192 'tmpfiles',
1193 'hwdb',
1194 'rfkill',
1195 'ldconfig',
1196 'efi',
1197 'tpm',
1198 'ima',
1199 'smack',
1200 'gshadow',
1201 'idn',
1202 'nss-systemd']
1203 have = get_option(term)
1204 name = 'ENABLE_' + term.underscorify().to_upper()
1205 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001206endforeach
1207
Yu Watanabe348b4432018-05-07 18:17:35 +09001208conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001209
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001210want_tests = get_option('tests')
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04001211install_tests = get_option('install-tests')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001212slow_tests = get_option('slow-tests')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001213tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001214fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001215
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001216conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001217
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001218#####################################################################
1219
1220if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001221 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001222
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001223 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001224 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001225 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001226 elif efi_arch == 'x86_64'
1227 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001228 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001229 elif efi_arch == 'arm'
1230 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001231 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001232 elif efi_arch == 'aarch64'
1233 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001234 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001235 else
1236 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001237 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001238 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001240 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001241 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001242
1243 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex').to_int())
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001244else
1245 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001246endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001248
1249#####################################################################
1250
1251config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001252 output : 'config.h',
1253 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254
Yu Watanabe348b4432018-05-07 18:17:35 +09001255meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1256
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001257includes = include_directories('src/basic',
1258 'src/shared',
1259 'src/systemd',
1260 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001261 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001262 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001263 'src/resolve',
1264 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001265 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001266 'src/login',
1267 'src/udev',
1268 'src/libudev',
1269 'src/core',
1270 'src/libsystemd/sd-bus',
1271 'src/libsystemd/sd-device',
1272 'src/libsystemd/sd-hwdb',
1273 'src/libsystemd/sd-id128',
1274 'src/libsystemd/sd-netlink',
1275 'src/libsystemd/sd-network',
1276 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001277 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001278
1279add_project_arguments('-include', 'config.h', language : 'c')
1280
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001281subdir('po')
1282subdir('catalog')
1283subdir('src/systemd')
1284subdir('src/basic')
1285subdir('src/libsystemd')
1286subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001287subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001289
1290libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001291 'journal-core',
1292 libjournal_core_sources,
1293 journald_gperf_c,
1294 include_directories : includes,
1295 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001296
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001297libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001298libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001299 'systemd',
Zbigniew Jędrzejewski-Szmek7f1ea2c2017-12-20 09:12:08 +01001300 '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 +02001301 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001302 include_directories : includes,
1303 link_args : ['-shared',
1304 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001305 link_with : [libbasic,
1306 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001307 link_whole : [libsystemd_static,
1308 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001309 dependencies : [threads,
1310 librt,
1311 libxz,
1312 liblz4],
1313 link_depends : libsystemd_sym,
1314 install : true,
1315 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001316
Davide Cavalca70848ec2018-04-09 02:43:35 -07001317static_libsystemd = get_option('static-libsystemd')
1318static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1319
1320install_libsystemd_static = static_library(
1321 'systemd',
1322 libsystemd_sources,
1323 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001324 basic_sources,
1325 basic_gcrypt_sources,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001326 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001327 build_by_default : static_libsystemd != 'false',
1328 install : static_libsystemd != 'false',
1329 install_dir : rootlibdir,
1330 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1331 dependencies : [threads,
1332 librt,
1333 libxz,
1334 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001335 libcap,
1336 libblkid,
1337 libmount,
1338 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001339 libgcrypt],
1340 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1341
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001342############################################################
1343
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001344# binaries that have --help and are intended for use by humans,
1345# usually, but not always, installed in /bin.
1346public_programs = []
1347
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348subdir('src/libudev')
1349subdir('src/shared')
1350subdir('src/core')
1351subdir('src/udev')
1352subdir('src/network')
1353
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001354subdir('src/analyze')
1355subdir('src/journal-remote')
1356subdir('src/coredump')
1357subdir('src/hostname')
1358subdir('src/import')
1359subdir('src/kernel-install')
1360subdir('src/locale')
1361subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001362subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001363subdir('src/nspawn')
1364subdir('src/resolve')
1365subdir('src/timedate')
1366subdir('src/timesync')
1367subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001368subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001369
1370subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001371subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001372subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001373subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001374
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001375############################################################
1376
1377# only static linking apart from libdl, to make sure that the
1378# module is linked to all libraries that it uses.
1379test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001380 'test-dlopen',
1381 test_dlopen_c,
1382 include_directories : includes,
1383 link_with : [libbasic],
1384 dependencies : [libdl])
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001385
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02001386foreach tuple : [['myhostname', 'ENABLE_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001387 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001388 ['mymachines', 'ENABLE_MACHINED'],
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001389 ['resolve', 'ENABLE_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001390
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001391 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 if condition
1393 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001394
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
1396 version_script_arg = join_paths(meson.current_source_dir(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001397
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 nss = shared_library(
1399 'nss_' + module,
1400 'src/nss-@0@/nss-@0@.c'.format(module),
1401 version : '2',
1402 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001403 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1404 link_args : ['-Wl,-z,nodelete',
1405 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001406 '-Wl,--version-script=' + version_script_arg,
1407 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001408 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 libbasic],
1410 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001411 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 link_depends : sym,
1413 install : true,
1414 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001415
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001416 # We cannot use shared_module because it does not support version suffix.
1417 # Unfortunately shared_library insists on creating the symlink…
1418 meson.add_install_script('sh', '-c',
1419 'rm $DESTDIR@0@/libnss_@1@.so'
1420 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001421
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001422 test('dlopen-nss_' + module,
1423 test_dlopen,
1424 args : [nss.full_path()]) # path to dlopen must include a slash
1425 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001426endforeach
1427
1428############################################################
1429
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001430executable('systemd',
1431 systemd_sources,
1432 include_directories : includes,
1433 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001434 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001435 dependencies : [threads,
1436 librt,
1437 libseccomp,
1438 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001439 libmount,
1440 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001441 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442 install : true,
1443 install_dir : rootlibexecdir)
1444
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001445meson.add_install_script(meson_make_symlink,
1446 join_paths(rootlibexecdir, 'systemd'),
1447 join_paths(rootsbindir, 'init'))
1448
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001449exe = executable('systemd-analyze',
1450 systemd_analyze_sources,
1451 include_directories : includes,
1452 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001453 libshared],
1454 dependencies : [threads,
1455 librt,
1456 libseccomp,
1457 libselinux,
1458 libmount,
1459 libblkid],
1460 install_rpath : rootlibexecdir,
1461 install : true)
1462public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
1464executable('systemd-journald',
1465 systemd_journald_sources,
1466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001467 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001468 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001469 dependencies : [threads,
1470 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001471 liblz4,
1472 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001473 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474 install : true,
1475 install_dir : rootlibexecdir)
1476
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001477exe = executable('systemd-cat',
1478 systemd_cat_sources,
1479 include_directories : includes,
1480 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001481 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001482 dependencies : [threads],
1483 install_rpath : rootlibexecdir,
1484 install : true)
1485public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001486
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001487exe = executable('journalctl',
1488 journalctl_sources,
1489 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001490 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001491 dependencies : [threads,
1492 libqrencode,
1493 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001494 liblz4,
1495 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001496 install_rpath : rootlibexecdir,
1497 install : true,
1498 install_dir : rootbindir)
1499public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500
1501executable('systemd-getty-generator',
1502 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001504 link_with : [libshared],
1505 install_rpath : rootlibexecdir,
1506 install : true,
1507 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508
1509executable('systemd-debug-generator',
1510 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001511 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001512 link_with : [libshared],
1513 install_rpath : rootlibexecdir,
1514 install : true,
1515 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516
1517executable('systemd-fstab-generator',
1518 'src/fstab-generator/fstab-generator.c',
1519 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001520 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001521 link_with : [libshared],
1522 install_rpath : rootlibexecdir,
1523 install : true,
1524 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001525
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001526if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001527 executable('30-systemd-environment-d-generator',
1528 'src/environment-d-generator/environment-d-generator.c',
1529 include_directories : includes,
1530 link_with : [libshared],
1531 install_rpath : rootlibexecdir,
1532 install : true,
1533 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001534
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001535 meson.add_install_script(meson_make_symlink,
1536 join_paths(sysconfdir, 'environment'),
1537 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001538endif
1539
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001540if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001541 executable('systemd-hibernate-resume-generator',
1542 'src/hibernate-resume/hibernate-resume-generator.c',
1543 include_directories : includes,
1544 link_with : [libshared],
1545 install_rpath : rootlibexecdir,
1546 install : true,
1547 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001548
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001549 executable('systemd-hibernate-resume',
1550 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001551 include_directories : includes,
1552 link_with : [libshared],
1553 install_rpath : rootlibexecdir,
1554 install : true,
1555 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001556endif
1557
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001558if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001559 executable('systemd-gpt-auto-generator',
1560 'src/gpt-auto-generator/gpt-auto-generator.c',
1561 'src/basic/blkid-util.h',
1562 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001563 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 dependencies : libblkid,
1565 install_rpath : rootlibexecdir,
1566 install : true,
1567 install_dir : systemgeneratordir)
1568
1569 exe = executable('systemd-dissect',
1570 'src/dissect/dissect.c',
1571 include_directories : includes,
1572 link_with : [libshared],
1573 install_rpath : rootlibexecdir,
1574 install : true,
1575 install_dir : rootlibexecdir)
1576 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001577endif
1578
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001579if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 executable('systemd-resolved',
1581 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001583 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001584 libbasic_gcrypt,
1585 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001586 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001587 libgpg_error,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001588 libm,
1589 libidn],
1590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001591 install : true,
1592 install_dir : rootlibexecdir)
1593
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001594 exe = executable('resolvectl',
1595 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001596 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001597 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001598 libbasic_gcrypt,
1599 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001600 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001601 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001602 libm,
1603 libidn],
1604 install_rpath : rootlibexecdir,
1605 install : true)
1606 public_programs += [exe]
Lennart Poettering088c1362018-02-27 17:48:54 +01001607
1608 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001609 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001610 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001611
1612 meson.add_install_script(meson_make_symlink,
1613 join_paths(bindir, 'resolvectl'),
1614 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615endif
1616
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001617if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001618 executable('systemd-logind',
1619 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001620 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001621 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001622 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001624 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001625 install_rpath : rootlibexecdir,
1626 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001627 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001629 exe = executable('loginctl',
1630 loginctl_sources,
1631 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001632 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001633 dependencies : [threads,
1634 liblz4,
1635 libxz],
1636 install_rpath : rootlibexecdir,
1637 install : true,
1638 install_dir : rootbindir)
1639 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001640
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001641 exe = executable('systemd-inhibit',
1642 'src/login/inhibit.c',
1643 include_directories : includes,
1644 link_with : [libshared],
1645 install_rpath : rootlibexecdir,
1646 install : true,
1647 install_dir : rootbindir)
1648 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001649
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001650 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001651 version_script_arg = join_paths(meson.current_source_dir(), pam_systemd_sym)
1652 pam_systemd = shared_library(
1653 'pam_systemd',
1654 pam_systemd_c,
1655 name_prefix : '',
1656 include_directories : includes,
1657 link_args : ['-shared',
1658 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001659 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 libshared_static],
1661 dependencies : [threads,
1662 libpam,
1663 libpam_misc],
1664 link_depends : pam_systemd_sym,
1665 install : true,
1666 install_dir : pamlibdir)
1667
1668 test('dlopen-pam_systemd',
1669 test_dlopen,
1670 args : [pam_systemd.full_path()]) # path to dlopen must include a slash
1671 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001672endif
1673
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001674executable('systemd-user-runtime-dir',
1675 user_runtime_dir_sources,
1676 include_directories : includes,
1677 link_with : [libshared, liblogind_core],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootlibexecdir)
1681
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001682if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001683 executable('systemd-user-sessions',
1684 'src/user-sessions/user-sessions.c',
1685 include_directories : includes,
1686 link_with : [libshared],
1687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690endif
1691
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001692if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001693 exe = executable('bootctl',
1694 'src/boot/bootctl.c',
1695 include_directories : includes,
1696 link_with : [libshared],
1697 dependencies : [libblkid],
1698 install_rpath : rootlibexecdir,
1699 install : true)
1700 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701endif
1702
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001703exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1704 include_directories : includes,
1705 link_with : [libshared],
1706 dependencies : [threads],
1707 install_rpath : rootlibexecdir,
1708 install : true)
1709public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001710
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001711exe = executable('systemctl', 'src/systemctl/systemctl.c',
1712 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001713 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001714 dependencies : [threads,
1715 libcap,
1716 libselinux,
1717 libxz,
1718 liblz4],
1719 install_rpath : rootlibexecdir,
1720 install : true,
1721 install_dir : rootbindir)
1722public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001723
Lennart Poettering61d05782018-04-16 21:41:40 +02001724if conf.get('ENABLE_PORTABLED') == 1
1725 executable('systemd-portabled',
1726 systemd_portabled_sources,
1727 include_directories : includes,
1728 link_with : [libshared],
1729 dependencies : [threads],
1730 install_rpath : rootlibexecdir,
1731 install : true,
1732 install_dir : rootlibexecdir)
1733
1734 exe = executable('portablectl', 'src/portable/portablectl.c',
1735 include_directories : includes,
1736 link_with : [libshared],
1737 dependencies : [threads],
1738 install_rpath : rootlibexecdir,
1739 install : true,
1740 install_dir : rootlibexecdir)
1741 public_programs += [exe]
1742endif
1743
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001744foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1745 meson.add_install_script(meson_make_symlink,
1746 join_paths(rootbindir, 'systemctl'),
1747 join_paths(rootsbindir, alias))
1748endforeach
1749
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001750if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 executable('systemd-backlight',
1752 'src/backlight/backlight.c',
1753 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001754 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 install_rpath : rootlibexecdir,
1756 install : true,
1757 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758endif
1759
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001760if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 executable('systemd-rfkill',
1762 'src/rfkill/rfkill.c',
1763 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001764 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001765 install_rpath : rootlibexecdir,
1766 install : true,
1767 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001768endif
1769
1770executable('systemd-system-update-generator',
1771 'src/system-update-generator/system-update-generator.c',
1772 include_directories : includes,
1773 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001774 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001775 install : true,
1776 install_dir : systemgeneratordir)
1777
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001778if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 executable('systemd-cryptsetup',
1780 'src/cryptsetup/cryptsetup.c',
1781 include_directories : includes,
1782 link_with : [libshared],
1783 dependencies : [libcryptsetup],
1784 install_rpath : rootlibexecdir,
1785 install : true,
1786 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001787
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001788 executable('systemd-cryptsetup-generator',
1789 'src/cryptsetup/cryptsetup-generator.c',
1790 include_directories : includes,
1791 link_with : [libshared],
1792 dependencies : [libcryptsetup],
1793 install_rpath : rootlibexecdir,
1794 install : true,
1795 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001796
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 executable('systemd-veritysetup',
1798 'src/veritysetup/veritysetup.c',
1799 include_directories : includes,
1800 link_with : [libshared],
1801 dependencies : [libcryptsetup],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001805
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 executable('systemd-veritysetup-generator',
1807 'src/veritysetup/veritysetup-generator.c',
1808 include_directories : includes,
1809 link_with : [libshared],
1810 dependencies : [libcryptsetup],
1811 install_rpath : rootlibexecdir,
1812 install : true,
1813 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001814endif
1815
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001816if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001817 executable('systemd-sysv-generator',
1818 'src/sysv-generator/sysv-generator.c',
1819 include_directories : includes,
1820 link_with : [libshared],
1821 install_rpath : rootlibexecdir,
1822 install : true,
1823 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001824
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001825 executable('systemd-rc-local-generator',
1826 'src/rc-local-generator/rc-local-generator.c',
1827 include_directories : includes,
1828 link_with : [libshared],
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001832endif
1833
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001834if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 executable('systemd-hostnamed',
1836 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001837 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001838 link_with : [libshared],
Zbigniew Jędrzejewski-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('hostnamectl',
1844 'src/hostname/hostnamectl.c',
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_LOCALED') == 1
1853 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001854 # logind will load libxkbcommon.so dynamically on its own
1855 deps = [libdl]
1856 else
1857 deps = []
1858 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04001859
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001860 executable('systemd-localed',
1861 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001862 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001863 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001865 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001866 install : true,
1867 install_dir : rootlibexecdir)
1868
1869 exe = executable('localectl',
1870 localectl_sources,
1871 include_directories : includes,
1872 link_with : [libshared],
1873 install_rpath : rootlibexecdir,
1874 install : true)
1875 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876endif
1877
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001878if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-timedated',
1880 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001881 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001882 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001883 install_rpath : rootlibexecdir,
1884 install : true,
1885 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09001886endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001887
Yu Watanabe6129ec82018-05-03 18:07:43 +09001888if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001889 exe = executable('timedatectl',
1890 'src/timedate/timedatectl.c',
1891 include_directories : includes,
1892 install_rpath : rootlibexecdir,
1893 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09001894 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001895 install : true)
1896 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001897endif
1898
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001899if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001900 executable('systemd-timesyncd',
1901 systemd_timesyncd_sources,
1902 include_directories : includes,
1903 link_with : [libshared],
1904 dependencies : [threads,
1905 libm],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001909
1910 executable('systemd-time-wait-sync',
1911 'src/time-wait-sync/time-wait-sync.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 install_rpath : rootlibexecdir,
1915 install : true,
1916 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917endif
1918
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001919if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001920 executable('systemd-machined',
1921 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001922 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001923 link_with : [libmachine_core,
1924 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001925 install_rpath : rootlibexecdir,
1926 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001927 install_dir : rootlibexecdir)
1928
1929 exe = executable('machinectl',
1930 'src/machine/machinectl.c',
1931 include_directories : includes,
1932 link_with : [libshared],
1933 dependencies : [threads,
1934 libxz,
1935 liblz4],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootbindir)
1939 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940endif
1941
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001942if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001943 executable('systemd-importd',
1944 systemd_importd_sources,
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [threads],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001951
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001952 systemd_pull = executable('systemd-pull',
1953 systemd_pull_sources,
1954 include_directories : includes,
1955 link_with : [libshared],
1956 dependencies : [libcurl,
1957 libz,
1958 libbzip2,
1959 libxz,
1960 libgcrypt],
1961 install_rpath : rootlibexecdir,
1962 install : true,
1963 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001964
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 systemd_import = executable('systemd-import',
1966 systemd_import_sources,
1967 include_directories : includes,
1968 link_with : [libshared],
1969 dependencies : [libcurl,
1970 libz,
1971 libbzip2,
1972 libxz],
1973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001977 systemd_export = executable('systemd-export',
1978 systemd_export_sources,
1979 include_directories : includes,
1980 link_with : [libshared],
1981 dependencies : [libcurl,
1982 libz,
1983 libbzip2,
1984 libxz],
1985 install_rpath : rootlibexecdir,
1986 install : true,
1987 install_dir : rootlibexecdir)
1988 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989endif
1990
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001991if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001992 exe = executable('systemd-journal-upload',
1993 systemd_journal_upload_sources,
1994 include_directories : includes,
1995 link_with : [libshared],
1996 dependencies : [threads,
1997 libcurl,
1998 libgnutls,
1999 libxz,
2000 liblz4],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
2004 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005endif
2006
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002007if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002008 s_j_remote = executable('systemd-journal-remote',
2009 systemd_journal_remote_sources,
2010 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002011 link_with : [libshared,
2012 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002013 dependencies : [threads,
2014 libmicrohttpd,
2015 libgnutls,
2016 libxz,
2017 liblz4],
2018 install_rpath : rootlibexecdir,
2019 install : true,
2020 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002021
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002022 s_j_gatewayd = executable('systemd-journal-gatewayd',
2023 systemd_journal_gatewayd_sources,
2024 include_directories : includes,
2025 link_with : [libshared],
2026 dependencies : [threads,
2027 libmicrohttpd,
2028 libgnutls,
2029 libxz,
2030 liblz4],
2031 install_rpath : rootlibexecdir,
2032 install : true,
2033 install_dir : rootlibexecdir)
2034 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002035endif
2036
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002037if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002038 executable('systemd-coredump',
2039 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002040 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002041 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002042 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 libacl,
2044 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002045 libxz,
2046 liblz4],
2047 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048 install : true,
2049 install_dir : rootlibexecdir)
2050
2051 exe = executable('coredumpctl',
2052 coredumpctl_sources,
2053 include_directories : includes,
2054 link_with : [libshared],
2055 dependencies : [threads,
2056 libxz,
2057 liblz4],
2058 install_rpath : rootlibexecdir,
2059 install : true)
2060 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002061endif
2062
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002063if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002064 exe = executable('systemd-binfmt',
2065 'src/binfmt/binfmt.c',
2066 include_directories : includes,
2067 link_with : [libshared],
2068 install_rpath : rootlibexecdir,
2069 install : true,
2070 install_dir : rootlibexecdir)
2071 public_programs += [exe]
2072
2073 meson.add_install_script('sh', '-c',
2074 mkdir_p.format(binfmtdir))
2075 meson.add_install_script('sh', '-c',
2076 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2077endif
2078
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002079if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 executable('systemd-vconsole-setup',
2081 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002082 include_directories : includes,
2083 link_with : [libshared],
2084 install_rpath : rootlibexecdir,
2085 install : true,
2086 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002087endif
2088
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002089if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002090 executable('systemd-random-seed',
2091 'src/random-seed/random-seed.c',
2092 include_directories : includes,
2093 link_with : [libshared],
2094 install_rpath : rootlibexecdir,
2095 install : true,
2096 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002097endif
2098
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002099if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 executable('systemd-firstboot',
2101 'src/firstboot/firstboot.c',
2102 include_directories : includes,
2103 link_with : [libshared],
2104 dependencies : [libcrypt],
2105 install_rpath : rootlibexecdir,
2106 install : true,
2107 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002108endif
2109
2110executable('systemd-remount-fs',
2111 'src/remount-fs/remount-fs.c',
2112 'src/core/mount-setup.c',
2113 'src/core/mount-setup.h',
2114 include_directories : includes,
2115 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002116 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002117 install : true,
2118 install_dir : rootlibexecdir)
2119
2120executable('systemd-machine-id-setup',
2121 'src/machine-id-setup/machine-id-setup-main.c',
2122 'src/core/machine-id-setup.c',
2123 'src/core/machine-id-setup.h',
2124 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002125 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002126 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002127 install : true,
2128 install_dir : rootbindir)
2129
2130executable('systemd-fsck',
2131 'src/fsck/fsck.c',
2132 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002133 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002134 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135 install : true,
2136 install_dir : rootlibexecdir)
2137
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002138executable('systemd-growfs',
2139 'src/partition/growfs.c',
2140 include_directories : includes,
2141 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002142 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002143 install_rpath : rootlibexecdir,
2144 install : true,
2145 install_dir : rootlibexecdir)
2146
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002147executable('systemd-makefs',
2148 'src/partition/makefs.c',
2149 include_directories : includes,
2150 link_with : [libshared],
2151 install_rpath : rootlibexecdir,
2152 install : true,
2153 install_dir : rootlibexecdir)
2154
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002155executable('systemd-sleep',
2156 'src/sleep/sleep.c',
2157 include_directories : includes,
2158 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002159 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002160 install : true,
2161 install_dir : rootlibexecdir)
2162
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002163exe = executable('systemd-sysctl',
2164 'src/sysctl/sysctl.c',
2165 include_directories : includes,
2166 link_with : [libshared],
2167 install_rpath : rootlibexecdir,
2168 install : true,
2169 install_dir : rootlibexecdir)
2170public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002171
2172executable('systemd-ac-power',
2173 'src/ac-power/ac-power.c',
2174 include_directories : includes,
2175 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002176 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002177 install : true,
2178 install_dir : rootlibexecdir)
2179
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002180exe = executable('systemd-detect-virt',
2181 'src/detect-virt/detect-virt.c',
2182 include_directories : includes,
2183 link_with : [libshared],
2184 install_rpath : rootlibexecdir,
2185 install : true)
2186public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002187
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002188exe = executable('systemd-delta',
2189 'src/delta/delta.c',
2190 include_directories : includes,
2191 link_with : [libshared],
2192 install_rpath : rootlibexecdir,
2193 install : true)
2194public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002195
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002196exe = executable('systemd-escape',
2197 'src/escape/escape.c',
2198 include_directories : includes,
2199 link_with : [libshared],
2200 install_rpath : rootlibexecdir,
2201 install : true,
2202 install_dir : rootbindir)
2203public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002204
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002205exe = executable('systemd-notify',
2206 'src/notify/notify.c',
2207 include_directories : includes,
2208 link_with : [libshared],
2209 install_rpath : rootlibexecdir,
2210 install : true,
2211 install_dir : rootbindir)
2212public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002213
2214executable('systemd-volatile-root',
2215 'src/volatile-root/volatile-root.c',
2216 include_directories : includes,
2217 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002218 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002219 install : true,
2220 install_dir : rootlibexecdir)
2221
2222executable('systemd-cgroups-agent',
2223 'src/cgroups-agent/cgroups-agent.c',
2224 include_directories : includes,
2225 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002226 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002227 install : true,
2228 install_dir : rootlibexecdir)
2229
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002230exe = executable('systemd-path',
2231 'src/path/path.c',
2232 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002233 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002234 install_rpath : rootlibexecdir,
2235 install : true)
2236public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002237
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002238exe = executable('systemd-ask-password',
2239 'src/ask-password/ask-password.c',
2240 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002241 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002242 install_rpath : rootlibexecdir,
2243 install : true,
2244 install_dir : rootbindir)
2245public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002246
2247executable('systemd-reply-password',
2248 'src/reply-password/reply-password.c',
2249 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002250 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002251 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002252 install : true,
2253 install_dir : rootlibexecdir)
2254
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002255exe = executable('systemd-tty-ask-password-agent',
2256 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2257 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002258 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002259 install_rpath : rootlibexecdir,
2260 install : true,
2261 install_dir : rootbindir)
2262public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002263
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002264exe = executable('systemd-cgls',
2265 'src/cgls/cgls.c',
2266 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002267 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268 install_rpath : rootlibexecdir,
2269 install : true)
2270public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002271
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272exe = executable('systemd-cgtop',
2273 'src/cgtop/cgtop.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
2280executable('systemd-initctl',
2281 'src/initctl/initctl.c',
2282 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002283 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002284 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002285 install : true,
2286 install_dir : rootlibexecdir)
2287
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002288exe = executable('systemd-mount',
2289 'src/mount/mount-tool.c',
2290 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002291 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002292 install_rpath : rootlibexecdir,
2293 install : true)
2294public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002295
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002296meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002297 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002298
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002299exe = executable('systemd-run',
2300 'src/run/run.c',
2301 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002302 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002303 install_rpath : rootlibexecdir,
2304 install : true)
2305public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002306
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002307exe = executable('systemd-stdio-bridge',
2308 'src/stdio-bridge/stdio-bridge.c',
2309 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002310 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002311 install_rpath : rootlibexecdir,
2312 install : true)
2313public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002315exe = executable('busctl',
2316 'src/busctl/busctl.c',
2317 'src/busctl/busctl-introspect.c',
2318 'src/busctl/busctl-introspect.h',
2319 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002320 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002321 install_rpath : rootlibexecdir,
2322 install : true)
2323public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 exe = executable('systemd-sysusers',
2327 'src/sysusers/sysusers.c',
2328 include_directories : includes,
2329 link_with : [libshared],
2330 install_rpath : rootlibexecdir,
2331 install : true,
2332 install_dir : rootbindir)
2333 public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002336if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002337 exe = executable('systemd-tmpfiles',
2338 'src/tmpfiles/tmpfiles.c',
2339 include_directories : includes,
2340 link_with : [libshared],
2341 dependencies : [libacl],
2342 install_rpath : rootlibexecdir,
2343 install : true,
2344 install_dir : rootbindir)
2345 public_programs += [exe]
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002346
2347 test('test-systemd-tmpfiles',
2348 test_systemd_tmpfiles_py,
2349 args : exe.full_path())
2350 # https://github.com/mesonbuild/meson/issues/2681
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002351endif
2352
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002353if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002354 exe = executable('systemd-hwdb',
2355 'src/hwdb/hwdb.c',
2356 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2357 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002358 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002359 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002360 install : true,
2361 install_dir : rootbindir)
2362 public_programs += [exe]
2363endif
2364
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002365if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002366 executable('systemd-quotacheck',
2367 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002368 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002369 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002370 install_rpath : rootlibexecdir,
2371 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002372 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002373endif
2374
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002375exe = executable('systemd-socket-proxyd',
2376 'src/socket-proxy/socket-proxyd.c',
2377 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002379 dependencies : [threads],
2380 install_rpath : rootlibexecdir,
2381 install : true,
2382 install_dir : rootlibexecdir)
2383public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002384
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002385exe = executable('systemd-udevd',
2386 systemd_udevd_sources,
2387 include_directories : includes,
Zbigniew Jędrzejewski-Szmek5c720492017-02-22 23:13:22 -05002388 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002391 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002392 dependencies : [threads,
2393 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002394 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002395 libacl,
2396 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002397 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002398 install : true,
2399 install_dir : rootlibexecdir)
2400public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002401
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002402exe = executable('udevadm',
2403 udevadm_sources,
Franck Bui6671e812017-12-16 09:36:36 +01002404 c_args : ['-DLOG_REALM=LOG_REALM_UDEV'],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002405 include_directories : includes,
2406 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002408 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002409 dependencies : [threads,
2410 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002412 libacl,
2413 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002414 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415 install : true,
2416 install_dir : rootbindir)
2417public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
2419executable('systemd-shutdown',
2420 systemd_shutdown_sources,
2421 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002422 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002423 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002424 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002425 install : true,
2426 install_dir : rootlibexecdir)
2427
2428executable('systemd-update-done',
2429 'src/update-done/update-done.c',
2430 include_directories : includes,
2431 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002432 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433 install : true,
2434 install_dir : rootlibexecdir)
2435
2436executable('systemd-update-utmp',
2437 'src/update-utmp/update-utmp.c',
2438 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002439 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002441 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442 install : true,
2443 install_dir : rootlibexecdir)
2444
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002445if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 executable('systemd-modules-load',
2447 'src/modules-load/modules-load.c',
2448 include_directories : includes,
2449 link_with : [libshared],
2450 dependencies : [libkmod],
2451 install_rpath : rootlibexecdir,
2452 install : true,
2453 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002454
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002455 meson.add_install_script('sh', '-c',
2456 mkdir_p.format(modulesloaddir))
2457 meson.add_install_script('sh', '-c',
2458 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459endif
2460
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461exe = executable('systemd-nspawn',
2462 systemd_nspawn_sources,
2463 'src/core/mount-setup.c', # FIXME: use a variable?
2464 'src/core/mount-setup.h',
2465 'src/core/loopback-setup.c',
2466 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002467 include_directories : includes,
2468 link_with : [libnspawn_core,
2469 libshared],
2470 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002471 install_rpath : rootlibexecdir,
2472 install : true)
2473public_programs += [exe]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002475if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002476 executable('systemd-networkd',
2477 systemd_networkd_sources,
2478 include_directories : includes,
2479 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002480 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002481 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002482 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002483 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002484 install_rpath : rootlibexecdir,
2485 install : true,
2486 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002487
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002488 executable('systemd-networkd-wait-online',
2489 systemd_networkd_wait_online_sources,
2490 include_directories : includes,
2491 link_with : [libnetworkd_core,
2492 libshared],
2493 install_rpath : rootlibexecdir,
2494 install : true,
2495 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002496
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002497 exe = executable('networkctl',
2498 networkctl_sources,
2499 include_directories : includes,
2500 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002502 install_rpath : rootlibexecdir,
2503 install : true,
2504 install_dir : rootbindir)
2505 public_programs += [exe]
2506endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002507
2508executable('systemd-sulogin-shell',
2509 ['src/sulogin-shell/sulogin-shell.c'],
2510 include_directories : includes,
2511 link_with : [libshared],
2512 install_rpath : rootlibexecdir,
2513 install : true,
2514 install_dir : rootlibexecdir)
2515
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002516############################################################
2517
2518foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002519 sources = tuple[0]
2520 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2521 dependencies = tuple[2]
2522 condition = tuple.length() >= 4 ? tuple[3] : ''
2523 type = tuple.length() >= 5 ? tuple[4] : ''
2524 defs = tuple.length() >= 6 ? tuple[5] : []
2525 incs = tuple.length() >= 7 ? tuple[6] : includes
2526 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002527
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002528 name = sources[0].split('/')[-1].split('.')[0]
2529 if type.startswith('timeout=')
2530 timeout = type.split('=')[1].to_int()
2531 type = ''
2532 endif
Adam Duskett08318a22018-01-15 06:25:46 -05002533 if want_tests == 'false'
2534 message('Not compiling @0@ because tests is set to false'.format(name))
2535 elif condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002536 exe = executable(
2537 name,
2538 sources,
2539 include_directories : incs,
2540 link_with : link_with,
2541 dependencies : dependencies,
2542 c_args : defs,
2543 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002544 install : install_tests,
2545 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002546
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002547 if type == 'manual'
2548 message('@0@ is a manual test'.format(name))
2549 elif type == 'unsafe' and want_tests != 'unsafe'
2550 message('@0@ is an unsafe test'.format(name))
2551 else
2552 test(name, exe,
2553 env : test_env,
2554 timeout : timeout)
2555 endif
2556 else
2557 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2558 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002559endforeach
2560
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002561exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002562 'test-libsystemd-sym',
2563 test_libsystemd_sym_c,
2564 include_directories : includes,
2565 link_with : [libsystemd],
2566 install : install_tests,
2567 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002568test('test-libsystemd-sym', exe)
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002569
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002570exe = executable(
2571 'test-libsystemd-static-sym',
2572 test_libsystemd_sym_c,
2573 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002574 link_with : [install_libsystemd_static],
2575 dependencies : [threads], # threads is already included in dependencies on the library,
2576 # but does not seem to get propagated. Add here as a work-around.
Davide Cavalca20f3d322018-04-24 13:34:48 -07002577 build_by_default : static_libsystemd_pic,
2578 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002579 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002580if static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002581 test('test-libsystemd-static-sym', exe)
2582endif
2583
2584exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002585 'test-libudev-sym',
2586 test_libudev_sym_c,
2587 include_directories : includes,
2588 c_args : ['-Wno-deprecated-declarations'],
2589 link_with : [libudev],
2590 install : install_tests,
2591 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002592test('test-libudev-sym', exe)
2593
2594exe = executable(
2595 'test-libudev-static-sym',
2596 test_libudev_sym_c,
2597 include_directories : includes,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002598 c_args : ['-Wno-deprecated-declarations'],
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002599 link_with : [install_libudev_static],
Davide Cavalca20f3d322018-04-24 13:34:48 -07002600 build_by_default : static_libudev_pic,
2601 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002602 install_dir : testsdir)
Davide Cavalca20f3d322018-04-24 13:34:48 -07002603if static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002604 test('test-libudev-static-sym', exe)
2605endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002606
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002607############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002609fuzzer_exes = []
2610
2611foreach tuple : fuzzers
2612 sources = tuple[0]
2613 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2614 dependencies = tuple[2]
2615 defs = tuple.length() >= 4 ? tuple[3] : []
2616 incs = tuple.length() >= 5 ? tuple[4] : includes
2617
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002618 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002619 dependencies += fuzzing_engine
2620 else
2621 sources += 'src/fuzz/fuzz-main.c'
2622 endif
2623
2624 name = sources[0].split('/')[-1].split('.')[0]
2625
2626 fuzzer_exes += executable(
2627 name,
2628 sources,
2629 include_directories : [incs, include_directories('src/fuzz')],
2630 link_with : link_with,
2631 dependencies : dependencies,
2632 c_args : defs,
2633 install : false)
2634endforeach
2635
2636run_target('fuzzers',
2637 depends : fuzzer_exes,
2638 command : ['true'])
2639
2640############################################################
2641
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002642make_directive_index_py = find_program('tools/make-directive-index.py')
2643make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002644xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002645hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002646
2647subdir('units')
2648subdir('sysctl.d')
2649subdir('sysusers.d')
2650subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002651subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002652subdir('hwdb')
2653subdir('network')
2654subdir('man')
2655subdir('shell-completion/bash')
2656subdir('shell-completion/zsh')
Lennart Poettering2d684e62018-03-28 16:58:37 +02002657subdir('doc/sysvinit')
2658subdir('doc/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002659
2660# FIXME: figure out if the warning is true:
2661# https://github.com/mesonbuild/meson/wiki/Reference-manual#install_subdir
2662install_subdir('factory/etc',
2663 install_dir : factorydir)
2664
2665
2666install_data('xorg/50-systemd-user.sh',
2667 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002668install_data('modprobe.d/systemd.conf',
2669 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002670install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002671 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002672 'NEWS',
2673 'README',
2674 'doc/CODING_STYLE',
2675 'doc/DISTRO_PORTING',
2676 'doc/ENVIRONMENT.md',
2677 'doc/HACKING',
2678 'doc/TRANSIENT-SETTINGS.md',
2679 'doc/TRANSLATORS',
2680 'doc/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002681 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2682 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002683
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002684meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2685meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2686
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002687############################################################
2688
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002689meson_check_help = find_program('tools/meson-check-help.sh')
2690
2691foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 name = exec.full_path().split('/')[-1]
2693 test('check-help-' + name,
2694 meson_check_help,
2695 args : [exec.full_path()])
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002696endforeach
2697
2698############################################################
2699
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002700# Enable tests for all supported sanitizers
2701foreach tuple : sanitizers
2702 sanitizer = tuple[0]
2703 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002704
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002705 have = run_command(check_compilation_sh,
2706 cc.cmd_array(), '-x', 'c',
2707 '-fsanitize=@0@'.format(sanitizer),
2708 '-include', link_test_c).returncode() == 0
2709 message('@0@ sanitizer supported: @1@'.format(sanitizer, have ? 'yes' : 'no'))
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002710
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002711 if have
2712 prev = ''
2713 foreach p : fuzz_regression_tests
2714 b = p.split('/')[-2]
2715 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002716
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002717 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002718
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002719 if name != prev
2720 if want_tests == 'false'
2721 message('Not compiling @0@ because tests is set to false'.format(name))
2722 elif slow_tests
2723 exe = custom_target(
2724 name,
2725 output : name,
2726 depends : build,
2727 command : [env, 'ln', '-fs',
2728 join_paths(build.full_path(), b),
2729 '@OUTPUT@'],
2730 build_by_default : true)
2731 else
2732 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2733 endif
2734 endif
2735 prev = name
2736
2737 if want_tests != 'false' and slow_tests
2738 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2739 env,
2740 args : [exe.full_path(),
2741 join_paths(meson.source_root(),
2742 'test/fuzz-regressions',
2743 p)])
2744 endif
2745 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002746 endif
2747endforeach
2748
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002749
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002750############################################################
2751
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002752if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002753 all_files = run_command(
2754 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002755 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002756 'ls-files',
2757 ':/*.[ch]'])
2758 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002759
userwithuide85a6902017-08-09 13:41:44 +00002760 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002761 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002762 output : 'tags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002763 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.current_source_dir())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002764 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002765 'ctags',
Zbigniew Jędrzejewski-Szmek25a82102018-01-26 16:15:17 +01002766 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.current_source_dir())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002767endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002768
2769if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002770 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002771 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002772 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002773 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002774endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002775
2776if git.found()
2777 git_head = run_command(
2778 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002779 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002780 'rev-parse', 'HEAD']).stdout().strip()
2781 git_head_short = run_command(
2782 git,
Davide Cavalca450b60b2017-08-30 08:04:53 -07002783 ['--git-dir=@0@/.git'.format(meson.current_source_dir()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002784 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2785
2786 run_target(
2787 'git-snapshot',
2788 command : ['git', 'archive',
Davide Cavalca450b60b2017-08-30 08:04:53 -07002789 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.current_source_dir(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002790 git_head_short),
2791 '--prefix', 'systemd-@0@/'.format(git_head),
2792 'HEAD'])
2793endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002794
2795############################################################
2796
Lennart Poettering51b13862017-12-20 12:51:14 +01002797meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2798run_target(
2799 'check-api-docs',
2800 depends : [man, libsystemd, libudev],
2801 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2802
2803############################################################
2804
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002805status = [
2806 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2807
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002808 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002809 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002810 'prefix directory: @0@'.format(prefixdir),
2811 'rootprefix directory: @0@'.format(rootprefixdir),
2812 'sysconf directory: @0@'.format(sysconfdir),
2813 'include directory: @0@'.format(includedir),
2814 'lib directory: @0@'.format(libdir),
2815 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002816 'SysV init scripts: @0@'.format(sysvinit_path),
2817 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09002818 'PAM modules directory: @0@'.format(pamlibdir),
2819 'PAM configuration directory: @0@'.format(pamconfdir),
2820 'RPM macros directory: @0@'.format(rpmmacrosdir),
2821 'modprobe.d directory: @0@'.format(modprobedir),
2822 'D-Bus policy directory: @0@'.format(dbuspolicydir),
2823 'D-Bus session directory: @0@'.format(dbussessionservicedir),
2824 'D-Bus system directory: @0@'.format(dbussystemservicedir),
2825 'bash completions directory: @0@'.format(bashcompletiondir),
2826 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002827 'extra start script: @0@'.format(get_option('rc-local')),
2828 'extra stop script: @0@'.format(get_option('halt-local')),
2829 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
2830 get_option('debug-tty')),
2831 'TTY GID: @0@'.format(tty_gid),
Ikey Doherty84786b82017-12-03 12:28:23 +00002832 'users GID: @0@'.format(users_gid),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002833 'maximum system UID: @0@'.format(system_uid_max),
2834 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01002835 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
2836 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
2837 'minimum container UID base: @0@'.format(container_uid_base_min),
2838 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002839 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07002840 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09002841 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002842 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01002843 'nobody user name: @0@'.format(nobody_user),
2844 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002845 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04002846 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002847
2848 'default DNSSEC mode: @0@'.format(default_dnssec),
2849 'default cgroup hierarchy: @0@'.format(default_hierarchy),
2850 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
2851
2852alt_dns_servers = '\n '.join(dns_servers.split(' '))
2853alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
2854status += [
2855 'default DNS servers: @0@'.format(alt_dns_servers),
2856 'default NTP servers: @0@'.format(alt_ntp_servers)]
2857
2858alt_time_epoch = run_command('date', '-Is', '-u', '-d',
2859 '@@0@'.format(time_epoch)).stdout().strip()
2860status += [
2861 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
2862
2863# TODO:
2864# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
2865# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
2866# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
2867
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002868if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002869 status += [
2870 'efi arch: @0@'.format(efi_arch)]
2871
2872 if have_gnu_efi
2873 status += [
2874 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
2875 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09002876 'EFI lib directory: @0@'.format(efi_libdir),
2877 'EFI lds directory: @0@'.format(efi_ldsdir),
2878 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002879 endif
2880endif
2881
2882found = []
2883missing = []
2884
2885foreach tuple : [
2886 ['libcryptsetup'],
2887 ['PAM'],
2888 ['AUDIT'],
2889 ['IMA'],
2890 ['AppArmor'],
2891 ['SELinux'],
2892 ['SECCOMP'],
2893 ['SMACK'],
2894 ['zlib'],
2895 ['xz'],
2896 ['lz4'],
2897 ['bzip2'],
2898 ['ACL'],
2899 ['gcrypt'],
2900 ['qrencode'],
2901 ['microhttpd'],
2902 ['gnutls'],
2903 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04002904 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04002905 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002906 ['libidn'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02002907 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002908 ['libiptc'],
2909 ['elfutils'],
2910 ['binfmt'],
2911 ['vconsole'],
2912 ['quotacheck'],
2913 ['tmpfiles'],
2914 ['environment.d'],
2915 ['sysusers'],
2916 ['firstboot'],
2917 ['randomseed'],
2918 ['backlight'],
2919 ['rfkill'],
2920 ['logind'],
2921 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02002922 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002923 ['importd'],
2924 ['hostnamed'],
2925 ['timedated'],
2926 ['timesyncd'],
2927 ['localed'],
2928 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09002929 ['resolve'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002930 ['coredump'],
2931 ['polkit'],
2932 ['legacy pkla', install_polkit_pkla],
2933 ['efi'],
2934 ['gnu-efi', have_gnu_efi],
2935 ['kmod'],
2936 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01002937 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002938 ['blkid'],
2939 ['dbus'],
2940 ['glib'],
Zbigniew Jędrzejewski-Szmek08cf5b82017-10-03 12:23:55 +02002941 ['nss-myhostname', conf.get('ENABLE_MYHOSTNAME') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002942 ['hwdb'],
2943 ['tpm'],
2944 ['man pages', want_man],
2945 ['html pages', want_html],
2946 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002947 ['SysV compat'],
2948 ['utmp'],
2949 ['ldconfig'],
2950 ['hibernate'],
2951 ['adm group', get_option('adm-group')],
2952 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02002953 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002954 ['debug hashmap'],
2955 ['debug mmap cache'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02002956 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002957]
2958
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01002959 if tuple.length() >= 2
2960 cond = tuple[1]
2961 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002962 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
2963 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002964 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002965 endif
2966 if cond
2967 found += [tuple[0]]
2968 else
2969 missing += [tuple[0]]
2970 endif
2971endforeach
2972
2973status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002974 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002975 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04002976 '',
2977 'disabled features: @0@'.format(', '.join(missing)),
2978 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002979message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002980
2981if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09002982 warning('\n' +
2983 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
2984 'systemd used fixed names for unit file directories and other paths, so anything\n' +
2985 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01002986endif