blob: 7816ba99490722ce0fed258f1cc90ad6930ecb78 [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()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010023conf.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040024conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010027substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PROJECT_VERSION', meson.project_version())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040029
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',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001440 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001441 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001442 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001443
1444add_project_arguments('-include', 'config.h', language : 'c')
1445
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001446generate_gperfs = find_program('tools/generate-gperfs.py')
1447
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001448subdir('po')
1449subdir('catalog')
1450subdir('src/systemd')
1451subdir('src/basic')
1452subdir('src/libsystemd')
1453subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001454subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001455subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001456
1457libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001458 'journal-core',
1459 libjournal_core_sources,
1460 journald_gperf_c,
1461 include_directories : includes,
1462 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001463
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001464libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001465libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001467 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001468 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 include_directories : includes,
1470 link_args : ['-shared',
1471 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001472 link_with : [libbasic,
1473 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001474 link_whole : [libsystemd_static,
1475 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001476 dependencies : [threads,
1477 librt,
1478 libxz,
1479 liblz4],
1480 link_depends : libsystemd_sym,
1481 install : true,
1482 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001483
Davide Cavalca70848ec2018-04-09 02:43:35 -07001484static_libsystemd = get_option('static-libsystemd')
1485static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1486
1487install_libsystemd_static = static_library(
1488 'systemd',
1489 libsystemd_sources,
1490 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001491 basic_sources,
1492 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001493 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001494 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001495 build_by_default : static_libsystemd != 'false',
1496 install : static_libsystemd != 'false',
1497 install_dir : rootlibdir,
1498 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1499 dependencies : [threads,
1500 librt,
1501 libxz,
1502 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001503 libcap,
1504 libblkid,
1505 libmount,
1506 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001507 libgcrypt],
1508 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1509
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510############################################################
1511
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001512# binaries that have --help and are intended for use by humans,
1513# usually, but not always, installed in /bin.
1514public_programs = []
1515
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001516subdir('src/libudev')
1517subdir('src/shared')
1518subdir('src/core')
1519subdir('src/udev')
1520subdir('src/network')
1521
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001522subdir('src/analyze')
1523subdir('src/journal-remote')
1524subdir('src/coredump')
1525subdir('src/hostname')
1526subdir('src/import')
1527subdir('src/kernel-install')
1528subdir('src/locale')
1529subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001530subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001531subdir('src/nspawn')
1532subdir('src/resolve')
1533subdir('src/timedate')
1534subdir('src/timesync')
1535subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001536subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001537
1538subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001539subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001540subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001541subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001542
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001543############################################################
1544
1545# only static linking apart from libdl, to make sure that the
1546# module is linked to all libraries that it uses.
1547test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001548 'test-dlopen',
1549 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001550 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001551 include_directories : includes,
1552 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001553 dependencies : [libdl],
1554 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001555
Yu Watanabe08540a92018-07-18 09:25:57 +09001556foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001557 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001558 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1559 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001560
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001561 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001562 if condition
1563 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001564
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001565 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001566 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001567
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 nss = shared_library(
1569 'nss_' + module,
1570 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001571 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001572 version : '2',
1573 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001574 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1575 link_args : ['-Wl,-z,nodelete',
1576 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001577 '-Wl,--version-script=' + version_script_arg,
1578 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001579 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001580 libbasic],
1581 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001582 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001583 link_depends : sym,
1584 install : true,
1585 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001586
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001587 # We cannot use shared_module because it does not support version suffix.
1588 # Unfortunately shared_library insists on creating the symlink…
1589 meson.add_install_script('sh', '-c',
1590 'rm $DESTDIR@0@/libnss_@1@.so'
1591 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001592
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001593 if want_tests != 'false'
1594 test('dlopen-nss_' + module,
1595 test_dlopen,
1596 # path to dlopen must include a slash
1597 args : nss.full_path())
1598 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001599 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001600endforeach
1601
1602############################################################
1603
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001604executable('systemd',
1605 systemd_sources,
1606 include_directories : includes,
1607 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001608 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001609 dependencies : [threads,
1610 librt,
1611 libseccomp,
1612 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001613 libmount,
1614 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001615 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001616 install : true,
1617 install_dir : rootlibexecdir)
1618
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001619meson.add_install_script(meson_make_symlink,
1620 join_paths(rootlibexecdir, 'systemd'),
1621 join_paths(rootsbindir, 'init'))
1622
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623exe = executable('systemd-analyze',
1624 systemd_analyze_sources,
1625 include_directories : includes,
1626 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001627 libshared],
1628 dependencies : [threads,
1629 librt,
1630 libseccomp,
1631 libselinux,
1632 libmount,
1633 libblkid],
1634 install_rpath : rootlibexecdir,
1635 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001636public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001637
1638executable('systemd-journald',
1639 systemd_journald_sources,
1640 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001641 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001642 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001643 dependencies : [threads,
1644 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001645 liblz4,
1646 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001647 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001648 install : true,
1649 install_dir : rootlibexecdir)
1650
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001651exe = executable('systemd-cat',
1652 systemd_cat_sources,
1653 include_directories : includes,
1654 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001655 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001656 dependencies : [threads],
1657 install_rpath : rootlibexecdir,
1658 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001659public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001660
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001661exe = executable('journalctl',
1662 journalctl_sources,
1663 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001664 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001665 dependencies : [threads,
1666 libqrencode,
1667 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001668 liblz4,
1669 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001673public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001674
1675executable('systemd-getty-generator',
1676 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001677 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001678 link_with : [libshared],
1679 install_rpath : rootlibexecdir,
1680 install : true,
1681 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001682
1683executable('systemd-debug-generator',
1684 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001685 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001686 link_with : [libshared],
1687 install_rpath : rootlibexecdir,
1688 install : true,
1689 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001690
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001691executable('systemd-run-generator',
1692 'src/run-generator/run-generator.c',
1693 include_directories : includes,
1694 link_with : [libshared],
1695 install_rpath : rootlibexecdir,
1696 install : true,
1697 install_dir : systemgeneratordir)
1698
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001699executable('systemd-fstab-generator',
1700 'src/fstab-generator/fstab-generator.c',
1701 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001703 link_with : [libshared],
1704 install_rpath : rootlibexecdir,
1705 install : true,
1706 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001708if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001709 executable('30-systemd-environment-d-generator',
1710 'src/environment-d-generator/environment-d-generator.c',
1711 include_directories : includes,
1712 link_with : [libshared],
1713 install_rpath : rootlibexecdir,
1714 install : true,
1715 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001716
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001717 meson.add_install_script(meson_make_symlink,
1718 join_paths(sysconfdir, 'environment'),
1719 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720endif
1721
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001722if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001723 executable('systemd-hibernate-resume-generator',
1724 'src/hibernate-resume/hibernate-resume-generator.c',
1725 include_directories : includes,
1726 link_with : [libshared],
1727 install_rpath : rootlibexecdir,
1728 install : true,
1729 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001731 executable('systemd-hibernate-resume',
1732 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001733 include_directories : includes,
1734 link_with : [libshared],
1735 install_rpath : rootlibexecdir,
1736 install : true,
1737 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001738endif
1739
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001740if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001741 executable('systemd-gpt-auto-generator',
1742 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001743 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001744 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001745 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 dependencies : libblkid,
1747 install_rpath : rootlibexecdir,
1748 install : true,
1749 install_dir : systemgeneratordir)
1750
1751 exe = executable('systemd-dissect',
1752 'src/dissect/dissect.c',
1753 include_directories : includes,
1754 link_with : [libshared],
1755 install_rpath : rootlibexecdir,
1756 install : true,
1757 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001758 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759endif
1760
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001761if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001762 executable('systemd-resolved',
1763 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001764 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001765 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001766 libbasic_gcrypt,
1767 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001768 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001769 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001770 install : true,
1771 install_dir : rootlibexecdir)
1772
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001773 exe = executable('resolvectl',
1774 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001776 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001777 libbasic_gcrypt,
1778 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001779 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001780 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001781 libm,
1782 libidn],
1783 install_rpath : rootlibexecdir,
1784 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001785 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001786
1787 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001788 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001789 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001790
1791 meson.add_install_script(meson_make_symlink,
1792 join_paths(bindir, 'resolvectl'),
1793 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001794endif
1795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001796if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001797 executable('systemd-logind',
1798 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001799 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001800 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001801 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001802 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001803 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001804 install_rpath : rootlibexecdir,
1805 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001807
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 exe = executable('loginctl',
1809 loginctl_sources,
1810 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001811 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001812 dependencies : [threads,
1813 liblz4,
1814 libxz],
1815 install_rpath : rootlibexecdir,
1816 install : true,
1817 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001818 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001819
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820 exe = executable('systemd-inhibit',
1821 'src/login/inhibit.c',
1822 include_directories : includes,
1823 link_with : [libshared],
1824 install_rpath : rootlibexecdir,
1825 install : true,
1826 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001827 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001828
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001829 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001830 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001831 pam_systemd = shared_library(
1832 'pam_systemd',
1833 pam_systemd_c,
1834 name_prefix : '',
1835 include_directories : includes,
1836 link_args : ['-shared',
1837 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001838 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001839 libshared_static],
1840 dependencies : [threads,
1841 libpam,
1842 libpam_misc],
1843 link_depends : pam_systemd_sym,
1844 install : true,
1845 install_dir : pamlibdir)
1846
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001847 if want_tests != 'false'
1848 test('dlopen-pam_systemd',
1849 test_dlopen,
1850 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001851 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001852 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001853 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001854
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001855 executable('systemd-user-runtime-dir',
1856 user_runtime_dir_sources,
1857 include_directories : includes,
1858 link_with : [libshared],
1859 install_rpath : rootlibexecdir,
1860 install : true,
1861 install_dir : rootlibexecdir)
1862endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001863
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001864if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865 executable('systemd-user-sessions',
1866 'src/user-sessions/user-sessions.c',
1867 include_directories : includes,
1868 link_with : [libshared],
1869 install_rpath : rootlibexecdir,
1870 install : true,
1871 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001872endif
1873
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001874if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001875 exe = executable('bootctl',
1876 'src/boot/bootctl.c',
1877 include_directories : includes,
1878 link_with : [libshared],
1879 dependencies : [libblkid],
1880 install_rpath : rootlibexecdir,
1881 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001882 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001883
1884 executable('systemd-bless-boot',
1885 'src/boot/bless-boot.c',
1886 include_directories : includes,
1887 link_with : [libshared],
1888 dependencies : [libblkid],
1889 install_rpath : rootlibexecdir,
1890 install : true,
1891 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001892
1893 executable('systemd-bless-boot-generator',
1894 'src/boot/bless-boot-generator.c',
1895 include_directories : includes,
1896 link_with : [libshared],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001900endif
1901
Lennart Poetteringf876f532018-06-25 16:07:33 +02001902executable('systemd-boot-check-no-failures',
1903 'src/boot/boot-check-no-failures.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 dependencies : [libblkid],
1907 install_rpath : rootlibexecdir,
1908 install : true,
1909 install_dir : rootlibexecdir)
1910
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001911exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1912 include_directories : includes,
1913 link_with : [libshared],
1914 dependencies : [threads],
1915 install_rpath : rootlibexecdir,
1916 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001917public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001918
Felipe Satelerf3794362018-05-22 15:08:57 -04001919
1920if get_option('link-systemctl-shared')
1921 systemctl_link_with = [libshared]
1922else
1923 systemctl_link_with = [libsystemd_static,
1924 libshared_static,
1925 libjournal_client,
1926 libbasic_gcrypt]
1927endif
1928
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001929exe = executable('systemctl', 'src/systemctl/systemctl.c',
1930 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001931 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001932 dependencies : [threads,
1933 libcap,
1934 libselinux,
1935 libxz,
1936 liblz4],
1937 install_rpath : rootlibexecdir,
1938 install : true,
1939 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001940public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001941
Lennart Poettering61d05782018-04-16 21:41:40 +02001942if conf.get('ENABLE_PORTABLED') == 1
1943 executable('systemd-portabled',
1944 systemd_portabled_sources,
1945 include_directories : includes,
1946 link_with : [libshared],
1947 dependencies : [threads],
1948 install_rpath : rootlibexecdir,
1949 install : true,
1950 install_dir : rootlibexecdir)
1951
1952 exe = executable('portablectl', 'src/portable/portablectl.c',
1953 include_directories : includes,
1954 link_with : [libshared],
1955 dependencies : [threads],
1956 install_rpath : rootlibexecdir,
1957 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001958 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001959 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001960endif
1961
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001962foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1963 meson.add_install_script(meson_make_symlink,
1964 join_paths(rootbindir, 'systemctl'),
1965 join_paths(rootsbindir, alias))
1966endforeach
1967
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001968if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 executable('systemd-backlight',
1970 'src/backlight/backlight.c',
1971 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001972 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001973 install_rpath : rootlibexecdir,
1974 install : true,
1975 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001976endif
1977
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001978if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 executable('systemd-rfkill',
1980 'src/rfkill/rfkill.c',
1981 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001982 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001983 install_rpath : rootlibexecdir,
1984 install : true,
1985 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001986endif
1987
1988executable('systemd-system-update-generator',
1989 'src/system-update-generator/system-update-generator.c',
1990 include_directories : includes,
1991 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001992 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993 install : true,
1994 install_dir : systemgeneratordir)
1995
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001996if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001997 executable('systemd-cryptsetup',
1998 'src/cryptsetup/cryptsetup.c',
1999 include_directories : includes,
2000 link_with : [libshared],
2001 dependencies : [libcryptsetup],
2002 install_rpath : rootlibexecdir,
2003 install : true,
2004 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002005
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002006 executable('systemd-cryptsetup-generator',
2007 'src/cryptsetup/cryptsetup-generator.c',
2008 include_directories : includes,
2009 link_with : [libshared],
2010 dependencies : [libcryptsetup],
2011 install_rpath : rootlibexecdir,
2012 install : true,
2013 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002014
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 executable('systemd-veritysetup',
2016 'src/veritysetup/veritysetup.c',
2017 include_directories : includes,
2018 link_with : [libshared],
2019 dependencies : [libcryptsetup],
2020 install_rpath : rootlibexecdir,
2021 install : true,
2022 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002023
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002024 executable('systemd-veritysetup-generator',
2025 'src/veritysetup/veritysetup-generator.c',
2026 include_directories : includes,
2027 link_with : [libshared],
2028 dependencies : [libcryptsetup],
2029 install_rpath : rootlibexecdir,
2030 install : true,
2031 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002032endif
2033
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002034if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002035 executable('systemd-sysv-generator',
2036 'src/sysv-generator/sysv-generator.c',
2037 include_directories : includes,
2038 link_with : [libshared],
2039 install_rpath : rootlibexecdir,
2040 install : true,
2041 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002042
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002043 executable('systemd-rc-local-generator',
2044 'src/rc-local-generator/rc-local-generator.c',
2045 include_directories : includes,
2046 link_with : [libshared],
2047 install_rpath : rootlibexecdir,
2048 install : true,
2049 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002050endif
2051
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002052if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002053 executable('systemd-hostnamed',
2054 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002055 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002056 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002057 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002058 install : true,
2059 install_dir : rootlibexecdir)
2060
2061 exe = executable('hostnamectl',
2062 'src/hostname/hostnamectl.c',
2063 include_directories : includes,
2064 link_with : [libshared],
2065 install_rpath : rootlibexecdir,
2066 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002067 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002068endif
2069
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002070if conf.get('ENABLE_LOCALED') == 1
2071 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002072 # logind will load libxkbcommon.so dynamically on its own
2073 deps = [libdl]
2074 else
2075 deps = []
2076 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002077
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002078 executable('systemd-localed',
2079 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002080 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002081 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002082 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002083 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002084 install : true,
2085 install_dir : rootlibexecdir)
2086
2087 exe = executable('localectl',
2088 localectl_sources,
2089 include_directories : includes,
2090 link_with : [libshared],
2091 install_rpath : rootlibexecdir,
2092 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002093 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002094endif
2095
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002096if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 executable('systemd-timedated',
2098 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002099 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002100 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101 install_rpath : rootlibexecdir,
2102 install : true,
2103 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002104endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002105
Yu Watanabe6129ec82018-05-03 18:07:43 +09002106if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002107 exe = executable('timedatectl',
2108 'src/timedate/timedatectl.c',
2109 include_directories : includes,
2110 install_rpath : rootlibexecdir,
2111 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002112 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002113 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002114 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002115endif
2116
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002117if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002118 executable('systemd-timesyncd',
2119 systemd_timesyncd_sources,
2120 include_directories : includes,
2121 link_with : [libshared],
2122 dependencies : [threads,
2123 libm],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002127
2128 executable('systemd-time-wait-sync',
2129 'src/time-wait-sync/time-wait-sync.c',
2130 include_directories : includes,
2131 link_with : [libshared],
2132 install_rpath : rootlibexecdir,
2133 install : true,
2134 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002135endif
2136
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002137if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 executable('systemd-machined',
2139 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002140 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 link_with : [libmachine_core,
2142 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002143 install_rpath : rootlibexecdir,
2144 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 install_dir : rootlibexecdir)
2146
2147 exe = executable('machinectl',
2148 'src/machine/machinectl.c',
2149 include_directories : includes,
2150 link_with : [libshared],
2151 dependencies : [threads,
2152 libxz,
2153 liblz4],
2154 install_rpath : rootlibexecdir,
2155 install : true,
2156 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002157 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002158endif
2159
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002160if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002161 executable('systemd-importd',
2162 systemd_importd_sources,
2163 include_directories : includes,
2164 link_with : [libshared],
2165 dependencies : [threads],
2166 install_rpath : rootlibexecdir,
2167 install : true,
2168 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002170 systemd_pull = executable('systemd-pull',
2171 systemd_pull_sources,
2172 include_directories : includes,
2173 link_with : [libshared],
2174 dependencies : [libcurl,
2175 libz,
2176 libbzip2,
2177 libxz,
2178 libgcrypt],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 systemd_import = executable('systemd-import',
2184 systemd_import_sources,
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [libcurl,
2188 libz,
2189 libbzip2,
2190 libxz],
2191 install_rpath : rootlibexecdir,
2192 install : true,
2193 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002194
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002195 systemd_import_fs = executable('systemd-import-fs',
2196 systemd_import_fs_sources,
2197 include_directories : includes,
2198 link_with : [libshared],
2199 install_rpath : rootlibexecdir,
2200 install : true,
2201 install_dir : rootlibexecdir)
2202
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002203 systemd_export = executable('systemd-export',
2204 systemd_export_sources,
2205 include_directories : includes,
2206 link_with : [libshared],
2207 dependencies : [libcurl,
2208 libz,
2209 libbzip2,
2210 libxz],
2211 install_rpath : rootlibexecdir,
2212 install : true,
2213 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002214
2215 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002216endif
2217
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002218if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002219 exe = executable('systemd-journal-upload',
2220 systemd_journal_upload_sources,
2221 include_directories : includes,
2222 link_with : [libshared],
2223 dependencies : [threads,
2224 libcurl,
2225 libgnutls,
2226 libxz,
2227 liblz4],
2228 install_rpath : rootlibexecdir,
2229 install : true,
2230 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002231 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002232endif
2233
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002234if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002235 s_j_remote = executable('systemd-journal-remote',
2236 systemd_journal_remote_sources,
2237 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002238 link_with : [libshared,
2239 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002240 dependencies : [threads,
2241 libmicrohttpd,
2242 libgnutls,
2243 libxz,
2244 liblz4],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002249 s_j_gatewayd = executable('systemd-journal-gatewayd',
2250 systemd_journal_gatewayd_sources,
2251 include_directories : includes,
2252 link_with : [libshared],
2253 dependencies : [threads,
2254 libmicrohttpd,
2255 libgnutls,
2256 libxz,
2257 liblz4],
2258 install_rpath : rootlibexecdir,
2259 install : true,
2260 install_dir : rootlibexecdir)
2261 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002262endif
2263
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002264if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002265 executable('systemd-coredump',
2266 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002267 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002268 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002270 libacl,
2271 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002272 libxz,
2273 liblz4],
2274 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002275 install : true,
2276 install_dir : rootlibexecdir)
2277
2278 exe = executable('coredumpctl',
2279 coredumpctl_sources,
2280 include_directories : includes,
2281 link_with : [libshared],
2282 dependencies : [threads,
2283 libxz,
2284 liblz4],
2285 install_rpath : rootlibexecdir,
2286 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002287 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288endif
2289
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002290if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291 exe = executable('systemd-binfmt',
2292 'src/binfmt/binfmt.c',
2293 include_directories : includes,
2294 link_with : [libshared],
2295 install_rpath : rootlibexecdir,
2296 install : true,
2297 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002298 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299
2300 meson.add_install_script('sh', '-c',
2301 mkdir_p.format(binfmtdir))
2302 meson.add_install_script('sh', '-c',
2303 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2304endif
2305
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002306if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002307 executable('systemd-vconsole-setup',
2308 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002309 include_directories : includes,
2310 link_with : [libshared],
2311 install_rpath : rootlibexecdir,
2312 install : true,
2313 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002314endif
2315
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002316if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 executable('systemd-random-seed',
2318 'src/random-seed/random-seed.c',
2319 include_directories : includes,
2320 link_with : [libshared],
2321 install_rpath : rootlibexecdir,
2322 install : true,
2323 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002324endif
2325
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002326if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002327 executable('systemd-firstboot',
2328 'src/firstboot/firstboot.c',
2329 include_directories : includes,
2330 link_with : [libshared],
2331 dependencies : [libcrypt],
2332 install_rpath : rootlibexecdir,
2333 install : true,
2334 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002335endif
2336
2337executable('systemd-remount-fs',
2338 'src/remount-fs/remount-fs.c',
2339 'src/core/mount-setup.c',
2340 'src/core/mount-setup.h',
2341 include_directories : includes,
2342 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002343 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002344 install : true,
2345 install_dir : rootlibexecdir)
2346
2347executable('systemd-machine-id-setup',
2348 'src/machine-id-setup/machine-id-setup-main.c',
2349 'src/core/machine-id-setup.c',
2350 'src/core/machine-id-setup.h',
2351 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002352 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002353 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002354 install : true,
2355 install_dir : rootbindir)
2356
2357executable('systemd-fsck',
2358 'src/fsck/fsck.c',
2359 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002360 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002361 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002362 install : true,
2363 install_dir : rootlibexecdir)
2364
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002365executable('systemd-growfs',
2366 'src/partition/growfs.c',
2367 include_directories : includes,
2368 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002369 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002370 install_rpath : rootlibexecdir,
2371 install : true,
2372 install_dir : rootlibexecdir)
2373
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002374executable('systemd-makefs',
2375 'src/partition/makefs.c',
2376 include_directories : includes,
2377 link_with : [libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootlibexecdir)
2381
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002382executable('systemd-sleep',
2383 'src/sleep/sleep.c',
2384 include_directories : includes,
2385 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002386 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002387 install : true,
2388 install_dir : rootlibexecdir)
2389
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002390exe = executable('systemd-sysctl',
2391 'src/sysctl/sysctl.c',
2392 include_directories : includes,
2393 link_with : [libshared],
2394 install_rpath : rootlibexecdir,
2395 install : true,
2396 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002397public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002398
2399executable('systemd-ac-power',
2400 'src/ac-power/ac-power.c',
2401 include_directories : includes,
2402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002403 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002404 install : true,
2405 install_dir : rootlibexecdir)
2406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('systemd-detect-virt',
2408 'src/detect-virt/detect-virt.c',
2409 include_directories : includes,
2410 link_with : [libshared],
2411 install_rpath : rootlibexecdir,
2412 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002413public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002414
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002415exe = executable('systemd-delta',
2416 'src/delta/delta.c',
2417 include_directories : includes,
2418 link_with : [libshared],
2419 install_rpath : rootlibexecdir,
2420 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002421public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002422
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002423exe = executable('systemd-escape',
2424 'src/escape/escape.c',
2425 include_directories : includes,
2426 link_with : [libshared],
2427 install_rpath : rootlibexecdir,
2428 install : true,
2429 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002430public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002431
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002432exe = executable('systemd-notify',
2433 'src/notify/notify.c',
2434 include_directories : includes,
2435 link_with : [libshared],
2436 install_rpath : rootlibexecdir,
2437 install : true,
2438 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
2441executable('systemd-volatile-root',
2442 'src/volatile-root/volatile-root.c',
2443 include_directories : includes,
2444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002445 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002446 install : true,
2447 install_dir : rootlibexecdir)
2448
2449executable('systemd-cgroups-agent',
2450 'src/cgroups-agent/cgroups-agent.c',
2451 include_directories : includes,
2452 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002453 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454 install : true,
2455 install_dir : rootlibexecdir)
2456
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002457exe = executable('systemd-id128',
2458 'src/id128/id128.c',
2459 include_directories : includes,
2460 link_with : [libshared],
2461 install_rpath : rootlibexecdir,
2462 install : true)
2463public_programs += exe
2464
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465exe = executable('systemd-path',
2466 'src/path/path.c',
2467 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002468 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469 install_rpath : rootlibexecdir,
2470 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002471public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002472
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002473exe = executable('systemd-ask-password',
2474 'src/ask-password/ask-password.c',
2475 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002476 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002477 install_rpath : rootlibexecdir,
2478 install : true,
2479 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002480public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002481
2482executable('systemd-reply-password',
2483 'src/reply-password/reply-password.c',
2484 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002485 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002486 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002487 install : true,
2488 install_dir : rootlibexecdir)
2489
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490exe = executable('systemd-tty-ask-password-agent',
2491 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2492 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002493 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002494 install_rpath : rootlibexecdir,
2495 install : true,
2496 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002497public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002498
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499exe = executable('systemd-cgls',
2500 'src/cgls/cgls.c',
2501 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002502 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503 install_rpath : rootlibexecdir,
2504 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002505public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002506
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507exe = executable('systemd-cgtop',
2508 'src/cgtop/cgtop.c',
2509 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002510 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002511 install_rpath : rootlibexecdir,
2512 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002513public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002514
2515executable('systemd-initctl',
2516 'src/initctl/initctl.c',
2517 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002518 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002519 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002520 install : true,
2521 install_dir : rootlibexecdir)
2522
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523exe = executable('systemd-mount',
2524 'src/mount/mount-tool.c',
2525 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002526 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002527 install_rpath : rootlibexecdir,
2528 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002529public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002530
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002531meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002532 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002533
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002534exe = executable('systemd-run',
2535 'src/run/run.c',
2536 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002537 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538 install_rpath : rootlibexecdir,
2539 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002540public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002541
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542exe = executable('systemd-stdio-bridge',
2543 'src/stdio-bridge/stdio-bridge.c',
2544 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002545 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546 install_rpath : rootlibexecdir,
2547 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002548public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002549
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550exe = executable('busctl',
2551 'src/busctl/busctl.c',
2552 'src/busctl/busctl-introspect.c',
2553 'src/busctl/busctl-introspect.h',
2554 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002555 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002556 install_rpath : rootlibexecdir,
2557 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002558public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002559
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002560if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002561 exe = executable('systemd-sysusers',
2562 'src/sysusers/sysusers.c',
2563 include_directories : includes,
2564 link_with : [libshared],
2565 install_rpath : rootlibexecdir,
2566 install : true,
2567 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002568 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002569endif
2570
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002571if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002572 exe = executable('systemd-tmpfiles',
2573 'src/tmpfiles/tmpfiles.c',
2574 include_directories : includes,
2575 link_with : [libshared],
2576 dependencies : [libacl],
2577 install_rpath : rootlibexecdir,
2578 install : true,
2579 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002580 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002581
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002582 if want_tests != 'false'
2583 test('test-systemd-tmpfiles',
2584 test_systemd_tmpfiles_py,
2585 # https://github.com/mesonbuild/meson/issues/2681
2586 args : exe.full_path())
2587 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002588endif
2589
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002590if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002591 exe = executable('systemd-hwdb',
2592 'src/hwdb/hwdb.c',
2593 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2594 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002595 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002596 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002597 install : true,
2598 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002599 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002600endif
2601
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002602if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002603 executable('systemd-quotacheck',
2604 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002605 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002606 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002607 install_rpath : rootlibexecdir,
2608 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002609 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002610endif
2611
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002612exe = executable('systemd-socket-proxyd',
2613 'src/socket-proxy/socket-proxyd.c',
2614 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002615 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002616 dependencies : [threads],
2617 install_rpath : rootlibexecdir,
2618 install : true,
2619 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002620public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002621
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622exe = executable('systemd-udevd',
2623 systemd_udevd_sources,
2624 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002625 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002626 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002628 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002629 dependencies : [threads,
2630 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002632 libacl,
2633 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002634 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635 install : true,
2636 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002637public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002639exe = executable('udevadm',
2640 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002641 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 include_directories : includes,
2643 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002645 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002646 dependencies : [threads,
2647 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002649 libacl,
2650 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002651 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002652 install : true,
2653 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002654public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002655
2656executable('systemd-shutdown',
2657 systemd_shutdown_sources,
2658 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002659 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002660 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002661 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002662 install : true,
2663 install_dir : rootlibexecdir)
2664
2665executable('systemd-update-done',
2666 'src/update-done/update-done.c',
2667 include_directories : includes,
2668 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002669 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002670 install : true,
2671 install_dir : rootlibexecdir)
2672
2673executable('systemd-update-utmp',
2674 'src/update-utmp/update-utmp.c',
2675 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002676 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002677 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002678 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002679 install : true,
2680 install_dir : rootlibexecdir)
2681
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002682if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002683 executable('systemd-modules-load',
2684 'src/modules-load/modules-load.c',
2685 include_directories : includes,
2686 link_with : [libshared],
2687 dependencies : [libkmod],
2688 install_rpath : rootlibexecdir,
2689 install : true,
2690 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002691
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002692 meson.add_install_script('sh', '-c',
2693 mkdir_p.format(modulesloaddir))
2694 meson.add_install_script('sh', '-c',
2695 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002696endif
2697
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002698exe = executable('systemd-nspawn',
2699 systemd_nspawn_sources,
2700 'src/core/mount-setup.c', # FIXME: use a variable?
2701 'src/core/mount-setup.h',
2702 'src/core/loopback-setup.c',
2703 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002704 include_directories : includes,
2705 link_with : [libnspawn_core,
2706 libshared],
2707 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002708 install_rpath : rootlibexecdir,
2709 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002710public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002711
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002712if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 executable('systemd-networkd',
2714 systemd_networkd_sources,
2715 include_directories : includes,
2716 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002718 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002719 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002720 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002721 install_rpath : rootlibexecdir,
2722 install : true,
2723 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002724
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002725 executable('systemd-networkd-wait-online',
2726 systemd_networkd_wait_online_sources,
2727 include_directories : includes,
2728 link_with : [libnetworkd_core,
2729 libshared],
2730 install_rpath : rootlibexecdir,
2731 install : true,
2732 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002733
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002734 exe = executable('networkctl',
2735 networkctl_sources,
2736 include_directories : includes,
2737 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002738 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002739 install_rpath : rootlibexecdir,
2740 install : true,
2741 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002742 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002743endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002744
2745executable('systemd-sulogin-shell',
2746 ['src/sulogin-shell/sulogin-shell.c'],
2747 include_directories : includes,
2748 link_with : [libshared],
2749 install_rpath : rootlibexecdir,
2750 install : true,
2751 install_dir : rootlibexecdir)
2752
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002753############################################################
2754
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002755custom_target(
2756 'systemd-runtest.env',
2757 output : 'systemd-runtest.env',
2758 command : ['sh', '-c', '{ ' +
2759 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002760 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002761 '} >@OUTPUT@'],
2762 build_by_default : true)
2763
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002764foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002765 sources = tuple[0]
2766 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2767 dependencies = tuple[2]
2768 condition = tuple.length() >= 4 ? tuple[3] : ''
2769 type = tuple.length() >= 5 ? tuple[4] : ''
2770 defs = tuple.length() >= 6 ? tuple[5] : []
2771 incs = tuple.length() >= 7 ? tuple[6] : includes
2772 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002773
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 name = sources[0].split('/')[-1].split('.')[0]
2775 if type.startswith('timeout=')
2776 timeout = type.split('=')[1].to_int()
2777 type = ''
2778 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002779
2780 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002781 exe = executable(
2782 name,
2783 sources,
2784 include_directories : incs,
2785 link_with : link_with,
2786 dependencies : dependencies,
2787 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002788 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002789 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002790 install : install_tests,
2791 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002792
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002793 if type == 'manual'
2794 message('@0@ is a manual test'.format(name))
2795 elif type == 'unsafe' and want_tests != 'unsafe'
2796 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002797 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002798 test(name, exe,
2799 env : test_env,
2800 timeout : timeout)
2801 endif
2802 else
2803 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2804 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002805endforeach
2806
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002807exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 'test-libsystemd-sym',
2809 test_libsystemd_sym_c,
2810 include_directories : includes,
2811 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002812 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002813 install : install_tests,
2814 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002815if want_tests != 'false'
2816 test('test-libsystemd-sym', exe)
2817endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002818
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002819exe = executable(
2820 'test-libsystemd-static-sym',
2821 test_libsystemd_sym_c,
2822 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002823 link_with : [install_libsystemd_static],
2824 dependencies : [threads], # threads is already included in dependencies on the library,
2825 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002826 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002827 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002828 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002829if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002830 test('test-libsystemd-static-sym', exe)
2831endif
2832
2833exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002834 'test-libudev-sym',
2835 test_libudev_sym_c,
2836 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002837 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002838 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002839 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002840 install : install_tests,
2841 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002842if want_tests != 'false'
2843 test('test-libudev-sym', exe)
2844endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002845
2846exe = executable(
2847 'test-libudev-static-sym',
2848 test_libudev_sym_c,
2849 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002850 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002851 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002852 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002853 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002854 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002855if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002856 test('test-libudev-static-sym', exe)
2857endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002858
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002859############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002860
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002861fuzzer_exes = []
2862
Michael Olbrich59967402018-11-11 11:27:35 +01002863if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002864foreach tuple : fuzzers
2865 sources = tuple[0]
2866 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2867 dependencies = tuple[2]
2868 defs = tuple.length() >= 4 ? tuple[3] : []
2869 incs = tuple.length() >= 5 ? tuple[4] : includes
2870
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002871 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002872 dependencies += fuzzing_engine
2873 else
2874 sources += 'src/fuzz/fuzz-main.c'
2875 endif
2876
2877 name = sources[0].split('/')[-1].split('.')[0]
2878
2879 fuzzer_exes += executable(
2880 name,
2881 sources,
2882 include_directories : [incs, include_directories('src/fuzz')],
2883 link_with : link_with,
2884 dependencies : dependencies,
2885 c_args : defs,
2886 install : false)
2887endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002888endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002889
2890run_target('fuzzers',
2891 depends : fuzzer_exes,
2892 command : ['true'])
2893
2894############################################################
2895
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002896make_directive_index_py = find_program('tools/make-directive-index.py')
2897make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002898xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002899hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002900
2901subdir('units')
2902subdir('sysctl.d')
2903subdir('sysusers.d')
2904subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002905subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002906subdir('hwdb')
2907subdir('network')
2908subdir('man')
2909subdir('shell-completion/bash')
2910subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002911subdir('docs/sysvinit')
2912subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002913
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002914install_subdir('factory/etc',
2915 install_dir : factorydir)
2916
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002917install_data('xorg/50-systemd-user.sh',
2918 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002919install_data('modprobe.d/systemd.conf',
2920 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002921install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002922 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002923 'NEWS',
2924 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302925 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002926 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002927 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302928 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002929 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002930 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002931 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002932 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2933 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002934
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002935meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2936meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2937
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002938############################################################
2939
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002940meson_check_help = find_program('tools/meson-check-help.sh')
2941
2942foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002943 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002944 if want_tests != 'false'
2945 test('check-help-' + name,
2946 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002947 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002948 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002949endforeach
2950
2951############################################################
2952
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002953# Enable tests for all supported sanitizers
2954foreach tuple : sanitizers
2955 sanitizer = tuple[0]
2956 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002957
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002958 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002959 prev = ''
2960 foreach p : fuzz_regression_tests
2961 b = p.split('/')[-2]
2962 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002963
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002964 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002965
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002966 if name != prev
2967 if want_tests == 'false'
2968 message('Not compiling @0@ because tests is set to false'.format(name))
2969 elif slow_tests
2970 exe = custom_target(
2971 name,
2972 output : name,
2973 depends : build,
2974 command : [env, 'ln', '-fs',
2975 join_paths(build.full_path(), b),
2976 '@OUTPUT@'],
2977 build_by_default : true)
2978 else
2979 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2980 endif
2981 endif
2982 prev = name
2983
2984 if want_tests != 'false' and slow_tests
2985 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2986 env,
2987 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002988 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002989 endif
2990 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002991 endif
2992endforeach
2993
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002994
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002995############################################################
2996
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002997if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002998 all_files = run_command(
2999 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003000 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003001 'ls-files',
3002 ':/*.[ch]'])
3003 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003004
userwithuide85a6902017-08-09 13:41:44 +00003005 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003006 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003007 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003008 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003009 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003010 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003011 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003012endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003013
3014if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003015 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003016 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003017 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003018 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003019endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003020
3021if git.found()
3022 git_head = run_command(
3023 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003024 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003025 'rev-parse', 'HEAD']).stdout().strip()
3026 git_head_short = run_command(
3027 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003028 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003029 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3030
3031 run_target(
3032 'git-snapshot',
3033 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003034 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003035 git_head_short),
3036 '--prefix', 'systemd-@0@/'.format(git_head),
3037 'HEAD'])
3038endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003039
3040############################################################
3041
Lennart Poettering51b13862017-12-20 12:51:14 +01003042meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3043run_target(
3044 'check-api-docs',
3045 depends : [man, libsystemd, libudev],
3046 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3047
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003048run_target(
3049 'make-index-md',
3050 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3051
Lennart Poettering51b13862017-12-20 12:51:14 +01003052############################################################
3053
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003054status = [
3055 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3056
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003057 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003058 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003059 'prefix directory: @0@'.format(prefixdir),
3060 'rootprefix directory: @0@'.format(rootprefixdir),
3061 'sysconf directory: @0@'.format(sysconfdir),
3062 'include directory: @0@'.format(includedir),
3063 'lib directory: @0@'.format(libdir),
3064 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003065 'SysV init scripts: @0@'.format(sysvinit_path),
3066 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003067 'PAM modules directory: @0@'.format(pamlibdir),
3068 'PAM configuration directory: @0@'.format(pamconfdir),
3069 'RPM macros directory: @0@'.format(rpmmacrosdir),
3070 'modprobe.d directory: @0@'.format(modprobedir),
3071 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3072 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3073 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3074 'bash completions directory: @0@'.format(bashcompletiondir),
3075 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003076 'extra start script: @0@'.format(get_option('rc-local')),
3077 'extra stop script: @0@'.format(get_option('halt-local')),
3078 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3079 get_option('debug-tty')),
3080 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003081 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003082 'maximum system UID: @0@'.format(system_uid_max),
3083 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003084 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3085 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3086 'minimum container UID base: @0@'.format(container_uid_base_min),
3087 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003088 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003089 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003090 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003092 'nobody user name: @0@'.format(nobody_user),
3093 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003094 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003095 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003096
3097 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003098 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003099 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003100 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003101 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3102
3103alt_dns_servers = '\n '.join(dns_servers.split(' '))
3104alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3105status += [
3106 'default DNS servers: @0@'.format(alt_dns_servers),
3107 'default NTP servers: @0@'.format(alt_ntp_servers)]
3108
3109alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3110 '@@0@'.format(time_epoch)).stdout().strip()
3111status += [
3112 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3113
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003114status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003115 'static libsystemd: @0@'.format(static_libsystemd),
3116 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003117
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003118# TODO:
3119# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3120# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3121# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3122
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003123if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003124 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003125
3126 if have_gnu_efi
3127 status += [
3128 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003129 'EFI CC @0@'.format(' '.join(efi_cc)),
Yu Watanabe359b4962017-11-25 20:35:24 +09003130 'EFI lib directory: @0@'.format(efi_libdir),
3131 'EFI lds directory: @0@'.format(efi_ldsdir),
3132 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003133 endif
3134endif
3135
3136found = []
3137missing = []
3138
3139foreach tuple : [
3140 ['libcryptsetup'],
3141 ['PAM'],
3142 ['AUDIT'],
3143 ['IMA'],
3144 ['AppArmor'],
3145 ['SELinux'],
3146 ['SECCOMP'],
3147 ['SMACK'],
3148 ['zlib'],
3149 ['xz'],
3150 ['lz4'],
3151 ['bzip2'],
3152 ['ACL'],
3153 ['gcrypt'],
3154 ['qrencode'],
3155 ['microhttpd'],
3156 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003157 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003158 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003159 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003160 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003161 ['libidn'],
3162 ['libiptc'],
3163 ['elfutils'],
3164 ['binfmt'],
3165 ['vconsole'],
3166 ['quotacheck'],
3167 ['tmpfiles'],
3168 ['environment.d'],
3169 ['sysusers'],
3170 ['firstboot'],
3171 ['randomseed'],
3172 ['backlight'],
3173 ['rfkill'],
3174 ['logind'],
3175 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003176 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003177 ['importd'],
3178 ['hostnamed'],
3179 ['timedated'],
3180 ['timesyncd'],
3181 ['localed'],
3182 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003183 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003184 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3185 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003186 ['coredump'],
3187 ['polkit'],
3188 ['legacy pkla', install_polkit_pkla],
3189 ['efi'],
3190 ['gnu-efi', have_gnu_efi],
3191 ['kmod'],
3192 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003193 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003194 ['blkid'],
3195 ['dbus'],
3196 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003197 ['nss-myhostname'],
3198 ['nss-mymachines'],
3199 ['nss-resolve'],
3200 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201 ['hwdb'],
3202 ['tpm'],
3203 ['man pages', want_man],
3204 ['html pages', want_html],
3205 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003206 ['SysV compat'],
3207 ['utmp'],
3208 ['ldconfig'],
3209 ['hibernate'],
3210 ['adm group', get_option('adm-group')],
3211 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003212 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003213 ['debug hashmap'],
3214 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003215 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003216 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003217 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003218 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003219 ['link-udev-shared', get_option('link-udev-shared')],
3220 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003221]
3222
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003223 if tuple.length() >= 2
3224 cond = tuple[1]
3225 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003226 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3227 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003228 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003229 endif
3230 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003231 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003232 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003233 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003234 endif
3235endforeach
3236
3237status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003238 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003239 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003240 '',
3241 'disabled features: @0@'.format(', '.join(missing)),
3242 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003243message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003244
3245if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003246 warning('\n' +
3247 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3248 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3249 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003250endif