blob: d8e35e618d2507dc7ad4bff5b979314c450d4324 [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020030want_ossfuzz = get_option('oss-fuzz')
31want_libfuzzer = get_option('llvm-fuzz')
32if want_ossfuzz and want_libfuzzer
33 error('only one of oss-fuzz and llvm-fuzz can be specified')
34endif
35fuzzer_build = want_ossfuzz or want_libfuzzer
36
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040037#####################################################################
38
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040039# Try to install the git pre-commit hook
40git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
41if git_hook.returncode() == 0
42 message(git_hook.stdout().strip())
43endif
44
45#####################################################################
46
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010047if get_option('split-usr') == 'auto'
48 split_usr = run_command('test', '-L', '/bin').returncode() != 0
49else
50 split_usr = get_option('split-usr') == 'true'
51endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010052conf.set10('HAVE_SPLIT_USR', split_usr,
53 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010054
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055if get_option('split-bin') == 'auto'
56 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
57else
58 split_bin = get_option('split-bin') == 'true'
59endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010060conf.set10('HAVE_SPLIT_BIN', split_bin,
61 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010062
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064# Unusual rootprefixdir values are used by some distros
65# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010066rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067if rootprefixdir == ''
68 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010078conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020079
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080# join_paths ignore the preceding arguments if an absolute component is
81# encountered, so this should canonicalize various paths when they are
82# absolute or relative.
83prefixdir = get_option('prefix')
84if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040085 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086endif
87bindir = join_paths(prefixdir, get_option('bindir'))
88libdir = join_paths(prefixdir, get_option('libdir'))
89sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
90includedir = join_paths(prefixdir, get_option('includedir'))
91datadir = join_paths(prefixdir, get_option('datadir'))
92localstatedir = join_paths('/', get_option('localstatedir'))
93
94rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010095rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
97
98rootlibdir = get_option('rootlibdir')
99if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400100 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101endif
102
103# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200104pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
105pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400106polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
107polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
108polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
109varlogdir = join_paths(localstatedir, 'log')
110xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900111rpmmacrosdir = get_option('rpmmacrosdir')
112if rpmmacrosdir != 'no'
113 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
114endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200115modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400116
117# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118pkgdatadir = join_paths(datadir, 'systemd')
119environmentdir = join_paths(prefixdir, 'lib/environment.d')
120pkgsysconfdir = join_paths(sysconfdir, 'systemd')
121userunitdir = join_paths(prefixdir, 'lib/systemd/user')
122userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
123tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
124sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
125sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
126binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
127modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
128networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
129pkgincludedir = join_paths(includedir, 'systemd')
130systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
131usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
132systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
133userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
134systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
135systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
136systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
137systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
138udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
139udevhomedir = udevlibexecdir
140udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
141udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
142catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
143kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
144factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
146testsdir = join_paths(prefixdir, 'lib/systemd/tests')
147systemdstatedir = join_paths(localstatedir, 'lib/systemd')
148catalogstatedir = join_paths(systemdstatedir, 'catalog')
149randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200150profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151
tblume75aaade2018-02-01 22:46:15 +0100152docdir = get_option('docdir')
153if docdir == ''
154 docdir = join_paths(datadir, 'doc/systemd')
155endif
156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157dbuspolicydir = get_option('dbuspolicydir')
158if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162dbussessionservicedir = get_option('dbussessionservicedir')
163if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussystemservicedir = get_option('dbussystemservicedir')
168if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172pamlibdir = get_option('pamlibdir')
173if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamconfdir = get_option('pamconfdir')
178if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100182memory_accounting_default = get_option('memory-accounting-default')
183
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
187conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
188conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
190conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100191
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100192conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100193
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
196conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
198conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
199conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
200conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100201conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100202conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
204conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
205conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
206conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
207conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100208conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400209conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
211conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
213conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
214conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
215conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
216conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
217conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
219conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700220conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700221conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('LIBDIR', libdir)
225conf.set_quoted('ROOTLIBDIR', rootlibdir)
226conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
227conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
229conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200230conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
232conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
233conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
234conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200235conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100236conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('exec_prefix', prefixdir)
240substs.set('libdir', libdir)
241substs.set('rootlibdir', rootlibdir)
242substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('bindir', bindir)
245substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400246substs.set('rootlibexecdir', rootlibexecdir)
247substs.set('systemunitdir', systemunitdir)
248substs.set('userunitdir', userunitdir)
249substs.set('systempresetdir', systempresetdir)
250substs.set('userpresetdir', userpresetdir)
251substs.set('udevhwdbdir', udevhwdbdir)
252substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200254substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('catalogdir', catalogdir)
256substs.set('tmpfilesdir', tmpfilesdir)
257substs.set('sysusersdir', sysusersdir)
258substs.set('sysctldir', sysctldir)
259substs.set('binfmtdir', binfmtdir)
260substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('systemgeneratordir', systemgeneratordir)
263substs.set('usergeneratordir', usergeneratordir)
264substs.set('systemenvgeneratordir', systemenvgeneratordir)
265substs.set('userenvgeneratordir', userenvgeneratordir)
266substs.set('systemshutdowndir', systemshutdowndir)
267substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400268substs.set('VARLOGDIR', varlogdir)
269substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400270substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
271substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400272substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
273substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
274substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
275substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100276substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200277substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278
279#####################################################################
280
281cc = meson.get_compiler('c')
282pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400283check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100284meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200286want_tests = get_option('tests')
287slow_tests = want_tests != 'false' and get_option('slow-tests')
288install_tests = get_option('install-tests')
289
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200290cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200291if cxx.found()
292 # Used only for tests
293 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200294 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200295else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200296 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400297endif
298
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500299if want_libfuzzer
300 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200301elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500302 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
303endif
304
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900305possible_cc_flags = [
306 '-Wextra',
307 '-Werror=undef',
308 '-Wlogical-op',
309 '-Wmissing-include-dirs',
310 '-Wold-style-definition',
311 '-Wpointer-arith',
312 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900313 '-Wfloat-equal',
314 '-Wsuggest-attribute=noreturn',
315 '-Werror=missing-prototypes',
316 '-Werror=implicit-function-declaration',
317 '-Werror=missing-declarations',
318 '-Werror=return-type',
319 '-Werror=incompatible-pointer-types',
320 '-Werror=format=2',
321 '-Wstrict-prototypes',
322 '-Wredundant-decls',
323 '-Wmissing-noreturn',
324 '-Wimplicit-fallthrough=5',
325 '-Wshadow',
326 '-Wendif-labels',
327 '-Wstrict-aliasing=2',
328 '-Wwrite-strings',
329 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200330 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200331 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900332 '-Wdate-time',
333 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700334
335 # negative arguments are correctly detected starting with meson 0.46.
336 '-Wno-unused-parameter',
337 '-Wno-missing-field-initializers',
338 '-Wno-unused-result',
339 '-Wno-format-signedness',
340
341 # work-around for gcc 7.1 turning this on on its own.
342 '-Wno-error=nonnull',
343
344 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
345 # optimizations enabled, producing essentially false positives.
346 '-Wno-maybe-uninitialized',
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-ffast-math',
349 '-fno-common',
350 '-fdiagnostics-show-option',
351 '-fno-strict-aliasing',
352 '-fvisibility=hidden',
353 '-fstack-protector',
354 '-fstack-protector-strong',
355 '--param=ssp-buffer-size=4',
356]
357
358# --as-needed and --no-undefined are provided by meson by default,
359# run mesonconf to see what is enabled
360possible_link_flags = [
361 '-Wl,-z,relro',
362 '-Wl,-z,now',
363]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500365# the oss-fuzz fuzzers are not built with -fPIE, so don't
366# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500367if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900368 possible_cc_flags += '-fPIE'
369 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500370endif
371
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900372if cc.get_id() == 'clang'
373 possible_cc_flags += [
374 '-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
377endif
378
379if get_option('buildtype') != 'debug'
380 possible_cc_flags += [
381 '-ffunction-sections',
382 '-fdata-sections',
383 ]
384
385 possible_link_flags += '-Wl,--gc-sections'
386endif
387
388add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900389add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900390
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800391if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392 #include <time.h>
393 #include <inttypes.h>
394 typedef uint64_t usec_t;
395 usec_t now(clockid_t clock);
396 int main(void) {
397 struct timespec now;
398 return 0;
399 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100400''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400401 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endif
403
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200404cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426
427foreach decl : ['char16_t',
428 'char32_t',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000429 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530430 'struct fib_rule_port_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100431 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400433
434 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200435 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
436
437 if decl == 'struct statx'
438 if have
439 want_linux_stat_h = false
440 else
441 have = cc.sizeof(decl,
442 prefix : decl_headers + '#include <linux/stat.h>',
443 args : '-D_GNU_SOURCE') > 0
444 want_linux_stat_h = have
445 endif
446 endif
447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200448 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700452
Yu Watanabe9714c022018-12-02 16:27:02 +0100453foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900454 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
455 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
456 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
457 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
458 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100459 ['FRA_TUN_ID', 'linux/fib_rules.h'],
460 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100461 ['FRA_PAD', 'linux/fib_rules.h'],
462 ['FRA_L3MDEV', 'linux/fib_rules.h'],
463 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
464 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
465 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
466 ['FOU_CMD_GET', 'linux/fou.h'],
467 ['IFA_FLAGS', 'linux/if_addr.h'],
468 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
469 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
470 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
471 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
472 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
473 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
474 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
475 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
476 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
477 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
478 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
479 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
480 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
481 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
482 ['IFLA_PAD', 'linux/if_link.h'],
483 ['IFLA_XDP', 'linux/if_link.h'],
484 ['IFLA_EVENT', 'linux/if_link.h'],
485 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
486 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
487 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
488 ['IFLA_MAX_MTU', 'linux/if_link.h'],
489 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
490 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
491 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
492 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
493 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
494 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
495 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
496 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
497 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
498 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
499 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
500 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
501 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
502 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
503 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
504 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
505 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
506 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
507 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
508 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
509 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
510 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
511 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
512 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
513 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
514 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
515 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
516 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
517 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
518 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
519 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
520 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
521 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
522 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
523 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
524 # if_tunnel.h is buggy and cannot be included on its own
525 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
527 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
528 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
529 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
530 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
531 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
532 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
533 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
534 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
535 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400537 prefix = decl.length() > 2 ? decl[2] : ''
538 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200539 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540endforeach
541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200543 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544endforeach
545
546foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100547 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100548 ['gettid', '''#include <sys/types.h>
549 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100550 ['pivot_root', '''#include <stdlib.h>
551 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400553 #include <sys/stat.h>
554 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100555 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100556 ['renameat2', '''#include <stdio.h>
557 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400558 ['kcmp', '''#include <linux/kcmp.h>'''],
559 ['keyctl', '''#include <sys/types.h>
560 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100561 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200563 ['bpf', '''#include <sys/syscall.h>
564 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100565 ['statx', '''#include <sys/types.h>
566 #include <sys/stat.h>
567 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100568 ['explicit_bzero' , '''#include <string.h>'''],
569 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400570]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571
Lennart Poettering85db59b2017-12-25 12:01:14 +0100572 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200573 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574endforeach
575
Lennart Poettering85db59b2017-12-25 12:01:14 +0100576if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200577 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200578 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400579else
580 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200581 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200582 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400583endif
584
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585#####################################################################
586
587sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400589m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400591git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100592env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100593perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400595meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400596mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400597test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
598splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400599
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
601# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500602progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604 ['kmod', '/usr/bin/kmod' ],
605 ['kexec', '/usr/sbin/kexec' ],
606 ['sulogin', '/usr/sbin/sulogin' ],
607 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
608 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
609 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
610 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
611 ]
612foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 path = get_option(prog[0] + '-path')
614 if path != ''
615 message('Using @1@ for @0@'.format(prog[0], path))
616 else
617 exe = find_program(prog[0],
618 '/usr/sbin/' + prog[0],
619 '/sbin/' + prog[0],
620 required: false)
621 path = exe.found() ? exe.path() : prog[1]
622 endif
623 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
624 conf.set_quoted(name, path)
625 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endforeach
627
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500628conf.set_quoted('TELINIT', get_option('telinit-path'))
629
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400630if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100631 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400632endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634############################################################
635
636gperf = find_program('gperf')
637
638gperf_test_format = '''
639#include <string.h>
640const char * in_word_set(const char *, @0@);
641@1@
642'''
643gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
644gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
645gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
646if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
650 if cc.compiles(gperf_test)
651 gperf_len_type = 'unsigned'
652 else
653 error('unable to determine gperf len type')
654 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657conf.set('GPERF_LEN_TYPE', gperf_len_type,
658 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660############################################################
661
662if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100665foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100666 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900667 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668 'linux/memfd.h',
669 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100670 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200671 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672 'valgrind/memcheck.h',
673 'valgrind/valgrind.h',
674 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400675
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200676 conf.set10('HAVE_' + header.underscorify().to_upper(),
677 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endforeach
679
680############################################################
681
682conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400683conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
684gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685
686default_hierarchy = get_option('default-hierarchy')
687conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
688 description : 'default cgroup hierarchy as string')
689if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695endif
696
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100697default_net_naming_scheme = get_option('default-net-naming-scheme')
698conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
699
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400700time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900701if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400702 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900703 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705conf.set('TIME_EPOCH', time_epoch)
706
707system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900708if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400709 system_uid_max = run_command(
710 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800711 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
712 '/etc/login.defs').stdout().strip()
713 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900714 system_uid_max = 999
715 else
716 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800717 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400719conf.set('SYSTEM_UID_MAX', system_uid_max)
720substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400721
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400722system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900723if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400724 system_gid_max = run_command(
725 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800726 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
727 '/etc/login.defs').stdout().strip()
728 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900729 system_gid_max = 999
730 else
731 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800732 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400734conf.set('SYSTEM_GID_MAX', system_gid_max)
735substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400736
Yu Watanabeac093402018-05-10 16:04:16 +0900737dynamic_uid_min = get_option('dynamic-uid-min')
738dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100739conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
740conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
741substs.set('dynamicuidmin', dynamic_uid_min)
742substs.set('dynamicuidmax', dynamic_uid_max)
743
Yu Watanabeac093402018-05-10 16:04:16 +0900744container_uid_base_min = get_option('container-uid-base-min')
745container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100746conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
747conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
748substs.set('containeruidbasemin', container_uid_base_min)
749substs.set('containeruidbasemax', container_uid_base_max)
750
Lennart Poetteringafde4572017-12-05 11:00:24 +0100751nobody_user = get_option('nobody-user')
752nobody_group = get_option('nobody-group')
753
Chen Qi2484bff2018-07-23 14:53:09 +0800754if not meson.is_cross_build()
755 getent_result = run_command('getent', 'passwd', '65534')
756 if getent_result.returncode() == 0
757 name = getent_result.stdout().split(':')[0]
758 if name != nobody_user
759 warning('\n' +
760 '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) +
761 'Your build will result in an user table setup that is incompatible with the local system.')
762 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100763 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800764 id_result = run_command('id', '-u', nobody_user)
765 if id_result.returncode() == 0
766 id = id_result.stdout().to_int()
767 if id != 65534
768 warning('\n' +
769 '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) +
770 'Your build will result in an user table setup that is incompatible with the local system.')
771 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100772 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100773
Chen Qi2484bff2018-07-23 14:53:09 +0800774 getent_result = run_command('getent', 'group', '65534')
775 if getent_result.returncode() == 0
776 name = getent_result.stdout().split(':')[0]
777 if name != nobody_group
778 warning('\n' +
779 '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) +
780 'Your build will result in an group table setup that is incompatible with the local system.')
781 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100782 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800783 id_result = run_command('id', '-g', nobody_group)
784 if id_result.returncode() == 0
785 id = id_result.stdout().to_int()
786 if id != 65534
787 warning('\n' +
788 '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) +
789 'Your build will result in an group table setup that is incompatible with the local system.')
790 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100791 endif
792endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900793if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900794 warning('\n' +
795 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
796 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900797endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100798
799conf.set_quoted('NOBODY_USER_NAME', nobody_user)
800conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900801substs.set('NOBODY_USER_NAME', nobody_user)
802substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100803
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804tty_gid = get_option('tty-gid')
805conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400806substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400807
Ikey Doherty84786b82017-12-03 12:28:23 +0000808# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900809users_gid = get_option('users-gid')
810substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000811
Yu Watanabe348b4432018-05-07 18:17:35 +0900812conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
813conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400814
Michael Bieblace5e312018-07-13 23:36:13 +0200815dev_kvm_mode = get_option('dev-kvm-mode')
816substs.set('DEV_KVM_MODE', dev_kvm_mode)
817conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700818substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400819
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400820kill_user_processes = get_option('default-kill-user-processes')
821conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100822conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400823substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400824
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400825dns_servers = get_option('dns-servers')
826conf.set_quoted('DNS_SERVERS', dns_servers)
827substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400828
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400829ntp_servers = get_option('ntp-servers')
830conf.set_quoted('NTP_SERVERS', ntp_servers)
831substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832
833conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
834
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400835substs.set('SUSHELL', get_option('debug-shell'))
836substs.set('DEBUGTTY', get_option('debug-tty'))
837
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200838enable_debug_hashmap = false
839enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900840enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900841enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200842foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900843 if name == 'hashmap'
844 enable_debug_hashmap = true
845 elif name == 'mmap-cache'
846 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900847 elif name == 'siphash'
848 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900849 elif name == 'udev'
850 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900851 else
852 message('unknown debug option "@0@", ignoring'.format(name))
853 endif
854endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200855conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
856conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900857conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900858conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400859
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200860conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200861conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200862
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400863#####################################################################
864
865threads = dependency('threads')
866librt = cc.find_library('rt')
867libm = cc.find_library('m')
868libdl = cc.find_library('dl')
869libcrypt = cc.find_library('crypt')
870
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400871libcap = dependency('libcap', required : false)
872if not libcap.found()
873 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
874 libcap = cc.find_library('cap')
875endif
876
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400877libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100878 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400879
880want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500881if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400882 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400883 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400884 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200885 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400888 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400889endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200890conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891
892want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500893if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400894 libselinux = dependency('libselinux',
895 version : '>= 2.1.9',
896 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200897 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400901endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200902conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400903
904want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500905if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400906 libapparmor = dependency('libapparmor',
907 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200908 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400911 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915smack_run_label = get_option('smack-run-label')
916if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400917 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400918endif
919
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400920want_polkit = get_option('polkit')
921install_polkit = false
922install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500923if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400924 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400925
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400926 libpolkit = dependency('polkit-gobject-1',
927 required : false)
928 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
929 message('Old polkit detected, will install pkla files')
930 install_polkit_pkla = true
931 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400934
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400935want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400937 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200938 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400939else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400941 libacl = []
942endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200943conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400944
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400945want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500946if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400947 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200948 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400951 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400952endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200953conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400954
955want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500956if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400957 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400961 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400962endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200963conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libkmod = dependency('libkmod',
968 version : '>= 15',
969 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500978if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400979 libpam = cc.find_library('pam', required : want_pam == 'true')
980 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200981 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400982else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200983 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libpam = []
985 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400986endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200987conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400988
989want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500990if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400991 libmicrohttpd = dependency('libmicrohttpd',
992 version : '>= 0.9.33',
993 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200994 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400997 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001000
1001want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001002if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001003 libcryptsetup = dependency('libcryptsetup',
1004 version : '>= 1.6.0',
1005 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001007 have_sector = cc.has_member(
1008 'struct crypt_params_plain',
1009 'sector_size',
1010 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001013 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001014 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001016conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001017conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018
1019want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001020if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 libcurl = dependency('libcurl',
1022 version : '>= 7.32.0',
1023 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001024 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001027 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001028endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001029conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001030
1031want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001032want_libidn2 = get_option('libidn2')
1033if want_libidn == 'true' and want_libidn2 == 'true'
1034 error('libidn and libidn2 cannot be requested simultaneously')
1035endif
1036
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001037if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001038 libidn = dependency('libidn',
1039 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001040 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001041else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001043 libidn = []
1044endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001045conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001046if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001047 # libidn is used for both libidn and libidn2 objects
1048 libidn = dependency('libidn2',
1049 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001050 have = libidn.found()
1051else
1052 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001053endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001054conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001055
1056want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001057if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001058 libiptc = dependency('libiptc',
1059 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001060 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001063 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001064endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001065conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001066
1067want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001068if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001069 libqrencode = dependency('libqrencode',
1070 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001071 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001074 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001075endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001076conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001078want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001079if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1081 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001082 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001083else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = false
1085endif
1086if not have
1087 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001088 libgcrypt = []
1089 libgpg_error = []
1090endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001092
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001094if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001095 libgnutls = dependency('gnutls',
1096 version : '>= 3.1.4',
1097 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001098 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001101 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001102endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001103conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001105want_openssl = get_option('openssl')
1106if want_openssl != 'false' and not fuzzer_build
1107 libopenssl = dependency('openssl',
1108 version : '>= 1.1.0',
1109 required : want_openssl == 'true')
1110 have = libopenssl.found()
1111else
1112 have = false
1113 libopenssl = []
1114endif
1115conf.set10('HAVE_OPENSSL', have)
1116
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001118if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001119 libdw = dependency('libdw',
1120 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001121 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001124 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001125endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001127
1128want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001129if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001130 libz = dependency('zlib',
1131 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001132 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001135 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001136endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001137conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001138
1139want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001140if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001141 libbzip2 = cc.find_library('bz2',
1142 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001143 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001144else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001146 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001149
1150want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001151if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001152 libxz = dependency('liblzma',
1153 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001157 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001160
1161want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001162if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001164 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001165 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001173want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001174if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001175 libxkbcommon = dependency('xkbcommon',
1176 version : '>= 0.3.0',
1177 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001178 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001179else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001181 libxkbcommon = []
1182endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001183conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001184
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001185want_pcre2 = get_option('pcre2')
1186if want_pcre2 != 'false'
1187 libpcre2 = dependency('libpcre2-8',
1188 required : want_pcre2 == 'true')
1189 have = libpcre2.found()
1190else
1191 have = false
1192 libpcre2 = []
1193endif
1194conf.set10('HAVE_PCRE2', have)
1195
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001196want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001197if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001198 libglib = dependency('glib-2.0',
1199 version : '>= 2.22.0',
1200 required : want_glib == 'true')
1201 libgobject = dependency('gobject-2.0',
1202 version : '>= 2.22.0',
1203 required : want_glib == 'true')
1204 libgio = dependency('gio-2.0',
1205 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001206 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001207else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001209 libglib = []
1210 libgobject = []
1211 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001212endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001213conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001214
1215want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001216if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001217 libdbus = dependency('dbus-1',
1218 version : '>= 1.3.2',
1219 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001220 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001224endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001225conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001226
Yu Watanabe42303dc2017-06-18 05:22:32 +09001227default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001228if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001229 default_dnssec = 'no'
1230endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001231if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001232 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1233 default_dnssec = 'no'
1234endif
1235conf.set('DEFAULT_DNSSEC_MODE',
1236 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1237substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1238
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001239dns_over_tls = get_option('dns-over-tls')
1240if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001241 if dns_over_tls == 'openssl'
1242 have_gnutls = false
1243 else
1244 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1245 if dns_over_tls == 'gnutls' and not have_gnutls
1246 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1247 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001248 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001249 if dns_over_tls == 'gnutls' or have_gnutls
1250 have_openssl = false
1251 else
1252 have_openssl = conf.get('HAVE_OPENSSL') == 1
1253 if dns_over_tls != 'auto' and not have_openssl
1254 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1255 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1256 endif
1257 endif
1258 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001259else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001260 have = false
1261 have_gnutls = false
1262 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001263endif
1264conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001265conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1266conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001267
Iwan Timmerc9299be2018-06-13 20:26:24 +02001268default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001269if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001270 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001271endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001272if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1273 message('default-dns-over-tls cannot be set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001274 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001275endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001276conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1277 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1278substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001279
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001280want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001281if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001282 have = (conf.get('HAVE_LIBCURL') == 1 and
1283 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001284 conf.get('HAVE_XZ') == 1 and
1285 conf.get('HAVE_GCRYPT') == 1)
1286 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001287 error('importd support was requested, but dependencies are not available')
1288 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001289else
1290 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001291endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001292conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001293
1294want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001295if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001296 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1297 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001298 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1299 # it's possible to build one without the other. Complain only if
1300 # support was explictly requested. The auxiliary files like sysusers
1301 # config should be installed when any of the programs are built.
1302 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1303 error('remote support was requested, but dependencies are not available')
1304 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001305 have = have_deps[0] or have_deps[1]
1306else
1307 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001308endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001309conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001310
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001311foreach term : ['utmp',
1312 'hibernate',
1313 'environment-d',
1314 'binfmt',
1315 'coredump',
1316 'resolve',
1317 'logind',
1318 'hostnamed',
1319 'localed',
1320 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001321 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001322 'networkd',
1323 'timedated',
1324 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001325 'firstboot',
1326 'randomseed',
1327 'backlight',
1328 'vconsole',
1329 'quotacheck',
1330 'sysusers',
1331 'tmpfiles',
1332 'hwdb',
1333 'rfkill',
1334 'ldconfig',
1335 'efi',
1336 'tpm',
1337 'ima',
1338 'smack',
1339 'gshadow',
1340 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001341 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001342 'nss-systemd']
1343 have = get_option(term)
1344 name = 'ENABLE_' + term.underscorify().to_upper()
1345 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001346endforeach
1347
Yu Watanabe08540a92018-07-18 09:25:57 +09001348foreach tuple : [['nss-mymachines', 'machined'],
1349 ['nss-resolve', 'resolve']]
1350 want = get_option(tuple[0])
1351 if want != 'false'
1352 have = get_option(tuple[1])
1353 if want == 'true' and not have
1354 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1355 endif
1356 else
1357 have = false
1358 endif
1359 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1360 conf.set10(name, have)
1361endforeach
1362
1363enable_nss = false
1364foreach term : ['ENABLE_NSS_MYHOSTNAME',
1365 'ENABLE_NSS_MYMACHINES',
1366 'ENABLE_NSS_RESOLVE',
1367 'ENABLE_NSS_SYSTEMD']
1368 if conf.get(term) == 1
1369 enable_nss = true
1370 endif
1371endforeach
1372conf.set10('ENABLE_NSS', enable_nss)
1373
Yu Watanabe348b4432018-05-07 18:17:35 +09001374conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001375
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001376tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001377fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001378
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001379conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001380
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001381#####################################################################
1382
1383if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001385
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001386 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001387 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001388 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 elif efi_arch == 'x86_64'
1390 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001391 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 elif efi_arch == 'arm'
1393 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001394 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 elif efi_arch == 'aarch64'
1396 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001397 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 else
1399 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001400 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001402
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001403 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001404 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001405
Yu Watanabeac093402018-05-10 16:04:16 +09001406 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001407else
1408 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001409endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001410conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411
1412#####################################################################
1413
1414config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001415 output : 'config.h',
1416 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417
Yu Watanabe348b4432018-05-07 18:17:35 +09001418meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1419
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001420includes = include_directories('src/basic',
1421 'src/shared',
1422 'src/systemd',
1423 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001424 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001425 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426 'src/resolve',
1427 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001428 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001429 'src/login',
1430 'src/udev',
1431 'src/libudev',
1432 'src/core',
1433 'src/libsystemd/sd-bus',
1434 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001435 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001436 'src/libsystemd/sd-hwdb',
1437 'src/libsystemd/sd-id128',
1438 'src/libsystemd/sd-netlink',
1439 'src/libsystemd/sd-network',
1440 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001441 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001442
1443add_project_arguments('-include', 'config.h', language : 'c')
1444
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001445generate_gperfs = find_program('tools/generate-gperfs.py')
1446
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001447subdir('po')
1448subdir('catalog')
1449subdir('src/systemd')
1450subdir('src/basic')
1451subdir('src/libsystemd')
1452subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455
1456libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 'journal-core',
1458 libjournal_core_sources,
1459 journald_gperf_c,
1460 include_directories : includes,
1461 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001462
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001463libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001464libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001466 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001467 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001468 include_directories : includes,
1469 link_args : ['-shared',
1470 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001471 link_with : [libbasic,
1472 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001473 link_whole : [libsystemd_static,
1474 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001475 dependencies : [threads,
1476 librt,
1477 libxz,
1478 liblz4],
1479 link_depends : libsystemd_sym,
1480 install : true,
1481 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482
Davide Cavalca70848ec2018-04-09 02:43:35 -07001483static_libsystemd = get_option('static-libsystemd')
1484static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1485
1486install_libsystemd_static = static_library(
1487 'systemd',
1488 libsystemd_sources,
1489 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001490 basic_sources,
1491 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001492 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001493 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001494 build_by_default : static_libsystemd != 'false',
1495 install : static_libsystemd != 'false',
1496 install_dir : rootlibdir,
1497 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1498 dependencies : [threads,
1499 librt,
1500 libxz,
1501 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001502 libcap,
1503 libblkid,
1504 libmount,
1505 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001506 libgcrypt],
1507 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1508
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001509############################################################
1510
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001511# binaries that have --help and are intended for use by humans,
1512# usually, but not always, installed in /bin.
1513public_programs = []
1514
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515subdir('src/libudev')
1516subdir('src/shared')
1517subdir('src/core')
1518subdir('src/udev')
1519subdir('src/network')
1520
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001521subdir('src/analyze')
1522subdir('src/journal-remote')
1523subdir('src/coredump')
1524subdir('src/hostname')
1525subdir('src/import')
1526subdir('src/kernel-install')
1527subdir('src/locale')
1528subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001529subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001530subdir('src/nspawn')
1531subdir('src/resolve')
1532subdir('src/timedate')
1533subdir('src/timesync')
1534subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001535subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001536
1537subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001538subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001539subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001540subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001541
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001542############################################################
1543
1544# only static linking apart from libdl, to make sure that the
1545# module is linked to all libraries that it uses.
1546test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 'test-dlopen',
1548 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001549 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001550 include_directories : includes,
1551 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001552 dependencies : [libdl],
1553 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001554
Yu Watanabe08540a92018-07-18 09:25:57 +09001555foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001556 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001557 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1558 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001559
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001560 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 if condition
1562 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001563
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001565 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001566
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001567 nss = shared_library(
1568 'nss_' + module,
1569 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001570 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001571 version : '2',
1572 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001573 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1574 link_args : ['-Wl,-z,nodelete',
1575 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 '-Wl,--version-script=' + version_script_arg,
1577 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001578 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 libbasic],
1580 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001581 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001582 link_depends : sym,
1583 install : true,
1584 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001585
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001586 # We cannot use shared_module because it does not support version suffix.
1587 # Unfortunately shared_library insists on creating the symlink…
1588 meson.add_install_script('sh', '-c',
1589 'rm $DESTDIR@0@/libnss_@1@.so'
1590 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001591
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001592 if want_tests != 'false'
1593 test('dlopen-nss_' + module,
1594 test_dlopen,
1595 # path to dlopen must include a slash
1596 args : nss.full_path())
1597 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001598 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001599endforeach
1600
1601############################################################
1602
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603executable('systemd',
1604 systemd_sources,
1605 include_directories : includes,
1606 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001607 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001608 dependencies : [threads,
1609 librt,
1610 libseccomp,
1611 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001612 libmount,
1613 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001614 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001615 install : true,
1616 install_dir : rootlibexecdir)
1617
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001618meson.add_install_script(meson_make_symlink,
1619 join_paths(rootlibexecdir, 'systemd'),
1620 join_paths(rootsbindir, 'init'))
1621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001622exe = executable('systemd-analyze',
1623 systemd_analyze_sources,
1624 include_directories : includes,
1625 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001626 libshared],
1627 dependencies : [threads,
1628 librt,
1629 libseccomp,
1630 libselinux,
1631 libmount,
1632 libblkid],
1633 install_rpath : rootlibexecdir,
1634 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001635public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001636
1637executable('systemd-journald',
1638 systemd_journald_sources,
1639 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001640 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001641 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642 dependencies : [threads,
1643 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001644 liblz4,
1645 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001646 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001647 install : true,
1648 install_dir : rootlibexecdir)
1649
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001650exe = executable('systemd-cat',
1651 systemd_cat_sources,
1652 include_directories : includes,
1653 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001654 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001655 dependencies : [threads],
1656 install_rpath : rootlibexecdir,
1657 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001658public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001659
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001660exe = executable('journalctl',
1661 journalctl_sources,
1662 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001663 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001664 dependencies : [threads,
1665 libqrencode,
1666 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001667 liblz4,
1668 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001669 install_rpath : rootlibexecdir,
1670 install : true,
1671 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001672public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
1674executable('systemd-getty-generator',
1675 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001676 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681
1682executable('systemd-debug-generator',
1683 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001685 link_with : [libshared],
1686 install_rpath : rootlibexecdir,
1687 install : true,
1688 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001689
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001690executable('systemd-run-generator',
1691 'src/run-generator/run-generator.c',
1692 include_directories : includes,
1693 link_with : [libshared],
1694 install_rpath : rootlibexecdir,
1695 install : true,
1696 install_dir : systemgeneratordir)
1697
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698executable('systemd-fstab-generator',
1699 'src/fstab-generator/fstab-generator.c',
1700 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001701 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001702 link_with : [libshared],
1703 install_rpath : rootlibexecdir,
1704 install : true,
1705 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001706
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001707if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001708 executable('30-systemd-environment-d-generator',
1709 'src/environment-d-generator/environment-d-generator.c',
1710 include_directories : includes,
1711 link_with : [libshared],
1712 install_rpath : rootlibexecdir,
1713 install : true,
1714 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001715
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001716 meson.add_install_script(meson_make_symlink,
1717 join_paths(sysconfdir, 'environment'),
1718 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719endif
1720
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001721if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 executable('systemd-hibernate-resume-generator',
1723 'src/hibernate-resume/hibernate-resume-generator.c',
1724 include_directories : includes,
1725 link_with : [libshared],
1726 install_rpath : rootlibexecdir,
1727 install : true,
1728 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001729
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001730 executable('systemd-hibernate-resume',
1731 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001732 include_directories : includes,
1733 link_with : [libshared],
1734 install_rpath : rootlibexecdir,
1735 install : true,
1736 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-gpt-auto-generator',
1741 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001742 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001744 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001745 dependencies : libblkid,
1746 install_rpath : rootlibexecdir,
1747 install : true,
1748 install_dir : systemgeneratordir)
1749
1750 exe = executable('systemd-dissect',
1751 'src/dissect/dissect.c',
1752 include_directories : includes,
1753 link_with : [libshared],
1754 install_rpath : rootlibexecdir,
1755 install : true,
1756 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001757 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758endif
1759
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001760if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001761 executable('systemd-resolved',
1762 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001763 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001764 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001765 libbasic_gcrypt,
1766 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001767 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001768 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001769 install : true,
1770 install_dir : rootlibexecdir)
1771
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001772 exe = executable('resolvectl',
1773 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001775 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001776 libbasic_gcrypt,
1777 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001778 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001779 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001780 libm,
1781 libidn],
1782 install_rpath : rootlibexecdir,
1783 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001784 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001785
1786 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001787 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001788 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001789
1790 meson.add_install_script(meson_make_symlink,
1791 join_paths(bindir, 'resolvectl'),
1792 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001793endif
1794
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001795if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 executable('systemd-logind',
1797 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001798 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001800 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001801 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001803 install_rpath : rootlibexecdir,
1804 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001806
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001807 exe = executable('loginctl',
1808 loginctl_sources,
1809 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001810 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001811 dependencies : [threads,
1812 liblz4,
1813 libxz],
1814 install_rpath : rootlibexecdir,
1815 install : true,
1816 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001817 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001818
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001819 exe = executable('systemd-inhibit',
1820 'src/login/inhibit.c',
1821 include_directories : includes,
1822 link_with : [libshared],
1823 install_rpath : rootlibexecdir,
1824 install : true,
1825 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001826 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001827
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001828 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001829 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001830 pam_systemd = shared_library(
1831 'pam_systemd',
1832 pam_systemd_c,
1833 name_prefix : '',
1834 include_directories : includes,
1835 link_args : ['-shared',
1836 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001837 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001838 libshared_static],
1839 dependencies : [threads,
1840 libpam,
1841 libpam_misc],
1842 link_depends : pam_systemd_sym,
1843 install : true,
1844 install_dir : pamlibdir)
1845
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001846 if want_tests != 'false'
1847 test('dlopen-pam_systemd',
1848 test_dlopen,
1849 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001850 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001851 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001853
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001854 executable('systemd-user-runtime-dir',
1855 user_runtime_dir_sources,
1856 include_directories : includes,
1857 link_with : [libshared],
1858 install_rpath : rootlibexecdir,
1859 install : true,
1860 install_dir : rootlibexecdir)
1861endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001862
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001863if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001864 executable('systemd-user-sessions',
1865 'src/user-sessions/user-sessions.c',
1866 include_directories : includes,
1867 link_with : [libshared],
1868 install_rpath : rootlibexecdir,
1869 install : true,
1870 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001871endif
1872
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001873if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001874 exe = executable('bootctl',
1875 'src/boot/bootctl.c',
1876 include_directories : includes,
1877 link_with : [libshared],
1878 dependencies : [libblkid],
1879 install_rpath : rootlibexecdir,
1880 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001881 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001882
1883 executable('systemd-bless-boot',
1884 'src/boot/bless-boot.c',
1885 include_directories : includes,
1886 link_with : [libshared],
1887 dependencies : [libblkid],
1888 install_rpath : rootlibexecdir,
1889 install : true,
1890 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001891
1892 executable('systemd-bless-boot-generator',
1893 'src/boot/bless-boot-generator.c',
1894 include_directories : includes,
1895 link_with : [libshared],
1896 install_rpath : rootlibexecdir,
1897 install : true,
1898 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001899endif
1900
Lennart Poetteringf876f532018-06-25 16:07:33 +02001901executable('systemd-boot-check-no-failures',
1902 'src/boot/boot-check-no-failures.c',
1903 include_directories : includes,
1904 link_with : [libshared],
1905 dependencies : [libblkid],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootlibexecdir)
1909
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001910exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1911 include_directories : includes,
1912 link_with : [libshared],
1913 dependencies : [threads],
1914 install_rpath : rootlibexecdir,
1915 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001916public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001917
Felipe Satelerf3794362018-05-22 15:08:57 -04001918
1919if get_option('link-systemctl-shared')
1920 systemctl_link_with = [libshared]
1921else
1922 systemctl_link_with = [libsystemd_static,
1923 libshared_static,
1924 libjournal_client,
1925 libbasic_gcrypt]
1926endif
1927
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001928exe = executable('systemctl', 'src/systemctl/systemctl.c',
1929 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001930 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001931 dependencies : [threads,
1932 libcap,
1933 libselinux,
1934 libxz,
1935 liblz4],
1936 install_rpath : rootlibexecdir,
1937 install : true,
1938 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001939public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001940
Lennart Poettering61d05782018-04-16 21:41:40 +02001941if conf.get('ENABLE_PORTABLED') == 1
1942 executable('systemd-portabled',
1943 systemd_portabled_sources,
1944 include_directories : includes,
1945 link_with : [libshared],
1946 dependencies : [threads],
1947 install_rpath : rootlibexecdir,
1948 install : true,
1949 install_dir : rootlibexecdir)
1950
1951 exe = executable('portablectl', 'src/portable/portablectl.c',
1952 include_directories : includes,
1953 link_with : [libshared],
1954 dependencies : [threads],
1955 install_rpath : rootlibexecdir,
1956 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001957 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001958 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001959endif
1960
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001961foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1962 meson.add_install_script(meson_make_symlink,
1963 join_paths(rootbindir, 'systemctl'),
1964 join_paths(rootsbindir, alias))
1965endforeach
1966
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001967if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001968 executable('systemd-backlight',
1969 'src/backlight/backlight.c',
1970 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001971 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-rfkill',
1979 'src/rfkill/rfkill.c',
1980 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001981 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985endif
1986
1987executable('systemd-system-update-generator',
1988 'src/system-update-generator/system-update-generator.c',
1989 include_directories : includes,
1990 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001991 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001992 install : true,
1993 install_dir : systemgeneratordir)
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 executable('systemd-cryptsetup',
1997 'src/cryptsetup/cryptsetup.c',
1998 include_directories : includes,
1999 link_with : [libshared],
2000 dependencies : [libcryptsetup],
2001 install_rpath : rootlibexecdir,
2002 install : true,
2003 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002004
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002005 executable('systemd-cryptsetup-generator',
2006 'src/cryptsetup/cryptsetup-generator.c',
2007 include_directories : includes,
2008 link_with : [libshared],
2009 dependencies : [libcryptsetup],
2010 install_rpath : rootlibexecdir,
2011 install : true,
2012 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002013
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002014 executable('systemd-veritysetup',
2015 'src/veritysetup/veritysetup.c',
2016 include_directories : includes,
2017 link_with : [libshared],
2018 dependencies : [libcryptsetup],
2019 install_rpath : rootlibexecdir,
2020 install : true,
2021 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002022
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002023 executable('systemd-veritysetup-generator',
2024 'src/veritysetup/veritysetup-generator.c',
2025 include_directories : includes,
2026 link_with : [libshared],
2027 dependencies : [libcryptsetup],
2028 install_rpath : rootlibexecdir,
2029 install : true,
2030 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002031endif
2032
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002033if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002034 executable('systemd-sysv-generator',
2035 'src/sysv-generator/sysv-generator.c',
2036 include_directories : includes,
2037 link_with : [libshared],
2038 install_rpath : rootlibexecdir,
2039 install : true,
2040 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002041
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002042 executable('systemd-rc-local-generator',
2043 'src/rc-local-generator/rc-local-generator.c',
2044 include_directories : includes,
2045 link_with : [libshared],
2046 install_rpath : rootlibexecdir,
2047 install : true,
2048 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002049endif
2050
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002051if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002052 executable('systemd-hostnamed',
2053 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002054 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002055 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002056 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002057 install : true,
2058 install_dir : rootlibexecdir)
2059
2060 exe = executable('hostnamectl',
2061 'src/hostname/hostnamectl.c',
2062 include_directories : includes,
2063 link_with : [libshared],
2064 install_rpath : rootlibexecdir,
2065 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002066 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002067endif
2068
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002069if conf.get('ENABLE_LOCALED') == 1
2070 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002071 # logind will load libxkbcommon.so dynamically on its own
2072 deps = [libdl]
2073 else
2074 deps = []
2075 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002076
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002077 executable('systemd-localed',
2078 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002080 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002082 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002083 install : true,
2084 install_dir : rootlibexecdir)
2085
2086 exe = executable('localectl',
2087 localectl_sources,
2088 include_directories : includes,
2089 link_with : [libshared],
2090 install_rpath : rootlibexecdir,
2091 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002092 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002093endif
2094
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002095if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002096 executable('systemd-timedated',
2097 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002098 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002099 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002103endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104
Yu Watanabe6129ec82018-05-03 18:07:43 +09002105if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002106 exe = executable('timedatectl',
2107 'src/timedate/timedatectl.c',
2108 include_directories : includes,
2109 install_rpath : rootlibexecdir,
2110 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002111 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002112 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002113 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002114endif
2115
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002116if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002117 executable('systemd-timesyncd',
2118 systemd_timesyncd_sources,
2119 include_directories : includes,
2120 link_with : [libshared],
2121 dependencies : [threads,
2122 libm],
2123 install_rpath : rootlibexecdir,
2124 install : true,
2125 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002126
2127 executable('systemd-time-wait-sync',
2128 'src/time-wait-sync/time-wait-sync.c',
2129 include_directories : includes,
2130 link_with : [libshared],
2131 install_rpath : rootlibexecdir,
2132 install : true,
2133 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002134endif
2135
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002136if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 executable('systemd-machined',
2138 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002140 link_with : [libmachine_core,
2141 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002142 install_rpath : rootlibexecdir,
2143 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002144 install_dir : rootlibexecdir)
2145
2146 exe = executable('machinectl',
2147 'src/machine/machinectl.c',
2148 include_directories : includes,
2149 link_with : [libshared],
2150 dependencies : [threads,
2151 libxz,
2152 liblz4],
2153 install_rpath : rootlibexecdir,
2154 install : true,
2155 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002156 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002157endif
2158
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002159if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002160 executable('systemd-importd',
2161 systemd_importd_sources,
2162 include_directories : includes,
2163 link_with : [libshared],
2164 dependencies : [threads],
2165 install_rpath : rootlibexecdir,
2166 install : true,
2167 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002168
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 systemd_pull = executable('systemd-pull',
2170 systemd_pull_sources,
2171 include_directories : includes,
2172 link_with : [libshared],
2173 dependencies : [libcurl,
2174 libz,
2175 libbzip2,
2176 libxz,
2177 libgcrypt],
2178 install_rpath : rootlibexecdir,
2179 install : true,
2180 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002181
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 systemd_import = executable('systemd-import',
2183 systemd_import_sources,
2184 include_directories : includes,
2185 link_with : [libshared],
2186 dependencies : [libcurl,
2187 libz,
2188 libbzip2,
2189 libxz],
2190 install_rpath : rootlibexecdir,
2191 install : true,
2192 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002193
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002194 systemd_import_fs = executable('systemd-import-fs',
2195 systemd_import_fs_sources,
2196 include_directories : includes,
2197 link_with : [libshared],
2198 install_rpath : rootlibexecdir,
2199 install : true,
2200 install_dir : rootlibexecdir)
2201
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002202 systemd_export = executable('systemd-export',
2203 systemd_export_sources,
2204 include_directories : includes,
2205 link_with : [libshared],
2206 dependencies : [libcurl,
2207 libz,
2208 libbzip2,
2209 libxz],
2210 install_rpath : rootlibexecdir,
2211 install : true,
2212 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002213
2214 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002215endif
2216
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002217if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002218 exe = executable('systemd-journal-upload',
2219 systemd_journal_upload_sources,
2220 include_directories : includes,
2221 link_with : [libshared],
2222 dependencies : [threads,
2223 libcurl,
2224 libgnutls,
2225 libxz,
2226 liblz4],
2227 install_rpath : rootlibexecdir,
2228 install : true,
2229 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002230 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002231endif
2232
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002233if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002234 s_j_remote = executable('systemd-journal-remote',
2235 systemd_journal_remote_sources,
2236 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002237 link_with : [libshared,
2238 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 dependencies : [threads,
2240 libmicrohttpd,
2241 libgnutls,
2242 libxz,
2243 liblz4],
2244 install_rpath : rootlibexecdir,
2245 install : true,
2246 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002247
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002248 s_j_gatewayd = executable('systemd-journal-gatewayd',
2249 systemd_journal_gatewayd_sources,
2250 include_directories : includes,
2251 link_with : [libshared],
2252 dependencies : [threads,
2253 libmicrohttpd,
2254 libgnutls,
2255 libxz,
2256 liblz4],
2257 install_rpath : rootlibexecdir,
2258 install : true,
2259 install_dir : rootlibexecdir)
2260 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261endif
2262
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002263if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002264 executable('systemd-coredump',
2265 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 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 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002269 libacl,
2270 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002271 libxz,
2272 liblz4],
2273 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002274 install : true,
2275 install_dir : rootlibexecdir)
2276
2277 exe = executable('coredumpctl',
2278 coredumpctl_sources,
2279 include_directories : includes,
2280 link_with : [libshared],
2281 dependencies : [threads,
2282 libxz,
2283 liblz4],
2284 install_rpath : rootlibexecdir,
2285 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002286 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002287endif
2288
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002289if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002290 exe = executable('systemd-binfmt',
2291 'src/binfmt/binfmt.c',
2292 include_directories : includes,
2293 link_with : [libshared],
2294 install_rpath : rootlibexecdir,
2295 install : true,
2296 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002297 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002298
2299 meson.add_install_script('sh', '-c',
2300 mkdir_p.format(binfmtdir))
2301 meson.add_install_script('sh', '-c',
2302 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2303endif
2304
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002305if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002306 executable('systemd-vconsole-setup',
2307 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002308 include_directories : includes,
2309 link_with : [libshared],
2310 install_rpath : rootlibexecdir,
2311 install : true,
2312 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002313endif
2314
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002315if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002316 executable('systemd-random-seed',
2317 'src/random-seed/random-seed.c',
2318 include_directories : includes,
2319 link_with : [libshared],
2320 install_rpath : rootlibexecdir,
2321 install : true,
2322 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002323endif
2324
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002325if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002326 executable('systemd-firstboot',
2327 'src/firstboot/firstboot.c',
2328 include_directories : includes,
2329 link_with : [libshared],
2330 dependencies : [libcrypt],
2331 install_rpath : rootlibexecdir,
2332 install : true,
2333 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002334endif
2335
2336executable('systemd-remount-fs',
2337 'src/remount-fs/remount-fs.c',
2338 'src/core/mount-setup.c',
2339 'src/core/mount-setup.h',
2340 include_directories : includes,
2341 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002342 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002343 install : true,
2344 install_dir : rootlibexecdir)
2345
2346executable('systemd-machine-id-setup',
2347 'src/machine-id-setup/machine-id-setup-main.c',
2348 'src/core/machine-id-setup.c',
2349 'src/core/machine-id-setup.h',
2350 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002351 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002352 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353 install : true,
2354 install_dir : rootbindir)
2355
2356executable('systemd-fsck',
2357 'src/fsck/fsck.c',
2358 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002359 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002360 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002361 install : true,
2362 install_dir : rootlibexecdir)
2363
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002364executable('systemd-growfs',
2365 'src/partition/growfs.c',
2366 include_directories : includes,
2367 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002368 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002369 install_rpath : rootlibexecdir,
2370 install : true,
2371 install_dir : rootlibexecdir)
2372
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002373executable('systemd-makefs',
2374 'src/partition/makefs.c',
2375 include_directories : includes,
2376 link_with : [libshared],
2377 install_rpath : rootlibexecdir,
2378 install : true,
2379 install_dir : rootlibexecdir)
2380
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002381executable('systemd-sleep',
2382 'src/sleep/sleep.c',
2383 include_directories : includes,
2384 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002385 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002386 install : true,
2387 install_dir : rootlibexecdir)
2388
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002389exe = executable('systemd-sysctl',
2390 'src/sysctl/sysctl.c',
2391 include_directories : includes,
2392 link_with : [libshared],
2393 install_rpath : rootlibexecdir,
2394 install : true,
2395 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002396public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002397
2398executable('systemd-ac-power',
2399 'src/ac-power/ac-power.c',
2400 include_directories : includes,
2401 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002402 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002403 install : true,
2404 install_dir : rootlibexecdir)
2405
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002406exe = executable('systemd-detect-virt',
2407 'src/detect-virt/detect-virt.c',
2408 include_directories : includes,
2409 link_with : [libshared],
2410 install_rpath : rootlibexecdir,
2411 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002412public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002413
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002414exe = executable('systemd-delta',
2415 'src/delta/delta.c',
2416 include_directories : includes,
2417 link_with : [libshared],
2418 install_rpath : rootlibexecdir,
2419 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002420public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002422exe = executable('systemd-escape',
2423 'src/escape/escape.c',
2424 include_directories : includes,
2425 link_with : [libshared],
2426 install_rpath : rootlibexecdir,
2427 install : true,
2428 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002429public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002430
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002431exe = executable('systemd-notify',
2432 'src/notify/notify.c',
2433 include_directories : includes,
2434 link_with : [libshared],
2435 install_rpath : rootlibexecdir,
2436 install : true,
2437 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002438public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002439
2440executable('systemd-volatile-root',
2441 'src/volatile-root/volatile-root.c',
2442 include_directories : includes,
2443 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002444 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002445 install : true,
2446 install_dir : rootlibexecdir)
2447
2448executable('systemd-cgroups-agent',
2449 'src/cgroups-agent/cgroups-agent.c',
2450 include_directories : includes,
2451 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002452 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002453 install : true,
2454 install_dir : rootlibexecdir)
2455
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002456exe = executable('systemd-id128',
2457 'src/id128/id128.c',
2458 include_directories : includes,
2459 link_with : [libshared],
2460 install_rpath : rootlibexecdir,
2461 install : true)
2462public_programs += exe
2463
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002464exe = executable('systemd-path',
2465 'src/path/path.c',
2466 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002467 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002468 install_rpath : rootlibexecdir,
2469 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002470public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002471
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472exe = executable('systemd-ask-password',
2473 'src/ask-password/ask-password.c',
2474 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002475 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476 install_rpath : rootlibexecdir,
2477 install : true,
2478 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002479public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002480
2481executable('systemd-reply-password',
2482 'src/reply-password/reply-password.c',
2483 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002484 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002485 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002486 install : true,
2487 install_dir : rootlibexecdir)
2488
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002489exe = executable('systemd-tty-ask-password-agent',
2490 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2491 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002492 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002493 install_rpath : rootlibexecdir,
2494 install : true,
2495 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002496public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002497
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002498exe = executable('systemd-cgls',
2499 'src/cgls/cgls.c',
2500 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002501 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002502 install_rpath : rootlibexecdir,
2503 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002504public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002505
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002506exe = executable('systemd-cgtop',
2507 'src/cgtop/cgtop.c',
2508 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002509 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002510 install_rpath : rootlibexecdir,
2511 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002512public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002513
2514executable('systemd-initctl',
2515 'src/initctl/initctl.c',
2516 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002517 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002518 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002519 install : true,
2520 install_dir : rootlibexecdir)
2521
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002522exe = executable('systemd-mount',
2523 'src/mount/mount-tool.c',
2524 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002525 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002526 install_rpath : rootlibexecdir,
2527 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002528public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002529
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002530meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002531 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002532
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002533exe = executable('systemd-run',
2534 'src/run/run.c',
2535 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002536 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002537 install_rpath : rootlibexecdir,
2538 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002539public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002540
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002541exe = executable('systemd-stdio-bridge',
2542 'src/stdio-bridge/stdio-bridge.c',
2543 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002544 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002545 install_rpath : rootlibexecdir,
2546 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002547public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002548
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002549exe = executable('busctl',
2550 'src/busctl/busctl.c',
2551 'src/busctl/busctl-introspect.c',
2552 'src/busctl/busctl-introspect.h',
2553 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002554 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002555 install_rpath : rootlibexecdir,
2556 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002557public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002559if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 exe = executable('systemd-sysusers',
2561 'src/sysusers/sysusers.c',
2562 include_directories : includes,
2563 link_with : [libshared],
2564 install_rpath : rootlibexecdir,
2565 install : true,
2566 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002567 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568endif
2569
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002570if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002571 exe = executable('systemd-tmpfiles',
2572 'src/tmpfiles/tmpfiles.c',
2573 include_directories : includes,
2574 link_with : [libshared],
2575 dependencies : [libacl],
2576 install_rpath : rootlibexecdir,
2577 install : true,
2578 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002579 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002580
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002581 if want_tests != 'false'
2582 test('test-systemd-tmpfiles',
2583 test_systemd_tmpfiles_py,
2584 # https://github.com/mesonbuild/meson/issues/2681
2585 args : exe.full_path())
2586 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002587endif
2588
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002589if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002590 exe = executable('systemd-hwdb',
2591 'src/hwdb/hwdb.c',
2592 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2593 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002594 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002595 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002596 install : true,
2597 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002598 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002599endif
2600
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002601if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002602 executable('systemd-quotacheck',
2603 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002604 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002605 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002606 install_rpath : rootlibexecdir,
2607 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002608 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002609endif
2610
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002611exe = executable('systemd-socket-proxyd',
2612 'src/socket-proxy/socket-proxyd.c',
2613 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002614 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002615 dependencies : [threads],
2616 install_rpath : rootlibexecdir,
2617 install : true,
2618 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002619public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002620
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002621exe = executable('systemd-udevd',
2622 systemd_udevd_sources,
2623 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002624 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002625 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002627 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002628 dependencies : [threads,
2629 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002630 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002631 libacl,
2632 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002633 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002634 install : true,
2635 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002636public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002637
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638exe = executable('udevadm',
2639 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002640 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002641 include_directories : includes,
2642 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002643 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002644 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002645 dependencies : [threads,
2646 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002647 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002648 libacl,
2649 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002650 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002651 install : true,
2652 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002653public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002654
2655executable('systemd-shutdown',
2656 systemd_shutdown_sources,
2657 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002658 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002659 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002660 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002661 install : true,
2662 install_dir : rootlibexecdir)
2663
2664executable('systemd-update-done',
2665 'src/update-done/update-done.c',
2666 include_directories : includes,
2667 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002668 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002669 install : true,
2670 install_dir : rootlibexecdir)
2671
2672executable('systemd-update-utmp',
2673 'src/update-utmp/update-utmp.c',
2674 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002675 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002676 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002677 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002678 install : true,
2679 install_dir : rootlibexecdir)
2680
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002681if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002682 executable('systemd-modules-load',
2683 'src/modules-load/modules-load.c',
2684 include_directories : includes,
2685 link_with : [libshared],
2686 dependencies : [libkmod],
2687 install_rpath : rootlibexecdir,
2688 install : true,
2689 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002690
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002691 meson.add_install_script('sh', '-c',
2692 mkdir_p.format(modulesloaddir))
2693 meson.add_install_script('sh', '-c',
2694 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002695endif
2696
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002697exe = executable('systemd-nspawn',
2698 systemd_nspawn_sources,
2699 'src/core/mount-setup.c', # FIXME: use a variable?
2700 'src/core/mount-setup.h',
2701 'src/core/loopback-setup.c',
2702 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002703 include_directories : includes,
2704 link_with : [libnspawn_core,
2705 libshared],
2706 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002707 install_rpath : rootlibexecdir,
2708 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002709public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002710
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002711if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002712 executable('systemd-networkd',
2713 systemd_networkd_sources,
2714 include_directories : includes,
2715 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002716 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002717 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002718 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002719 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002720 install_rpath : rootlibexecdir,
2721 install : true,
2722 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002724 executable('systemd-networkd-wait-online',
2725 systemd_networkd_wait_online_sources,
2726 include_directories : includes,
2727 link_with : [libnetworkd_core,
2728 libshared],
2729 install_rpath : rootlibexecdir,
2730 install : true,
2731 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002732
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002733 exe = executable('networkctl',
2734 networkctl_sources,
2735 include_directories : includes,
2736 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002737 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002738 install_rpath : rootlibexecdir,
2739 install : true,
2740 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002741 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002742endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002743
2744executable('systemd-sulogin-shell',
2745 ['src/sulogin-shell/sulogin-shell.c'],
2746 include_directories : includes,
2747 link_with : [libshared],
2748 install_rpath : rootlibexecdir,
2749 install : true,
2750 install_dir : rootlibexecdir)
2751
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002752############################################################
2753
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002754custom_target(
2755 'systemd-runtest.env',
2756 output : 'systemd-runtest.env',
2757 command : ['sh', '-c', '{ ' +
2758 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002759 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002760 '} >@OUTPUT@'],
2761 build_by_default : true)
2762
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002763foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002764 sources = tuple[0]
2765 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2766 dependencies = tuple[2]
2767 condition = tuple.length() >= 4 ? tuple[3] : ''
2768 type = tuple.length() >= 5 ? tuple[4] : ''
2769 defs = tuple.length() >= 6 ? tuple[5] : []
2770 incs = tuple.length() >= 7 ? tuple[6] : includes
2771 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002772
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002773 name = sources[0].split('/')[-1].split('.')[0]
2774 if type.startswith('timeout=')
2775 timeout = type.split('=')[1].to_int()
2776 type = ''
2777 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002778
2779 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002780 exe = executable(
2781 name,
2782 sources,
2783 include_directories : incs,
2784 link_with : link_with,
2785 dependencies : dependencies,
2786 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002787 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002788 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002789 install : install_tests,
2790 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002791
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002792 if type == 'manual'
2793 message('@0@ is a manual test'.format(name))
2794 elif type == 'unsafe' and want_tests != 'unsafe'
2795 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002796 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 test(name, exe,
2798 env : test_env,
2799 timeout : timeout)
2800 endif
2801 else
2802 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2803 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002804endforeach
2805
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002806exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002807 'test-libsystemd-sym',
2808 test_libsystemd_sym_c,
2809 include_directories : includes,
2810 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002811 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002812 install : install_tests,
2813 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002814if want_tests != 'false'
2815 test('test-libsystemd-sym', exe)
2816endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002817
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002818exe = executable(
2819 'test-libsystemd-static-sym',
2820 test_libsystemd_sym_c,
2821 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002822 link_with : [install_libsystemd_static],
2823 dependencies : [threads], # threads is already included in dependencies on the library,
2824 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002825 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002826 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002827 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002828if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002829 test('test-libsystemd-static-sym', exe)
2830endif
2831
2832exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002833 'test-libudev-sym',
2834 test_libudev_sym_c,
2835 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002836 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002837 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002838 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002839 install : install_tests,
2840 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002841if want_tests != 'false'
2842 test('test-libudev-sym', exe)
2843endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002844
2845exe = executable(
2846 'test-libudev-static-sym',
2847 test_libudev_sym_c,
2848 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002849 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002850 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002851 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002852 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002853 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002854if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002855 test('test-libudev-static-sym', exe)
2856endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002857
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002858############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002859
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002860fuzzer_exes = []
2861
Michael Olbrich59967402018-11-11 11:27:35 +01002862if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002863foreach tuple : fuzzers
2864 sources = tuple[0]
2865 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2866 dependencies = tuple[2]
2867 defs = tuple.length() >= 4 ? tuple[3] : []
2868 incs = tuple.length() >= 5 ? tuple[4] : includes
2869
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002870 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002871 dependencies += fuzzing_engine
2872 else
2873 sources += 'src/fuzz/fuzz-main.c'
2874 endif
2875
2876 name = sources[0].split('/')[-1].split('.')[0]
2877
2878 fuzzer_exes += executable(
2879 name,
2880 sources,
2881 include_directories : [incs, include_directories('src/fuzz')],
2882 link_with : link_with,
2883 dependencies : dependencies,
2884 c_args : defs,
2885 install : false)
2886endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002887endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002888
2889run_target('fuzzers',
2890 depends : fuzzer_exes,
2891 command : ['true'])
2892
2893############################################################
2894
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002895make_directive_index_py = find_program('tools/make-directive-index.py')
2896make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002897xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002898hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002899
2900subdir('units')
2901subdir('sysctl.d')
2902subdir('sysusers.d')
2903subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002904subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002905subdir('hwdb')
2906subdir('network')
2907subdir('man')
2908subdir('shell-completion/bash')
2909subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002910subdir('docs/sysvinit')
2911subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002913install_subdir('factory/etc',
2914 install_dir : factorydir)
2915
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002916install_data('xorg/50-systemd-user.sh',
2917 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002918install_data('modprobe.d/systemd.conf',
2919 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002920install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002921 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002922 'NEWS',
2923 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302924 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002925 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002926 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302927 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002928 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002929 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002930 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002931 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2932 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002933
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002934meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2935meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2936
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002937############################################################
2938
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002939meson_check_help = find_program('tools/meson-check-help.sh')
2940
2941foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002942 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002943 if want_tests != 'false'
2944 test('check-help-' + name,
2945 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002946 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002947 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002948endforeach
2949
2950############################################################
2951
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002952# Enable tests for all supported sanitizers
2953foreach tuple : sanitizers
2954 sanitizer = tuple[0]
2955 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002956
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002957 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002958 prev = ''
2959 foreach p : fuzz_regression_tests
2960 b = p.split('/')[-2]
2961 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002962
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002963 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002964
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002965 if name != prev
2966 if want_tests == 'false'
2967 message('Not compiling @0@ because tests is set to false'.format(name))
2968 elif slow_tests
2969 exe = custom_target(
2970 name,
2971 output : name,
2972 depends : build,
2973 command : [env, 'ln', '-fs',
2974 join_paths(build.full_path(), b),
2975 '@OUTPUT@'],
2976 build_by_default : true)
2977 else
2978 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2979 endif
2980 endif
2981 prev = name
2982
2983 if want_tests != 'false' and slow_tests
2984 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2985 env,
2986 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002987 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002988 endif
2989 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002990 endif
2991endforeach
2992
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002993
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002994############################################################
2995
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002996if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002997 all_files = run_command(
2998 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002999 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003000 'ls-files',
3001 ':/*.[ch]'])
3002 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003003
userwithuide85a6902017-08-09 13:41:44 +00003004 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003005 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003006 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003007 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003008 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003009 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003010 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003011endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003012
3013if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003014 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003015 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003016 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003017 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003018endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003019
3020if git.found()
3021 git_head = run_command(
3022 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003023 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003024 'rev-parse', 'HEAD']).stdout().strip()
3025 git_head_short = run_command(
3026 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003027 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003028 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3029
3030 run_target(
3031 'git-snapshot',
3032 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003033 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003034 git_head_short),
3035 '--prefix', 'systemd-@0@/'.format(git_head),
3036 'HEAD'])
3037endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003038
3039############################################################
3040
Lennart Poettering51b13862017-12-20 12:51:14 +01003041meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3042run_target(
3043 'check-api-docs',
3044 depends : [man, libsystemd, libudev],
3045 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3046
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003047run_target(
3048 'make-index-md',
3049 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3050
Lennart Poettering51b13862017-12-20 12:51:14 +01003051############################################################
3052
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003053status = [
3054 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3055
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003056 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003057 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003058 'prefix directory: @0@'.format(prefixdir),
3059 'rootprefix directory: @0@'.format(rootprefixdir),
3060 'sysconf directory: @0@'.format(sysconfdir),
3061 'include directory: @0@'.format(includedir),
3062 'lib directory: @0@'.format(libdir),
3063 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003064 'SysV init scripts: @0@'.format(sysvinit_path),
3065 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003066 'PAM modules directory: @0@'.format(pamlibdir),
3067 'PAM configuration directory: @0@'.format(pamconfdir),
3068 'RPM macros directory: @0@'.format(rpmmacrosdir),
3069 'modprobe.d directory: @0@'.format(modprobedir),
3070 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3071 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3072 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3073 'bash completions directory: @0@'.format(bashcompletiondir),
3074 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003075 'extra start script: @0@'.format(get_option('rc-local')),
3076 'extra stop script: @0@'.format(get_option('halt-local')),
3077 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3078 get_option('debug-tty')),
3079 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003080 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003081 'maximum system UID: @0@'.format(system_uid_max),
3082 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003083 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3084 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3085 'minimum container UID base: @0@'.format(container_uid_base_min),
3086 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003087 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003088 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003089 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003090 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003091 'nobody user name: @0@'.format(nobody_user),
3092 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003093 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003094 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095
3096 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003097 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003098 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003099 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003100 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3101
3102alt_dns_servers = '\n '.join(dns_servers.split(' '))
3103alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3104status += [
3105 'default DNS servers: @0@'.format(alt_dns_servers),
3106 'default NTP servers: @0@'.format(alt_ntp_servers)]
3107
3108alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3109 '@@0@'.format(time_epoch)).stdout().strip()
3110status += [
3111 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3112
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003113status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003114 'static libsystemd: @0@'.format(static_libsystemd),
3115 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003116
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003117# TODO:
3118# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3119# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3120# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3121
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003122if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003123 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003124
3125 if have_gnu_efi
3126 status += [
3127 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3128 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003129 'EFI lib directory: @0@'.format(efi_libdir),
3130 'EFI lds directory: @0@'.format(efi_ldsdir),
3131 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003132 endif
3133endif
3134
3135found = []
3136missing = []
3137
3138foreach tuple : [
3139 ['libcryptsetup'],
3140 ['PAM'],
3141 ['AUDIT'],
3142 ['IMA'],
3143 ['AppArmor'],
3144 ['SELinux'],
3145 ['SECCOMP'],
3146 ['SMACK'],
3147 ['zlib'],
3148 ['xz'],
3149 ['lz4'],
3150 ['bzip2'],
3151 ['ACL'],
3152 ['gcrypt'],
3153 ['qrencode'],
3154 ['microhttpd'],
3155 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003156 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003157 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003158 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003159 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003160 ['libidn'],
3161 ['libiptc'],
3162 ['elfutils'],
3163 ['binfmt'],
3164 ['vconsole'],
3165 ['quotacheck'],
3166 ['tmpfiles'],
3167 ['environment.d'],
3168 ['sysusers'],
3169 ['firstboot'],
3170 ['randomseed'],
3171 ['backlight'],
3172 ['rfkill'],
3173 ['logind'],
3174 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003175 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003176 ['importd'],
3177 ['hostnamed'],
3178 ['timedated'],
3179 ['timesyncd'],
3180 ['localed'],
3181 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003182 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003183 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3184 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003185 ['coredump'],
3186 ['polkit'],
3187 ['legacy pkla', install_polkit_pkla],
3188 ['efi'],
3189 ['gnu-efi', have_gnu_efi],
3190 ['kmod'],
3191 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003192 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003193 ['blkid'],
3194 ['dbus'],
3195 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003196 ['nss-myhostname'],
3197 ['nss-mymachines'],
3198 ['nss-resolve'],
3199 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003200 ['hwdb'],
3201 ['tpm'],
3202 ['man pages', want_man],
3203 ['html pages', want_html],
3204 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003205 ['SysV compat'],
3206 ['utmp'],
3207 ['ldconfig'],
3208 ['hibernate'],
3209 ['adm group', get_option('adm-group')],
3210 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003211 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003212 ['debug hashmap'],
3213 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003214 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003215 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003216 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003217 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003218 ['link-udev-shared', get_option('link-udev-shared')],
3219 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003220]
3221
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003222 if tuple.length() >= 2
3223 cond = tuple[1]
3224 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003225 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3226 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003227 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003228 endif
3229 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003230 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003231 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003232 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003233 endif
3234endforeach
3235
3236status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003237 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003239 '',
3240 'disabled features: @0@'.format(', '.join(missing)),
3241 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003242message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003243
3244if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003245 warning('\n' +
3246 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3247 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3248 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003249endif