blob: 1f44c0fe70d327f4e84d902cff359e815a203eef [file] [log] [blame]
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01001# SPDX-License-Identifier: LGPL-2.1+
Zbigniew Jędrzejewski-Szmek3a726fc2017-11-18 18:32:01 +01002
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003project('systemd', 'c',
Lennart Poetteringde7436b2018-06-22 13:03:47 +02004 version : '239',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04005 license : 'LGPLv2+',
6 default_options: [
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04007 'c_std=gnu99',
8 'prefix=/usr',
9 'sysconfdir=/etc',
10 'localstatedir=/var',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040011 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090012 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040013 )
14
Lennart Poetteringde7436b2018-06-22 13:03:47 +020015libsystemd_version = '0.23.0'
16libudev_version = '1.6.11'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020017
Yu Watanabe348b4432018-05-07 18:17:35 +090018# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040019# Also, for hysterical reasons, we use different variable
20# names, sometimes. Not all variables are included in every
21# set. Ugh, ugh, ugh!
22conf = configuration_data()
23conf.set_quoted('PACKAGE_STRING', meson.project_name() + ' ' + meson.project_version())
24conf.set_quoted('PACKAGE_VERSION', meson.project_version())
25
26substs = configuration_data()
27substs.set('PACKAGE_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
28substs.set('PACKAGE_VERSION', meson.project_version())
29
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020030want_ossfuzz = get_option('oss-fuzz')
31want_libfuzzer = get_option('llvm-fuzz')
32if want_ossfuzz and want_libfuzzer
33 error('only one of oss-fuzz and llvm-fuzz can be specified')
34endif
35fuzzer_build = want_ossfuzz or want_libfuzzer
36
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040037#####################################################################
38
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040039# Try to install the git pre-commit hook
40git_hook = run_command(join_paths(meson.source_root(), 'tools/add-git-hook.sh'))
41if git_hook.returncode() == 0
42 message(git_hook.stdout().strip())
43endif
44
45#####################################################################
46
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010047if get_option('split-usr') == 'auto'
48 split_usr = run_command('test', '-L', '/bin').returncode() != 0
49else
50 split_usr = get_option('split-usr') == 'true'
51endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010052conf.set10('HAVE_SPLIT_USR', split_usr,
53 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010054
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010055if get_option('split-bin') == 'auto'
56 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
57else
58 split_bin = get_option('split-bin') == 'true'
59endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010060conf.set10('HAVE_SPLIT_BIN', split_bin,
61 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010062
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010063rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010064# Unusual rootprefixdir values are used by some distros
65# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010066rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010067if rootprefixdir == ''
68 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010069endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040070
71sysvinit_path = get_option('sysvinit-path')
72sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090073conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020074 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040075
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020076conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
77conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010078conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020079
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040080# join_paths ignore the preceding arguments if an absolute component is
81# encountered, so this should canonicalize various paths when they are
82# absolute or relative.
83prefixdir = get_option('prefix')
84if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -040085 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086endif
87bindir = join_paths(prefixdir, get_option('bindir'))
88libdir = join_paths(prefixdir, get_option('libdir'))
89sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
90includedir = join_paths(prefixdir, get_option('includedir'))
91datadir = join_paths(prefixdir, get_option('datadir'))
92localstatedir = join_paths('/', get_option('localstatedir'))
93
94rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010095rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040096rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
97
98rootlibdir = get_option('rootlibdir')
99if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400100 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400101endif
102
103# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200104pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
105pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400106polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
107polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
108polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
109varlogdir = join_paths(localstatedir, 'log')
110xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900111rpmmacrosdir = get_option('rpmmacrosdir')
112if rpmmacrosdir != 'no'
113 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
114endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200115modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400116
117# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400118pkgdatadir = join_paths(datadir, 'systemd')
119environmentdir = join_paths(prefixdir, 'lib/environment.d')
120pkgsysconfdir = join_paths(sysconfdir, 'systemd')
121userunitdir = join_paths(prefixdir, 'lib/systemd/user')
122userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
123tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
124sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
125sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
126binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
127modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
128networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
129pkgincludedir = join_paths(includedir, 'systemd')
130systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
131usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
132systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
133userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
134systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
135systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
136systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
137systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
138udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
139udevhomedir = udevlibexecdir
140udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
141udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
142catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
143kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
144factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400145bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
146testsdir = join_paths(prefixdir, 'lib/systemd/tests')
147systemdstatedir = join_paths(localstatedir, 'lib/systemd')
148catalogstatedir = join_paths(systemdstatedir, 'catalog')
149randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200150profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400151
tblume75aaade2018-02-01 22:46:15 +0100152docdir = get_option('docdir')
153if docdir == ''
154 docdir = join_paths(datadir, 'doc/systemd')
155endif
156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400157dbuspolicydir = get_option('dbuspolicydir')
158if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400159 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400160endif
161
162dbussessionservicedir = get_option('dbussessionservicedir')
163if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400164 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400165endif
166
167dbussystemservicedir = get_option('dbussystemservicedir')
168if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400169 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400170endif
171
172pamlibdir = get_option('pamlibdir')
173if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177pamconfdir = get_option('pamconfdir')
178if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100182memory_accounting_default = get_option('memory-accounting-default')
183
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400184conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400185conf.set_quoted('SYSTEM_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400186conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
187conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
188conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400189conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
190conf.set_quoted('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100191
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100192conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100193
Michael Bieble17e5ba2017-04-13 10:30:56 -0400194conf.set_quoted('USER_CONFIG_UNIT_PATH', join_paths(pkgsysconfdir, 'user'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195conf.set_quoted('USER_DATA_UNIT_PATH', userunitdir)
196conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400197conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
198conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
199conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
200conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100201conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100202conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400203conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
204conf.set_quoted('SYSTEMD_SLEEP_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-sleep'))
205conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
206conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
207conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100208conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400209conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400210conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
211conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400212conf.set_quoted('SYSTEM_GENERATOR_PATH', systemgeneratordir)
213conf.set_quoted('USER_GENERATOR_PATH', usergeneratordir)
214conf.set_quoted('SYSTEM_ENV_GENERATOR_PATH', systemenvgeneratordir)
215conf.set_quoted('USER_ENV_GENERATOR_PATH', userenvgeneratordir)
216conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
217conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
219conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700220conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700221conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400222conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400223conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400224conf.set_quoted('LIBDIR', libdir)
225conf.set_quoted('ROOTLIBDIR', rootlibdir)
226conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
227conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400228conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
229conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200230conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400231conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
232conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
233conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
234conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200235conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100236conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400239substs.set('exec_prefix', prefixdir)
240substs.set('libdir', libdir)
241substs.set('rootlibdir', rootlibdir)
242substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400243substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400244substs.set('bindir', bindir)
245substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400246substs.set('rootlibexecdir', rootlibexecdir)
247substs.set('systemunitdir', systemunitdir)
248substs.set('userunitdir', userunitdir)
249substs.set('systempresetdir', systempresetdir)
250substs.set('userpresetdir', userpresetdir)
251substs.set('udevhwdbdir', udevhwdbdir)
252substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400253substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200254substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('catalogdir', catalogdir)
256substs.set('tmpfilesdir', tmpfilesdir)
257substs.set('sysusersdir', sysusersdir)
258substs.set('sysctldir', sysctldir)
259substs.set('binfmtdir', binfmtdir)
260substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200261substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400262substs.set('systemgeneratordir', systemgeneratordir)
263substs.set('usergeneratordir', usergeneratordir)
264substs.set('systemenvgeneratordir', systemenvgeneratordir)
265substs.set('userenvgeneratordir', userenvgeneratordir)
266substs.set('systemshutdowndir', systemshutdowndir)
267substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400268substs.set('VARLOGDIR', varlogdir)
269substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400270substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
271substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400272substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
273substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
274substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
275substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100276substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200277substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400278
279#####################################################################
280
281cc = meson.get_compiler('c')
282pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400283check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100284meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400285
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200286want_tests = get_option('tests')
287slow_tests = want_tests != 'false' and get_option('slow-tests')
288install_tests = get_option('install-tests')
289
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200290cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200291if cxx.found()
292 # Used only for tests
293 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200294 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200295else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200296 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400297endif
298
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500299if want_libfuzzer
300 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200301elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500302 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
303endif
304
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900305possible_cc_flags = [
306 '-Wextra',
307 '-Werror=undef',
308 '-Wlogical-op',
309 '-Wmissing-include-dirs',
310 '-Wold-style-definition',
311 '-Wpointer-arith',
312 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900313 '-Wfloat-equal',
314 '-Wsuggest-attribute=noreturn',
315 '-Werror=missing-prototypes',
316 '-Werror=implicit-function-declaration',
317 '-Werror=missing-declarations',
318 '-Werror=return-type',
319 '-Werror=incompatible-pointer-types',
320 '-Werror=format=2',
321 '-Wstrict-prototypes',
322 '-Wredundant-decls',
323 '-Wmissing-noreturn',
324 '-Wimplicit-fallthrough=5',
325 '-Wshadow',
326 '-Wendif-labels',
327 '-Wstrict-aliasing=2',
328 '-Wwrite-strings',
329 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200330 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200331 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900332 '-Wdate-time',
333 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700334
335 # negative arguments are correctly detected starting with meson 0.46.
336 '-Wno-unused-parameter',
337 '-Wno-missing-field-initializers',
338 '-Wno-unused-result',
339 '-Wno-format-signedness',
340
341 # work-around for gcc 7.1 turning this on on its own.
342 '-Wno-error=nonnull',
343
344 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
345 # optimizations enabled, producing essentially false positives.
346 '-Wno-maybe-uninitialized',
347
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-ffast-math',
349 '-fno-common',
350 '-fdiagnostics-show-option',
351 '-fno-strict-aliasing',
352 '-fvisibility=hidden',
353 '-fstack-protector',
354 '-fstack-protector-strong',
355 '--param=ssp-buffer-size=4',
356]
357
358# --as-needed and --no-undefined are provided by meson by default,
359# run mesonconf to see what is enabled
360possible_link_flags = [
361 '-Wl,-z,relro',
362 '-Wl,-z,now',
363]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400364
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500365# the oss-fuzz fuzzers are not built with -fPIE, so don't
366# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500367if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900368 possible_cc_flags += '-fPIE'
369 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500370endif
371
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900372if cc.get_id() == 'clang'
373 possible_cc_flags += [
374 '-Wno-typedef-redefinition',
375 '-Wno-gnu-variable-sized-type-not-at-end',
376 ]
377endif
378
379if get_option('buildtype') != 'debug'
380 possible_cc_flags += [
381 '-ffunction-sections',
382 '-fdata-sections',
383 ]
384
385 possible_link_flags += '-Wl,--gc-sections'
386endif
387
388add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900389add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900390
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800391if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400392 #include <time.h>
393 #include <inttypes.h>
394 typedef uint64_t usec_t;
395 usec_t now(clockid_t clock);
396 int main(void) {
397 struct timespec now;
398 return 0;
399 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100400''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400401 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400402endif
403
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200404cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400405
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400406#####################################################################
407# compilation result tests
408
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400409conf.set('_GNU_SOURCE', true)
410conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400411
412conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
417conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
418conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
419
420decl_headers = '''
421#include <uchar.h>
422#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000423#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100424#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426
427foreach decl : ['char16_t',
428 'char32_t',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000429 'struct fib_rule_uid_range',
Susant Sahani926062f2018-11-27 10:58:54 +0530430 'struct fib_rule_port_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100431 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400432 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400433
434 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200435 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
436
437 if decl == 'struct statx'
438 if have
439 want_linux_stat_h = false
440 else
441 have = cc.sizeof(decl,
442 prefix : decl_headers + '#include <linux/stat.h>',
443 args : '-D_GNU_SOURCE') > 0
444 want_linux_stat_h = have
445 endif
446 endif
447
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200448 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400449endforeach
450
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200451conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700452
Yu Watanabe9714c022018-12-02 16:27:02 +0100453foreach decl : [['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900454 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
455 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
456 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
457 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
458 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Yu Watanabeb6459df2018-12-04 01:28:23 +0100459 ['FRA_TUN_ID', 'linux/fib_rules.h'],
460 ['FRA_SUPPRESS_PREFIXLEN', 'linux/fib_rules.h'],
Yu Watanabe9714c022018-12-02 16:27:02 +0100461 ['FRA_PAD', 'linux/fib_rules.h'],
462 ['FRA_L3MDEV', 'linux/fib_rules.h'],
463 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
464 ['FRA_DPORT_RANGE', 'linux/fib_rules.h'],
465 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
466 ['FOU_CMD_GET', 'linux/fou.h'],
467 ['IFA_FLAGS', 'linux/if_addr.h'],
468 ['IFLA_BRIDGE_VLAN_TUNNEL_INFO', 'linux/if_bridge.h'],
469 ['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
470 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
471 ['IN6_ADDR_GEN_MODE_RANDOM', 'linux/if_link.h'],
472 ['IFLA_IPVLAN_MODE', 'linux/if_link.h'],
473 ['IPVLAN_MODE_L3S', 'linux/if_link.h'],
474 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
475 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
476 ['IFLA_CARRIER_CHANGES', 'linux/if_link.h'],
477 ['IFLA_PHYS_SWITCH_ID', 'linux/if_link.h'],
478 ['IFLA_LINK_NETNSID', 'linux/if_link.h'],
479 ['IFLA_PHYS_PORT_NAME', 'linux/if_link.h'],
480 ['IFLA_PROTO_DOWN', 'linux/if_link.h'],
481 ['IFLA_GSO_MAX_SIZE', 'linux/if_link.h'],
482 ['IFLA_PAD', 'linux/if_link.h'],
483 ['IFLA_XDP', 'linux/if_link.h'],
484 ['IFLA_EVENT', 'linux/if_link.h'],
485 ['IFLA_IF_NETNSID', 'linux/if_link.h'],
486 ['IFLA_TARGET_NETNSID', 'linux/if_link.h'],
487 ['IFLA_NEW_IFINDEX', 'linux/if_link.h'],
488 ['IFLA_MAX_MTU', 'linux/if_link.h'],
489 ['IFLA_BOND_ACTIVE_SLAVE', 'linux/if_link.h'],
490 ['IFLA_BOND_AD_INFO', 'linux/if_link.h'],
491 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
492 ['IFLA_BOND_TLB_DYNAMIC_LB', 'linux/if_link.h'],
493 ['IFLA_VXLAN_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
494 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
495 ['IFLA_VXLAN_COLLECT_METADATA', 'linux/if_link.h'],
496 ['IFLA_VXLAN_LABEL', 'linux/if_link.h'],
497 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
498 ['IFLA_VXLAN_TTL_INHERIT', 'linux/if_link.h'],
499 ['IFLA_GENEVE_TOS', 'linux/if_link.h'],
500 ['IFLA_GENEVE_COLLECT_METADATA', 'linux/if_link.h'],
501 ['IFLA_GENEVE_REMOTE6', 'linux/if_link.h'],
502 ['IFLA_GENEVE_UDP_ZERO_CSUM6_RX', 'linux/if_link.h'],
503 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
504 ['IFLA_GENEVE_TTL_INHERIT', 'linux/if_link.h'],
505 ['IFLA_BR_MAX_AGE', 'linux/if_link.h'],
506 ['IFLA_BR_PRIORITY', 'linux/if_link.h'],
507 ['IFLA_BR_VLAN_PROTOCOL', 'linux/if_link.h'],
508 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
509 ['IFLA_BR_VLAN_STATS_ENABLED', 'linux/if_link.h'],
510 ['IFLA_BR_MCAST_STATS_ENABLED', 'linux/if_link.h'],
511 ['IFLA_BR_MCAST_MLD_VERSION', 'linux/if_link.h'],
512 ['IFLA_BR_VLAN_STATS_PER_PORT', 'linux/if_link.h'],
513 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
514 ['IFLA_BRPORT_PROXYARP_WIFI', 'linux/if_link.h'],
515 ['IFLA_BRPORT_MULTICAST_ROUTER', 'linux/if_link.h'],
516 ['IFLA_BRPORT_PAD', 'linux/if_link.h'],
517 ['IFLA_BRPORT_MCAST_FLOOD', 'linux/if_link.h'],
518 ['IFLA_BRPORT_VLAN_TUNNEL', 'linux/if_link.h'],
519 ['IFLA_BRPORT_BCAST_FLOOD', 'linux/if_link.h'],
520 ['IFLA_BRPORT_NEIGH_SUPPRESS', 'linux/if_link.h'],
521 ['IFLA_BRPORT_ISOLATED', 'linux/if_link.h'],
522 ['IFLA_BRPORT_BACKUP_PORT', 'linux/if_link.h'],
523 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
524 # if_tunnel.h is buggy and cannot be included on its own
525 ['IFLA_VTI_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
526 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
527 ['IFLA_IPTUN_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
528 ['IFLA_IPTUN_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
529 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
530 ['IFLA_GRE_COLLECT_METADATA', 'linux/if_tunnel.h', '#include <net/if.h>'],
531 ['IFLA_GRE_IGNORE_DF', 'linux/if_tunnel.h', '#include <net/if.h>'],
532 ['IFLA_GRE_FWMARK', 'linux/if_tunnel.h', '#include <net/if.h>'],
533 ['IFLA_GRE_ERSPAN_INDEX', 'linux/if_tunnel.h', '#include <net/if.h>'],
534 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
535 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400536 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400537 prefix = decl.length() > 2 ? decl[2] : ''
538 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200539 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540endforeach
541
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400542foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200543 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544endforeach
545
546foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100547 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100548 ['gettid', '''#include <sys/types.h>
549 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100550 ['pivot_root', '''#include <stdlib.h>
551 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100552 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400553 #include <sys/stat.h>
554 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100555 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100556 ['renameat2', '''#include <stdio.h>
557 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400558 ['kcmp', '''#include <linux/kcmp.h>'''],
559 ['keyctl', '''#include <sys/types.h>
560 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100561 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400562 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200563 ['bpf', '''#include <sys/syscall.h>
564 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100565 ['statx', '''#include <sys/types.h>
566 #include <sys/stat.h>
567 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100568 ['explicit_bzero' , '''#include <string.h>'''],
569 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400570]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400571
Lennart Poettering85db59b2017-12-25 12:01:14 +0100572 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200573 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400574endforeach
575
Lennart Poettering85db59b2017-12-25 12:01:14 +0100576if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200577 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200578 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400579else
580 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200581 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200582 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400583endif
584
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585#####################################################################
586
587sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400588awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400589m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400590stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400591git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100592env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100593perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400594
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400595meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400596mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400597test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
598splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400599
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
601# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500602progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400603 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400604 ['kmod', '/usr/bin/kmod' ],
605 ['kexec', '/usr/sbin/kexec' ],
606 ['sulogin', '/usr/sbin/sulogin' ],
607 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
608 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
609 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
610 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
611 ]
612foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 path = get_option(prog[0] + '-path')
614 if path != ''
615 message('Using @1@ for @0@'.format(prog[0], path))
616 else
617 exe = find_program(prog[0],
618 '/usr/sbin/' + prog[0],
619 '/sbin/' + prog[0],
620 required: false)
621 path = exe.found() ? exe.path() : prog[1]
622 endif
623 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
624 conf.set_quoted(name, path)
625 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400626endforeach
627
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500628conf.set_quoted('TELINIT', get_option('telinit-path'))
629
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400630if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100631 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400632endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634############################################################
635
636gperf = find_program('gperf')
637
638gperf_test_format = '''
639#include <string.h>
640const char * in_word_set(const char *, @0@);
641@1@
642'''
643gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
644gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
645gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
646if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400647 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400648else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400649 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
650 if cc.compiles(gperf_test)
651 gperf_len_type = 'unsigned'
652 else
653 error('unable to determine gperf len type')
654 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400655endif
656message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400657conf.set('GPERF_LEN_TYPE', gperf_len_type,
658 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400659
660############################################################
661
662if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100665foreach header : ['crypt.h',
Yu Watanabeb9683ba2018-12-04 07:46:59 +0100666 'linux/btrfs_tree.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900667 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668 'linux/memfd.h',
669 'linux/vm_sockets.h',
Yu Watanabe9714c022018-12-02 16:27:02 +0100670 'linux/can/vxcan.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200671 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400672 'valgrind/memcheck.h',
673 'valgrind/valgrind.h',
674 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400675
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200676 conf.set10('HAVE_' + header.underscorify().to_upper(),
677 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400678endforeach
679
680############################################################
681
682conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400683conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
684gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400685
686default_hierarchy = get_option('default-hierarchy')
687conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
688 description : 'default cgroup hierarchy as string')
689if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400690 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400691elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400692 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400694 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400695endif
696
697time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900698if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400699 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900700 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400701endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400702conf.set('TIME_EPOCH', time_epoch)
703
704system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900705if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400706 system_uid_max = run_command(
707 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800708 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
709 '/etc/login.defs').stdout().strip()
710 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900711 system_uid_max = 999
712 else
713 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800714 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400715endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400716conf.set('SYSTEM_UID_MAX', system_uid_max)
717substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400718
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400719system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900720if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400721 system_gid_max = run_command(
722 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800723 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
724 '/etc/login.defs').stdout().strip()
725 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900726 system_gid_max = 999
727 else
728 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800729 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400730endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400731conf.set('SYSTEM_GID_MAX', system_gid_max)
732substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400733
Yu Watanabeac093402018-05-10 16:04:16 +0900734dynamic_uid_min = get_option('dynamic-uid-min')
735dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100736conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
737conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
738substs.set('dynamicuidmin', dynamic_uid_min)
739substs.set('dynamicuidmax', dynamic_uid_max)
740
Yu Watanabeac093402018-05-10 16:04:16 +0900741container_uid_base_min = get_option('container-uid-base-min')
742container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100743conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
744conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
745substs.set('containeruidbasemin', container_uid_base_min)
746substs.set('containeruidbasemax', container_uid_base_max)
747
Lennart Poetteringafde4572017-12-05 11:00:24 +0100748nobody_user = get_option('nobody-user')
749nobody_group = get_option('nobody-group')
750
Chen Qi2484bff2018-07-23 14:53:09 +0800751if not meson.is_cross_build()
752 getent_result = run_command('getent', 'passwd', '65534')
753 if getent_result.returncode() == 0
754 name = getent_result.stdout().split(':')[0]
755 if name != nobody_user
756 warning('\n' +
757 '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) +
758 'Your build will result in an user table setup that is incompatible with the local system.')
759 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100760 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800761 id_result = run_command('id', '-u', nobody_user)
762 if id_result.returncode() == 0
763 id = id_result.stdout().to_int()
764 if id != 65534
765 warning('\n' +
766 '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) +
767 'Your build will result in an user table setup that is incompatible with the local system.')
768 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100769 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100770
Chen Qi2484bff2018-07-23 14:53:09 +0800771 getent_result = run_command('getent', 'group', '65534')
772 if getent_result.returncode() == 0
773 name = getent_result.stdout().split(':')[0]
774 if name != nobody_group
775 warning('\n' +
776 '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) +
777 'Your build will result in an group table setup that is incompatible with the local system.')
778 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100779 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800780 id_result = run_command('id', '-g', nobody_group)
781 if id_result.returncode() == 0
782 id = id_result.stdout().to_int()
783 if id != 65534
784 warning('\n' +
785 '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) +
786 'Your build will result in an group table setup that is incompatible with the local system.')
787 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100788 endif
789endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900790if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900791 warning('\n' +
792 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
793 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900794endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100795
796conf.set_quoted('NOBODY_USER_NAME', nobody_user)
797conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900798substs.set('NOBODY_USER_NAME', nobody_user)
799substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100800
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801tty_gid = get_option('tty-gid')
802conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400803substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400804
Ikey Doherty84786b82017-12-03 12:28:23 +0000805# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900806users_gid = get_option('users-gid')
807substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000808
Yu Watanabe348b4432018-05-07 18:17:35 +0900809conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
810conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400811
Michael Bieblace5e312018-07-13 23:36:13 +0200812dev_kvm_mode = get_option('dev-kvm-mode')
813substs.set('DEV_KVM_MODE', dev_kvm_mode)
814conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700815substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400816
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400817kill_user_processes = get_option('default-kill-user-processes')
818conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100819conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400820substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400821
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400822dns_servers = get_option('dns-servers')
823conf.set_quoted('DNS_SERVERS', dns_servers)
824substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400826ntp_servers = get_option('ntp-servers')
827conf.set_quoted('NTP_SERVERS', ntp_servers)
828substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400829
830conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
831
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400832substs.set('SUSHELL', get_option('debug-shell'))
833substs.set('DEBUGTTY', get_option('debug-tty'))
834
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200835enable_debug_hashmap = false
836enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900837enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900838enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200839foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900840 if name == 'hashmap'
841 enable_debug_hashmap = true
842 elif name == 'mmap-cache'
843 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900844 elif name == 'siphash'
845 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900846 elif name == 'udev'
847 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900848 else
849 message('unknown debug option "@0@", ignoring'.format(name))
850 endif
851endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200852conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
853conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900854conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900855conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400856
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200857conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200858conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200859
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860#####################################################################
861
862threads = dependency('threads')
863librt = cc.find_library('rt')
864libm = cc.find_library('m')
865libdl = cc.find_library('dl')
866libcrypt = cc.find_library('crypt')
867
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400868libcap = dependency('libcap', required : false)
869if not libcap.found()
870 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
871 libcap = cc.find_library('cap')
872endif
873
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100875 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400876
877want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500878if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400879 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400880 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400881 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200882 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400883else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400885 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400886endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200887conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400888
889want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500890if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400891 libselinux = dependency('libselinux',
892 version : '>= 2.1.9',
893 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400895else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200896 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400897 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libapparmor = dependency('libapparmor',
904 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200905 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400906else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200907 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400908 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400909endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200910conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400911
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400912smack_run_label = get_option('smack-run-label')
913if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400914 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400915endif
916
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400917want_polkit = get_option('polkit')
918install_polkit = false
919install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500920if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400921 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400922
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400923 libpolkit = dependency('polkit-gobject-1',
924 required : false)
925 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
926 message('Old polkit detected, will install pkla files')
927 install_polkit_pkla = true
928 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400929endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200930conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400931
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400932want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500933if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400934 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200935 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400936else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200937 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400938 libacl = []
939endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400941
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400942want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500943if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400944 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200947 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400948 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400949endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200950conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400951
952want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500953if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400954 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200955 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400956else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200957 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400958 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400959endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200960conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961
962want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500963if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400964 libkmod = dependency('libkmod',
965 version : '>= 15',
966 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200967 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400970 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400973
974want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500975if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400976 libpam = cc.find_library('pam', required : want_pam == 'true')
977 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200978 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400979else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200980 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400981 libpam = []
982 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400983endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200984conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400985
986want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500987if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400988 libmicrohttpd = dependency('libmicrohttpd',
989 version : '>= 0.9.33',
990 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200993 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400994 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400995endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400997
998want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500999if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libcryptsetup = dependency('libcryptsetup',
1001 version : '>= 1.6.0',
1002 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001004 have_sector = cc.has_member(
1005 'struct crypt_params_plain',
1006 'sector_size',
1007 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001008else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001009 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001010 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001011 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001013conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +01001014conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001015
1016want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001017if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001018 libcurl = dependency('libcurl',
1019 version : '>= 7.32.0',
1020 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001021 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001022else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001023 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001024 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001025endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001026conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001027
1028want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001029want_libidn2 = get_option('libidn2')
1030if want_libidn == 'true' and want_libidn2 == 'true'
1031 error('libidn and libidn2 cannot be requested simultaneously')
1032endif
1033
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001034if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001035 libidn = dependency('libidn',
1036 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001040 libidn = []
1041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001043if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001044 # libidn is used for both libidn and libidn2 objects
1045 libidn = dependency('libidn2',
1046 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001047 have = libidn.found()
1048else
1049 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001051conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001052
1053want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001054if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001055 libiptc = dependency('libiptc',
1056 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001057 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001058else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001059 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001060 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001061endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001062conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063
1064want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001065if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001066 libqrencode = dependency('libqrencode',
1067 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001068 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001069else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001070 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001072endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001075want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001076if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001077 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1078 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001079 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001080else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001081 have = false
1082endif
1083if not have
1084 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001085 libgcrypt = []
1086 libgpg_error = []
1087endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001088conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001089
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001091if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libgnutls = dependency('gnutls',
1093 version : '>= 3.1.4',
1094 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001099endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001102want_openssl = get_option('openssl')
1103if want_openssl != 'false' and not fuzzer_build
1104 libopenssl = dependency('openssl',
1105 version : '>= 1.1.0',
1106 required : want_openssl == 'true')
1107 have = libopenssl.found()
1108else
1109 have = false
1110 libopenssl = []
1111endif
1112conf.set10('HAVE_OPENSSL', have)
1113
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001114want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001115if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001116 libdw = dependency('libdw',
1117 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001118 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001119else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001120 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001121 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001122endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001123conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001124
1125want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001126if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001127 libz = dependency('zlib',
1128 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001130else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001131 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001132 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001133endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001134conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001135
1136want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001137if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001138 libbzip2 = cc.find_library('bz2',
1139 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001140 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001141else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001142 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001143 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001144endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001145conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001146
1147want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001148if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libxz = dependency('liblzma',
1150 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001153 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001154 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001155endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001156conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001157
1158want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001159if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001161 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001162 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001163 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001164else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001165 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001167endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001170want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001171if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001172 libxkbcommon = dependency('xkbcommon',
1173 version : '>= 0.3.0',
1174 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001175 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001176else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001178 libxkbcommon = []
1179endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001180conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001181
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001182want_pcre2 = get_option('pcre2')
1183if want_pcre2 != 'false'
1184 libpcre2 = dependency('libpcre2-8',
1185 required : want_pcre2 == 'true')
1186 have = libpcre2.found()
1187else
1188 have = false
1189 libpcre2 = []
1190endif
1191conf.set10('HAVE_PCRE2', have)
1192
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001193want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001194if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001195 libglib = dependency('glib-2.0',
1196 version : '>= 2.22.0',
1197 required : want_glib == 'true')
1198 libgobject = dependency('gobject-2.0',
1199 version : '>= 2.22.0',
1200 required : want_glib == 'true')
1201 libgio = dependency('gio-2.0',
1202 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001203 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001204else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001206 libglib = []
1207 libgobject = []
1208 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001209endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001210conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001211
1212want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001213if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001214 libdbus = dependency('dbus-1',
1215 version : '>= 1.3.2',
1216 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001217 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001218else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001219 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001220 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001222conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001223
Yu Watanabe42303dc2017-06-18 05:22:32 +09001224default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001225if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001226 default_dnssec = 'no'
1227endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001229 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1230 default_dnssec = 'no'
1231endif
1232conf.set('DEFAULT_DNSSEC_MODE',
1233 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1234substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1235
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001236dns_over_tls = get_option('dns-over-tls')
1237if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001238 if dns_over_tls == 'openssl'
1239 have_gnutls = false
1240 else
1241 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1242 if dns_over_tls == 'gnutls' and not have_gnutls
1243 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1244 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001245 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001246 if dns_over_tls == 'gnutls' or have_gnutls
1247 have_openssl = false
1248 else
1249 have_openssl = conf.get('HAVE_OPENSSL') == 1
1250 if dns_over_tls != 'auto' and not have_openssl
1251 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1252 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1253 endif
1254 endif
1255 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001256else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001257 have = false
1258 have_gnutls = false
1259 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001260endif
1261conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001262conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1263conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001264
Iwan Timmerc9299be2018-06-13 20:26:24 +02001265default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001266if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001267 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001268endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001269if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1270 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 +02001271 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001272endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001273conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1274 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1275substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001276
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001277want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001278if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001279 have = (conf.get('HAVE_LIBCURL') == 1 and
1280 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001281 conf.get('HAVE_XZ') == 1 and
1282 conf.get('HAVE_GCRYPT') == 1)
1283 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001284 error('importd support was requested, but dependencies are not available')
1285 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001286else
1287 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001288endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001289conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001290
1291want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001292if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001293 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1294 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001295 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1296 # it's possible to build one without the other. Complain only if
1297 # support was explictly requested. The auxiliary files like sysusers
1298 # config should be installed when any of the programs are built.
1299 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1300 error('remote support was requested, but dependencies are not available')
1301 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001302 have = have_deps[0] or have_deps[1]
1303else
1304 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001305endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001306conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001307
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001308foreach term : ['utmp',
1309 'hibernate',
1310 'environment-d',
1311 'binfmt',
1312 'coredump',
1313 'resolve',
1314 'logind',
1315 'hostnamed',
1316 'localed',
1317 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001318 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001319 'networkd',
1320 'timedated',
1321 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001322 'firstboot',
1323 'randomseed',
1324 'backlight',
1325 'vconsole',
1326 'quotacheck',
1327 'sysusers',
1328 'tmpfiles',
1329 'hwdb',
1330 'rfkill',
1331 'ldconfig',
1332 'efi',
1333 'tpm',
1334 'ima',
1335 'smack',
1336 'gshadow',
1337 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001338 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001339 'nss-systemd']
1340 have = get_option(term)
1341 name = 'ENABLE_' + term.underscorify().to_upper()
1342 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001343endforeach
1344
Yu Watanabe08540a92018-07-18 09:25:57 +09001345foreach tuple : [['nss-mymachines', 'machined'],
1346 ['nss-resolve', 'resolve']]
1347 want = get_option(tuple[0])
1348 if want != 'false'
1349 have = get_option(tuple[1])
1350 if want == 'true' and not have
1351 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1352 endif
1353 else
1354 have = false
1355 endif
1356 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1357 conf.set10(name, have)
1358endforeach
1359
1360enable_nss = false
1361foreach term : ['ENABLE_NSS_MYHOSTNAME',
1362 'ENABLE_NSS_MYMACHINES',
1363 'ENABLE_NSS_RESOLVE',
1364 'ENABLE_NSS_SYSTEMD']
1365 if conf.get(term) == 1
1366 enable_nss = true
1367 endif
1368endforeach
1369conf.set10('ENABLE_NSS', enable_nss)
1370
Yu Watanabe348b4432018-05-07 18:17:35 +09001371conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001372
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001373tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001374fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001375
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001376conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001377
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001378#####################################################################
1379
1380if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001381 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001382
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001383 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001384 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001385 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001386 elif efi_arch == 'x86_64'
1387 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001388 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001389 elif efi_arch == 'arm'
1390 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001391 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001392 elif efi_arch == 'aarch64'
1393 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001394 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001395 else
1396 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001397 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001398 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001400 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001402
Yu Watanabeac093402018-05-10 16:04:16 +09001403 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001404else
1405 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001407conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408
1409#####################################################################
1410
1411config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 output : 'config.h',
1413 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001414
Yu Watanabe348b4432018-05-07 18:17:35 +09001415meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1416
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001417includes = include_directories('src/basic',
1418 'src/shared',
1419 'src/systemd',
1420 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001421 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001422 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001423 'src/resolve',
1424 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001425 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426 'src/login',
1427 'src/udev',
1428 'src/libudev',
1429 'src/core',
1430 'src/libsystemd/sd-bus',
1431 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001432 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001433 'src/libsystemd/sd-hwdb',
1434 'src/libsystemd/sd-id128',
1435 'src/libsystemd/sd-netlink',
1436 'src/libsystemd/sd-network',
1437 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001438 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001439
1440add_project_arguments('-include', 'config.h', language : 'c')
1441
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001442generate_gperfs = find_program('tools/generate-gperfs.py')
1443
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001444subdir('po')
1445subdir('catalog')
1446subdir('src/systemd')
1447subdir('src/basic')
1448subdir('src/libsystemd')
1449subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001450subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001451subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001452
1453libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001454 'journal-core',
1455 libjournal_core_sources,
1456 journald_gperf_c,
1457 include_directories : includes,
1458 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001460libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001461libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001462 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001463 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001464 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001465 include_directories : includes,
1466 link_args : ['-shared',
1467 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001468 link_with : [libbasic,
1469 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001470 link_whole : [libsystemd_static,
1471 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001472 dependencies : [threads,
1473 librt,
1474 libxz,
1475 liblz4],
1476 link_depends : libsystemd_sym,
1477 install : true,
1478 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001479
Davide Cavalca70848ec2018-04-09 02:43:35 -07001480static_libsystemd = get_option('static-libsystemd')
1481static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1482
1483install_libsystemd_static = static_library(
1484 'systemd',
1485 libsystemd_sources,
1486 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001487 basic_sources,
1488 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001489 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001490 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001491 build_by_default : static_libsystemd != 'false',
1492 install : static_libsystemd != 'false',
1493 install_dir : rootlibdir,
1494 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1495 dependencies : [threads,
1496 librt,
1497 libxz,
1498 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001499 libcap,
1500 libblkid,
1501 libmount,
1502 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001503 libgcrypt],
1504 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1505
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001506############################################################
1507
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001508# binaries that have --help and are intended for use by humans,
1509# usually, but not always, installed in /bin.
1510public_programs = []
1511
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001512subdir('src/libudev')
1513subdir('src/shared')
1514subdir('src/core')
1515subdir('src/udev')
1516subdir('src/network')
1517
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001518subdir('src/analyze')
1519subdir('src/journal-remote')
1520subdir('src/coredump')
1521subdir('src/hostname')
1522subdir('src/import')
1523subdir('src/kernel-install')
1524subdir('src/locale')
1525subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001526subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001527subdir('src/nspawn')
1528subdir('src/resolve')
1529subdir('src/timedate')
1530subdir('src/timesync')
1531subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001532subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001533
1534subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001535subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001536subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001537subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001538
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001539############################################################
1540
1541# only static linking apart from libdl, to make sure that the
1542# module is linked to all libraries that it uses.
1543test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001544 'test-dlopen',
1545 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001546 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001547 include_directories : includes,
1548 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001549 dependencies : [libdl],
1550 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001551
Yu Watanabe08540a92018-07-18 09:25:57 +09001552foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001553 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001554 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1555 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001556
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001557 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001558 if condition
1559 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001560
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001561 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001562 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001563
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001564 nss = shared_library(
1565 'nss_' + module,
1566 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001567 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001568 version : '2',
1569 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001570 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1571 link_args : ['-Wl,-z,nodelete',
1572 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001573 '-Wl,--version-script=' + version_script_arg,
1574 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001575 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001576 libbasic],
1577 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001578 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001579 link_depends : sym,
1580 install : true,
1581 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001582
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001583 # We cannot use shared_module because it does not support version suffix.
1584 # Unfortunately shared_library insists on creating the symlink…
1585 meson.add_install_script('sh', '-c',
1586 'rm $DESTDIR@0@/libnss_@1@.so'
1587 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001588
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001589 if want_tests != 'false'
1590 test('dlopen-nss_' + module,
1591 test_dlopen,
1592 # path to dlopen must include a slash
1593 args : nss.full_path())
1594 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001595 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001596endforeach
1597
1598############################################################
1599
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001600executable('systemd',
1601 systemd_sources,
1602 include_directories : includes,
1603 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001604 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001605 dependencies : [threads,
1606 librt,
1607 libseccomp,
1608 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001609 libmount,
1610 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001611 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001612 install : true,
1613 install_dir : rootlibexecdir)
1614
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001615meson.add_install_script(meson_make_symlink,
1616 join_paths(rootlibexecdir, 'systemd'),
1617 join_paths(rootsbindir, 'init'))
1618
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001619exe = executable('systemd-analyze',
1620 systemd_analyze_sources,
1621 include_directories : includes,
1622 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001623 libshared],
1624 dependencies : [threads,
1625 librt,
1626 libseccomp,
1627 libselinux,
1628 libmount,
1629 libblkid],
1630 install_rpath : rootlibexecdir,
1631 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001632public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
1634executable('systemd-journald',
1635 systemd_journald_sources,
1636 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001637 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001638 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001639 dependencies : [threads,
1640 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001641 liblz4,
1642 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001643 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001644 install : true,
1645 install_dir : rootlibexecdir)
1646
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001647exe = executable('systemd-cat',
1648 systemd_cat_sources,
1649 include_directories : includes,
1650 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001651 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001652 dependencies : [threads],
1653 install_rpath : rootlibexecdir,
1654 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001655public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001656
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001657exe = executable('journalctl',
1658 journalctl_sources,
1659 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001660 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001661 dependencies : [threads,
1662 libqrencode,
1663 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001664 liblz4,
1665 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001666 install_rpath : rootlibexecdir,
1667 install : true,
1668 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001669public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001670
1671executable('systemd-getty-generator',
1672 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001674 link_with : [libshared],
1675 install_rpath : rootlibexecdir,
1676 install : true,
1677 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001678
1679executable('systemd-debug-generator',
1680 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001681 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001682 link_with : [libshared],
1683 install_rpath : rootlibexecdir,
1684 install : true,
1685 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001686
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001687executable('systemd-run-generator',
1688 'src/run-generator/run-generator.c',
1689 include_directories : includes,
1690 link_with : [libshared],
1691 install_rpath : rootlibexecdir,
1692 install : true,
1693 install_dir : systemgeneratordir)
1694
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001695executable('systemd-fstab-generator',
1696 'src/fstab-generator/fstab-generator.c',
1697 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001698 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001699 link_with : [libshared],
1700 install_rpath : rootlibexecdir,
1701 install : true,
1702 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001703
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001704if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('30-systemd-environment-d-generator',
1706 'src/environment-d-generator/environment-d-generator.c',
1707 include_directories : includes,
1708 link_with : [libshared],
1709 install_rpath : rootlibexecdir,
1710 install : true,
1711 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001712
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 meson.add_install_script(meson_make_symlink,
1714 join_paths(sysconfdir, 'environment'),
1715 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001716endif
1717
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001718if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001719 executable('systemd-hibernate-resume-generator',
1720 'src/hibernate-resume/hibernate-resume-generator.c',
1721 include_directories : includes,
1722 link_with : [libshared],
1723 install_rpath : rootlibexecdir,
1724 install : true,
1725 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001726
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001727 executable('systemd-hibernate-resume',
1728 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001729 include_directories : includes,
1730 link_with : [libshared],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001734endif
1735
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001736if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001737 executable('systemd-gpt-auto-generator',
1738 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001739 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001741 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001742 dependencies : libblkid,
1743 install_rpath : rootlibexecdir,
1744 install : true,
1745 install_dir : systemgeneratordir)
1746
1747 exe = executable('systemd-dissect',
1748 'src/dissect/dissect.c',
1749 include_directories : includes,
1750 link_with : [libshared],
1751 install_rpath : rootlibexecdir,
1752 install : true,
1753 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001754 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001755endif
1756
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001757if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001758 executable('systemd-resolved',
1759 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001760 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001761 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001762 libbasic_gcrypt,
1763 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001764 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001765 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001766 install : true,
1767 install_dir : rootlibexecdir)
1768
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001769 exe = executable('resolvectl',
1770 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001771 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001772 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001773 libbasic_gcrypt,
1774 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001775 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001776 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001777 libm,
1778 libidn],
1779 install_rpath : rootlibexecdir,
1780 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001781 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001782
1783 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001784 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001785 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001786
1787 meson.add_install_script(meson_make_symlink,
1788 join_paths(bindir, 'resolvectl'),
1789 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001790endif
1791
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001792if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001793 executable('systemd-logind',
1794 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001795 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001797 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001798 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001800 install_rpath : rootlibexecdir,
1801 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001802 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001803
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001804 exe = executable('loginctl',
1805 loginctl_sources,
1806 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001807 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 dependencies : [threads,
1809 liblz4,
1810 libxz],
1811 install_rpath : rootlibexecdir,
1812 install : true,
1813 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001814 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001816 exe = executable('systemd-inhibit',
1817 'src/login/inhibit.c',
1818 include_directories : includes,
1819 link_with : [libshared],
1820 install_rpath : rootlibexecdir,
1821 install : true,
1822 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001823 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001824
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001825 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001826 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001827 pam_systemd = shared_library(
1828 'pam_systemd',
1829 pam_systemd_c,
1830 name_prefix : '',
1831 include_directories : includes,
1832 link_args : ['-shared',
1833 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001834 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001835 libshared_static],
1836 dependencies : [threads,
1837 libpam,
1838 libpam_misc],
1839 link_depends : pam_systemd_sym,
1840 install : true,
1841 install_dir : pamlibdir)
1842
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001843 if want_tests != 'false'
1844 test('dlopen-pam_systemd',
1845 test_dlopen,
1846 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001847 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001848 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001849 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001850
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001851 executable('systemd-user-runtime-dir',
1852 user_runtime_dir_sources,
1853 include_directories : includes,
1854 link_with : [libshared],
1855 install_rpath : rootlibexecdir,
1856 install : true,
1857 install_dir : rootlibexecdir)
1858endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001859
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001860if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 executable('systemd-user-sessions',
1862 'src/user-sessions/user-sessions.c',
1863 include_directories : includes,
1864 link_with : [libshared],
1865 install_rpath : rootlibexecdir,
1866 install : true,
1867 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001868endif
1869
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001870if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001871 exe = executable('bootctl',
1872 'src/boot/bootctl.c',
1873 include_directories : includes,
1874 link_with : [libshared],
1875 dependencies : [libblkid],
1876 install_rpath : rootlibexecdir,
1877 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001878 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001879
1880 executable('systemd-bless-boot',
1881 'src/boot/bless-boot.c',
1882 include_directories : includes,
1883 link_with : [libshared],
1884 dependencies : [libblkid],
1885 install_rpath : rootlibexecdir,
1886 install : true,
1887 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001888
1889 executable('systemd-bless-boot-generator',
1890 'src/boot/bless-boot-generator.c',
1891 include_directories : includes,
1892 link_with : [libshared],
1893 install_rpath : rootlibexecdir,
1894 install : true,
1895 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001896endif
1897
Lennart Poetteringf876f532018-06-25 16:07:33 +02001898executable('systemd-boot-check-no-failures',
1899 'src/boot/boot-check-no-failures.c',
1900 include_directories : includes,
1901 link_with : [libshared],
1902 dependencies : [libblkid],
1903 install_rpath : rootlibexecdir,
1904 install : true,
1905 install_dir : rootlibexecdir)
1906
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001907exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1908 include_directories : includes,
1909 link_with : [libshared],
1910 dependencies : [threads],
1911 install_rpath : rootlibexecdir,
1912 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001913public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001914
Felipe Satelerf3794362018-05-22 15:08:57 -04001915
1916if get_option('link-systemctl-shared')
1917 systemctl_link_with = [libshared]
1918else
1919 systemctl_link_with = [libsystemd_static,
1920 libshared_static,
1921 libjournal_client,
1922 libbasic_gcrypt]
1923endif
1924
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001925exe = executable('systemctl', 'src/systemctl/systemctl.c',
1926 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001927 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001928 dependencies : [threads,
1929 libcap,
1930 libselinux,
1931 libxz,
1932 liblz4],
1933 install_rpath : rootlibexecdir,
1934 install : true,
1935 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001936public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001937
Lennart Poettering61d05782018-04-16 21:41:40 +02001938if conf.get('ENABLE_PORTABLED') == 1
1939 executable('systemd-portabled',
1940 systemd_portabled_sources,
1941 include_directories : includes,
1942 link_with : [libshared],
1943 dependencies : [threads],
1944 install_rpath : rootlibexecdir,
1945 install : true,
1946 install_dir : rootlibexecdir)
1947
1948 exe = executable('portablectl', 'src/portable/portablectl.c',
1949 include_directories : includes,
1950 link_with : [libshared],
1951 dependencies : [threads],
1952 install_rpath : rootlibexecdir,
1953 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001954 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001955 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001956endif
1957
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001958foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1959 meson.add_install_script(meson_make_symlink,
1960 join_paths(rootbindir, 'systemctl'),
1961 join_paths(rootsbindir, alias))
1962endforeach
1963
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001964if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001965 executable('systemd-backlight',
1966 'src/backlight/backlight.c',
1967 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001968 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001969 install_rpath : rootlibexecdir,
1970 install : true,
1971 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001972endif
1973
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001974if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001975 executable('systemd-rfkill',
1976 'src/rfkill/rfkill.c',
1977 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001978 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982endif
1983
1984executable('systemd-system-update-generator',
1985 'src/system-update-generator/system-update-generator.c',
1986 include_directories : includes,
1987 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001988 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001989 install : true,
1990 install_dir : systemgeneratordir)
1991
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001992if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001993 executable('systemd-cryptsetup',
1994 'src/cryptsetup/cryptsetup.c',
1995 include_directories : includes,
1996 link_with : [libshared],
1997 dependencies : [libcryptsetup],
1998 install_rpath : rootlibexecdir,
1999 install : true,
2000 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002001
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002002 executable('systemd-cryptsetup-generator',
2003 'src/cryptsetup/cryptsetup-generator.c',
2004 include_directories : includes,
2005 link_with : [libshared],
2006 dependencies : [libcryptsetup],
2007 install_rpath : rootlibexecdir,
2008 install : true,
2009 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002010
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002011 executable('systemd-veritysetup',
2012 'src/veritysetup/veritysetup.c',
2013 include_directories : includes,
2014 link_with : [libshared],
2015 dependencies : [libcryptsetup],
2016 install_rpath : rootlibexecdir,
2017 install : true,
2018 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002019
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002020 executable('systemd-veritysetup-generator',
2021 'src/veritysetup/veritysetup-generator.c',
2022 include_directories : includes,
2023 link_with : [libshared],
2024 dependencies : [libcryptsetup],
2025 install_rpath : rootlibexecdir,
2026 install : true,
2027 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002028endif
2029
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002030if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002031 executable('systemd-sysv-generator',
2032 'src/sysv-generator/sysv-generator.c',
2033 include_directories : includes,
2034 link_with : [libshared],
2035 install_rpath : rootlibexecdir,
2036 install : true,
2037 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002038
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002039 executable('systemd-rc-local-generator',
2040 'src/rc-local-generator/rc-local-generator.c',
2041 include_directories : includes,
2042 link_with : [libshared],
2043 install_rpath : rootlibexecdir,
2044 install : true,
2045 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002046endif
2047
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002048if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002049 executable('systemd-hostnamed',
2050 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002051 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002052 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002053 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002054 install : true,
2055 install_dir : rootlibexecdir)
2056
2057 exe = executable('hostnamectl',
2058 'src/hostname/hostnamectl.c',
2059 include_directories : includes,
2060 link_with : [libshared],
2061 install_rpath : rootlibexecdir,
2062 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002063 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002064endif
2065
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002066if conf.get('ENABLE_LOCALED') == 1
2067 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002068 # logind will load libxkbcommon.so dynamically on its own
2069 deps = [libdl]
2070 else
2071 deps = []
2072 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002073
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002074 executable('systemd-localed',
2075 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002076 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002077 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002078 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002079 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002080 install : true,
2081 install_dir : rootlibexecdir)
2082
2083 exe = executable('localectl',
2084 localectl_sources,
2085 include_directories : includes,
2086 link_with : [libshared],
2087 install_rpath : rootlibexecdir,
2088 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002089 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002090endif
2091
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002092if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002093 executable('systemd-timedated',
2094 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002095 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002096 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002097 install_rpath : rootlibexecdir,
2098 install : true,
2099 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002100endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002101
Yu Watanabe6129ec82018-05-03 18:07:43 +09002102if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002103 exe = executable('timedatectl',
2104 'src/timedate/timedatectl.c',
2105 include_directories : includes,
2106 install_rpath : rootlibexecdir,
2107 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002108 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002109 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002110 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002111endif
2112
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002113if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002114 executable('systemd-timesyncd',
2115 systemd_timesyncd_sources,
2116 include_directories : includes,
2117 link_with : [libshared],
2118 dependencies : [threads,
2119 libm],
2120 install_rpath : rootlibexecdir,
2121 install : true,
2122 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002123
2124 executable('systemd-time-wait-sync',
2125 'src/time-wait-sync/time-wait-sync.c',
2126 include_directories : includes,
2127 link_with : [libshared],
2128 install_rpath : rootlibexecdir,
2129 install : true,
2130 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002131endif
2132
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002133if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002134 executable('systemd-machined',
2135 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002136 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002137 link_with : [libmachine_core,
2138 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002139 install_rpath : rootlibexecdir,
2140 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002141 install_dir : rootlibexecdir)
2142
2143 exe = executable('machinectl',
2144 'src/machine/machinectl.c',
2145 include_directories : includes,
2146 link_with : [libshared],
2147 dependencies : [threads,
2148 libxz,
2149 liblz4],
2150 install_rpath : rootlibexecdir,
2151 install : true,
2152 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002153 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002154endif
2155
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002156if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002157 executable('systemd-importd',
2158 systemd_importd_sources,
2159 include_directories : includes,
2160 link_with : [libshared],
2161 dependencies : [threads],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002165
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002166 systemd_pull = executable('systemd-pull',
2167 systemd_pull_sources,
2168 include_directories : includes,
2169 link_with : [libshared],
2170 dependencies : [libcurl,
2171 libz,
2172 libbzip2,
2173 libxz,
2174 libgcrypt],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002179 systemd_import = executable('systemd-import',
2180 systemd_import_sources,
2181 include_directories : includes,
2182 link_with : [libshared],
2183 dependencies : [libcurl,
2184 libz,
2185 libbzip2,
2186 libxz],
2187 install_rpath : rootlibexecdir,
2188 install : true,
2189 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002190
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002191 systemd_import_fs = executable('systemd-import-fs',
2192 systemd_import_fs_sources,
2193 include_directories : includes,
2194 link_with : [libshared],
2195 install_rpath : rootlibexecdir,
2196 install : true,
2197 install_dir : rootlibexecdir)
2198
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 systemd_export = executable('systemd-export',
2200 systemd_export_sources,
2201 include_directories : includes,
2202 link_with : [libshared],
2203 dependencies : [libcurl,
2204 libz,
2205 libbzip2,
2206 libxz],
2207 install_rpath : rootlibexecdir,
2208 install : true,
2209 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002210
2211 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002212endif
2213
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002214if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002215 exe = executable('systemd-journal-upload',
2216 systemd_journal_upload_sources,
2217 include_directories : includes,
2218 link_with : [libshared],
2219 dependencies : [threads,
2220 libcurl,
2221 libgnutls,
2222 libxz,
2223 liblz4],
2224 install_rpath : rootlibexecdir,
2225 install : true,
2226 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002227 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002228endif
2229
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002230if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002231 s_j_remote = executable('systemd-journal-remote',
2232 systemd_journal_remote_sources,
2233 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002234 link_with : [libshared,
2235 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002236 dependencies : [threads,
2237 libmicrohttpd,
2238 libgnutls,
2239 libxz,
2240 liblz4],
2241 install_rpath : rootlibexecdir,
2242 install : true,
2243 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002244
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002245 s_j_gatewayd = executable('systemd-journal-gatewayd',
2246 systemd_journal_gatewayd_sources,
2247 include_directories : includes,
2248 link_with : [libshared],
2249 dependencies : [threads,
2250 libmicrohttpd,
2251 libgnutls,
2252 libxz,
2253 liblz4],
2254 install_rpath : rootlibexecdir,
2255 install : true,
2256 install_dir : rootlibexecdir)
2257 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258endif
2259
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002260if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 executable('systemd-coredump',
2262 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002263 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002264 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002265 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002266 libacl,
2267 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002268 libxz,
2269 liblz4],
2270 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002271 install : true,
2272 install_dir : rootlibexecdir)
2273
2274 exe = executable('coredumpctl',
2275 coredumpctl_sources,
2276 include_directories : includes,
2277 link_with : [libshared],
2278 dependencies : [threads,
2279 libxz,
2280 liblz4],
2281 install_rpath : rootlibexecdir,
2282 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002283 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002284endif
2285
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002286if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 exe = executable('systemd-binfmt',
2288 'src/binfmt/binfmt.c',
2289 include_directories : includes,
2290 link_with : [libshared],
2291 install_rpath : rootlibexecdir,
2292 install : true,
2293 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002294 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002295
2296 meson.add_install_script('sh', '-c',
2297 mkdir_p.format(binfmtdir))
2298 meson.add_install_script('sh', '-c',
2299 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2300endif
2301
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002302if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002303 executable('systemd-vconsole-setup',
2304 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002305 include_directories : includes,
2306 link_with : [libshared],
2307 install_rpath : rootlibexecdir,
2308 install : true,
2309 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002310endif
2311
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002312if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 executable('systemd-random-seed',
2314 'src/random-seed/random-seed.c',
2315 include_directories : includes,
2316 link_with : [libshared],
2317 install_rpath : rootlibexecdir,
2318 install : true,
2319 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002320endif
2321
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002322if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002323 executable('systemd-firstboot',
2324 'src/firstboot/firstboot.c',
2325 include_directories : includes,
2326 link_with : [libshared],
2327 dependencies : [libcrypt],
2328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002331endif
2332
2333executable('systemd-remount-fs',
2334 'src/remount-fs/remount-fs.c',
2335 'src/core/mount-setup.c',
2336 'src/core/mount-setup.h',
2337 include_directories : includes,
2338 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002339 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002340 install : true,
2341 install_dir : rootlibexecdir)
2342
2343executable('systemd-machine-id-setup',
2344 'src/machine-id-setup/machine-id-setup-main.c',
2345 'src/core/machine-id-setup.c',
2346 'src/core/machine-id-setup.h',
2347 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002348 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002349 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002350 install : true,
2351 install_dir : rootbindir)
2352
2353executable('systemd-fsck',
2354 'src/fsck/fsck.c',
2355 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002356 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002357 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002358 install : true,
2359 install_dir : rootlibexecdir)
2360
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002361executable('systemd-growfs',
2362 'src/partition/growfs.c',
2363 include_directories : includes,
2364 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002365 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002366 install_rpath : rootlibexecdir,
2367 install : true,
2368 install_dir : rootlibexecdir)
2369
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002370executable('systemd-makefs',
2371 'src/partition/makefs.c',
2372 include_directories : includes,
2373 link_with : [libshared],
2374 install_rpath : rootlibexecdir,
2375 install : true,
2376 install_dir : rootlibexecdir)
2377
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378executable('systemd-sleep',
2379 'src/sleep/sleep.c',
2380 include_directories : includes,
2381 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002382 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002383 install : true,
2384 install_dir : rootlibexecdir)
2385
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002386exe = executable('systemd-sysctl',
2387 'src/sysctl/sysctl.c',
2388 include_directories : includes,
2389 link_with : [libshared],
2390 install_rpath : rootlibexecdir,
2391 install : true,
2392 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002393public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002394
2395executable('systemd-ac-power',
2396 'src/ac-power/ac-power.c',
2397 include_directories : includes,
2398 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002399 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002400 install : true,
2401 install_dir : rootlibexecdir)
2402
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403exe = executable('systemd-detect-virt',
2404 'src/detect-virt/detect-virt.c',
2405 include_directories : includes,
2406 link_with : [libshared],
2407 install_rpath : rootlibexecdir,
2408 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002409public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002410
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411exe = executable('systemd-delta',
2412 'src/delta/delta.c',
2413 include_directories : includes,
2414 link_with : [libshared],
2415 install_rpath : rootlibexecdir,
2416 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002417public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002418
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002419exe = executable('systemd-escape',
2420 'src/escape/escape.c',
2421 include_directories : includes,
2422 link_with : [libshared],
2423 install_rpath : rootlibexecdir,
2424 install : true,
2425 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002426public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002427
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428exe = executable('systemd-notify',
2429 'src/notify/notify.c',
2430 include_directories : includes,
2431 link_with : [libshared],
2432 install_rpath : rootlibexecdir,
2433 install : true,
2434 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002435public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002436
2437executable('systemd-volatile-root',
2438 'src/volatile-root/volatile-root.c',
2439 include_directories : includes,
2440 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002441 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002442 install : true,
2443 install_dir : rootlibexecdir)
2444
2445executable('systemd-cgroups-agent',
2446 'src/cgroups-agent/cgroups-agent.c',
2447 include_directories : includes,
2448 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002449 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002450 install : true,
2451 install_dir : rootlibexecdir)
2452
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002453exe = executable('systemd-id128',
2454 'src/id128/id128.c',
2455 include_directories : includes,
2456 link_with : [libshared],
2457 install_rpath : rootlibexecdir,
2458 install : true)
2459public_programs += exe
2460
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461exe = executable('systemd-path',
2462 'src/path/path.c',
2463 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002464 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002465 install_rpath : rootlibexecdir,
2466 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002467public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002468
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469exe = executable('systemd-ask-password',
2470 'src/ask-password/ask-password.c',
2471 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002472 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002473 install_rpath : rootlibexecdir,
2474 install : true,
2475 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002476public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002477
2478executable('systemd-reply-password',
2479 'src/reply-password/reply-password.c',
2480 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002481 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002482 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483 install : true,
2484 install_dir : rootlibexecdir)
2485
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002486exe = executable('systemd-tty-ask-password-agent',
2487 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2488 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002489 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002490 install_rpath : rootlibexecdir,
2491 install : true,
2492 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002493public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002494
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002495exe = executable('systemd-cgls',
2496 'src/cgls/cgls.c',
2497 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002498 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002499 install_rpath : rootlibexecdir,
2500 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002501public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002502
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002503exe = executable('systemd-cgtop',
2504 'src/cgtop/cgtop.c',
2505 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002506 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002507 install_rpath : rootlibexecdir,
2508 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002509public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002510
2511executable('systemd-initctl',
2512 'src/initctl/initctl.c',
2513 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002514 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002515 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002516 install : true,
2517 install_dir : rootlibexecdir)
2518
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002519exe = executable('systemd-mount',
2520 'src/mount/mount-tool.c',
2521 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002522 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002523 install_rpath : rootlibexecdir,
2524 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002525public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002526
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002527meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002528 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002529
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002530exe = executable('systemd-run',
2531 'src/run/run.c',
2532 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002533 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002534 install_rpath : rootlibexecdir,
2535 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002536public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002537
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002538exe = executable('systemd-stdio-bridge',
2539 'src/stdio-bridge/stdio-bridge.c',
2540 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002541 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 install_rpath : rootlibexecdir,
2543 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002544public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002545
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546exe = executable('busctl',
2547 'src/busctl/busctl.c',
2548 'src/busctl/busctl-introspect.c',
2549 'src/busctl/busctl-introspect.h',
2550 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002551 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002552 install_rpath : rootlibexecdir,
2553 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002554public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002555
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002556if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002557 exe = executable('systemd-sysusers',
2558 'src/sysusers/sysusers.c',
2559 include_directories : includes,
2560 link_with : [libshared],
2561 install_rpath : rootlibexecdir,
2562 install : true,
2563 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002564 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002565endif
2566
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002567if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002568 exe = executable('systemd-tmpfiles',
2569 'src/tmpfiles/tmpfiles.c',
2570 include_directories : includes,
2571 link_with : [libshared],
2572 dependencies : [libacl],
2573 install_rpath : rootlibexecdir,
2574 install : true,
2575 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002576 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002577
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002578 if want_tests != 'false'
2579 test('test-systemd-tmpfiles',
2580 test_systemd_tmpfiles_py,
2581 # https://github.com/mesonbuild/meson/issues/2681
2582 args : exe.full_path())
2583 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002584endif
2585
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002586if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002587 exe = executable('systemd-hwdb',
2588 'src/hwdb/hwdb.c',
2589 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2590 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002591 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002592 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002593 install : true,
2594 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002595 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002596endif
2597
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002598if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002599 executable('systemd-quotacheck',
2600 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002601 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002602 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002603 install_rpath : rootlibexecdir,
2604 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002605 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002606endif
2607
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002608exe = executable('systemd-socket-proxyd',
2609 'src/socket-proxy/socket-proxyd.c',
2610 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002611 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002612 dependencies : [threads],
2613 install_rpath : rootlibexecdir,
2614 install : true,
2615 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002617
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002618exe = executable('systemd-udevd',
2619 systemd_udevd_sources,
2620 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002621 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002622 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002623 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002624 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002625 dependencies : [threads,
2626 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002627 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002628 libacl,
2629 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002630 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002631 install : true,
2632 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002633public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002634
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002635exe = executable('udevadm',
2636 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002637 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002638 include_directories : includes,
2639 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002640 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002641 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002642 dependencies : [threads,
2643 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002644 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002645 libacl,
2646 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002647 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002648 install : true,
2649 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002650public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002651
2652executable('systemd-shutdown',
2653 systemd_shutdown_sources,
2654 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002655 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002656 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002657 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002658 install : true,
2659 install_dir : rootlibexecdir)
2660
2661executable('systemd-update-done',
2662 'src/update-done/update-done.c',
2663 include_directories : includes,
2664 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002665 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002666 install : true,
2667 install_dir : rootlibexecdir)
2668
2669executable('systemd-update-utmp',
2670 'src/update-utmp/update-utmp.c',
2671 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002672 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002673 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002674 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002675 install : true,
2676 install_dir : rootlibexecdir)
2677
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002678if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002679 executable('systemd-modules-load',
2680 'src/modules-load/modules-load.c',
2681 include_directories : includes,
2682 link_with : [libshared],
2683 dependencies : [libkmod],
2684 install_rpath : rootlibexecdir,
2685 install : true,
2686 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002687
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002688 meson.add_install_script('sh', '-c',
2689 mkdir_p.format(modulesloaddir))
2690 meson.add_install_script('sh', '-c',
2691 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002692endif
2693
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002694exe = executable('systemd-nspawn',
2695 systemd_nspawn_sources,
2696 'src/core/mount-setup.c', # FIXME: use a variable?
2697 'src/core/mount-setup.h',
2698 'src/core/loopback-setup.c',
2699 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002700 include_directories : includes,
2701 link_with : [libnspawn_core,
2702 libshared],
2703 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002704 install_rpath : rootlibexecdir,
2705 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002706public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002707
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002708if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002709 executable('systemd-networkd',
2710 systemd_networkd_sources,
2711 include_directories : includes,
2712 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002713 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002714 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002716 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002717 install_rpath : rootlibexecdir,
2718 install : true,
2719 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002720
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002721 executable('systemd-networkd-wait-online',
2722 systemd_networkd_wait_online_sources,
2723 include_directories : includes,
2724 link_with : [libnetworkd_core,
2725 libshared],
2726 install_rpath : rootlibexecdir,
2727 install : true,
2728 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002729
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002730 exe = executable('networkctl',
2731 networkctl_sources,
2732 include_directories : includes,
2733 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002734 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002735 install_rpath : rootlibexecdir,
2736 install : true,
2737 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002738 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002739endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002740
2741executable('systemd-sulogin-shell',
2742 ['src/sulogin-shell/sulogin-shell.c'],
2743 include_directories : includes,
2744 link_with : [libshared],
2745 install_rpath : rootlibexecdir,
2746 install : true,
2747 install_dir : rootlibexecdir)
2748
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002749############################################################
2750
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002751custom_target(
2752 'systemd-runtest.env',
2753 output : 'systemd-runtest.env',
2754 command : ['sh', '-c', '{ ' +
2755 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002756 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002757 '} >@OUTPUT@'],
2758 build_by_default : true)
2759
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002760foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002761 sources = tuple[0]
2762 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2763 dependencies = tuple[2]
2764 condition = tuple.length() >= 4 ? tuple[3] : ''
2765 type = tuple.length() >= 5 ? tuple[4] : ''
2766 defs = tuple.length() >= 6 ? tuple[5] : []
2767 incs = tuple.length() >= 7 ? tuple[6] : includes
2768 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002769
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002770 name = sources[0].split('/')[-1].split('.')[0]
2771 if type.startswith('timeout=')
2772 timeout = type.split('=')[1].to_int()
2773 type = ''
2774 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002775
2776 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002777 exe = executable(
2778 name,
2779 sources,
2780 include_directories : incs,
2781 link_with : link_with,
2782 dependencies : dependencies,
2783 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002784 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002785 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002786 install : install_tests,
2787 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002788
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002789 if type == 'manual'
2790 message('@0@ is a manual test'.format(name))
2791 elif type == 'unsafe' and want_tests != 'unsafe'
2792 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002793 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002794 test(name, exe,
2795 env : test_env,
2796 timeout : timeout)
2797 endif
2798 else
2799 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2800 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002801endforeach
2802
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002803exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002804 'test-libsystemd-sym',
2805 test_libsystemd_sym_c,
2806 include_directories : includes,
2807 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002808 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002809 install : install_tests,
2810 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002811if want_tests != 'false'
2812 test('test-libsystemd-sym', exe)
2813endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002814
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002815exe = executable(
2816 'test-libsystemd-static-sym',
2817 test_libsystemd_sym_c,
2818 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002819 link_with : [install_libsystemd_static],
2820 dependencies : [threads], # threads is already included in dependencies on the library,
2821 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002822 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002823 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002824 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002825if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002826 test('test-libsystemd-static-sym', exe)
2827endif
2828
2829exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002830 'test-libudev-sym',
2831 test_libudev_sym_c,
2832 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002833 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002834 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002835 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002836 install : install_tests,
2837 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002838if want_tests != 'false'
2839 test('test-libudev-sym', exe)
2840endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002841
2842exe = executable(
2843 'test-libudev-static-sym',
2844 test_libudev_sym_c,
2845 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002846 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002847 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002848 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002849 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002850 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002851if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002852 test('test-libudev-static-sym', exe)
2853endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002854
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002855############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002856
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002857fuzzer_exes = []
2858
Michael Olbrich59967402018-11-11 11:27:35 +01002859if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002860foreach tuple : fuzzers
2861 sources = tuple[0]
2862 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2863 dependencies = tuple[2]
2864 defs = tuple.length() >= 4 ? tuple[3] : []
2865 incs = tuple.length() >= 5 ? tuple[4] : includes
2866
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002867 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002868 dependencies += fuzzing_engine
2869 else
2870 sources += 'src/fuzz/fuzz-main.c'
2871 endif
2872
2873 name = sources[0].split('/')[-1].split('.')[0]
2874
2875 fuzzer_exes += executable(
2876 name,
2877 sources,
2878 include_directories : [incs, include_directories('src/fuzz')],
2879 link_with : link_with,
2880 dependencies : dependencies,
2881 c_args : defs,
2882 install : false)
2883endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002884endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002885
2886run_target('fuzzers',
2887 depends : fuzzer_exes,
2888 command : ['true'])
2889
2890############################################################
2891
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002892make_directive_index_py = find_program('tools/make-directive-index.py')
2893make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002894xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002895hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002896
2897subdir('units')
2898subdir('sysctl.d')
2899subdir('sysusers.d')
2900subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002901subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002902subdir('hwdb')
2903subdir('network')
2904subdir('man')
2905subdir('shell-completion/bash')
2906subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002907subdir('docs/sysvinit')
2908subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910install_subdir('factory/etc',
2911 install_dir : factorydir)
2912
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002913install_data('xorg/50-systemd-user.sh',
2914 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002915install_data('modprobe.d/systemd.conf',
2916 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002917install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002918 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002919 'NEWS',
2920 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302921 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002922 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002923 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302924 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002925 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002926 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002927 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002928 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2929 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002930
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002931meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2932meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2933
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002934############################################################
2935
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002936meson_check_help = find_program('tools/meson-check-help.sh')
2937
2938foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002939 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002940 if want_tests != 'false'
2941 test('check-help-' + name,
2942 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002943 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002944 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002945endforeach
2946
2947############################################################
2948
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002949# Enable tests for all supported sanitizers
2950foreach tuple : sanitizers
2951 sanitizer = tuple[0]
2952 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002953
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002954 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002955 prev = ''
2956 foreach p : fuzz_regression_tests
2957 b = p.split('/')[-2]
2958 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002959
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002960 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002961
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002962 if name != prev
2963 if want_tests == 'false'
2964 message('Not compiling @0@ because tests is set to false'.format(name))
2965 elif slow_tests
2966 exe = custom_target(
2967 name,
2968 output : name,
2969 depends : build,
2970 command : [env, 'ln', '-fs',
2971 join_paths(build.full_path(), b),
2972 '@OUTPUT@'],
2973 build_by_default : true)
2974 else
2975 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2976 endif
2977 endif
2978 prev = name
2979
2980 if want_tests != 'false' and slow_tests
2981 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2982 env,
2983 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002984 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002985 endif
2986 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002987 endif
2988endforeach
2989
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002990
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002991############################################################
2992
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002993if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002994 all_files = run_command(
2995 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002996 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002997 'ls-files',
2998 ':/*.[ch]'])
2999 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003000
userwithuide85a6902017-08-09 13:41:44 +00003001 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003002 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003003 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003004 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003005 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003006 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003007 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003008endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003009
3010if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003011 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003012 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003013 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003014 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003015endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003016
3017if git.found()
3018 git_head = run_command(
3019 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003020 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003021 'rev-parse', 'HEAD']).stdout().strip()
3022 git_head_short = 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', '--short=7', 'HEAD']).stdout().strip()
3026
3027 run_target(
3028 'git-snapshot',
3029 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02003030 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003031 git_head_short),
3032 '--prefix', 'systemd-@0@/'.format(git_head),
3033 'HEAD'])
3034endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003035
3036############################################################
3037
Lennart Poettering51b13862017-12-20 12:51:14 +01003038meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3039run_target(
3040 'check-api-docs',
3041 depends : [man, libsystemd, libudev],
3042 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3043
Lennart Poettering0bc7a222018-10-02 09:53:05 +02003044run_target(
3045 'make-index-md',
3046 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
3047
Lennart Poettering51b13862017-12-20 12:51:14 +01003048############################################################
3049
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003050status = [
3051 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3052
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003053 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003054 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003055 'prefix directory: @0@'.format(prefixdir),
3056 'rootprefix directory: @0@'.format(rootprefixdir),
3057 'sysconf directory: @0@'.format(sysconfdir),
3058 'include directory: @0@'.format(includedir),
3059 'lib directory: @0@'.format(libdir),
3060 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003061 'SysV init scripts: @0@'.format(sysvinit_path),
3062 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003063 'PAM modules directory: @0@'.format(pamlibdir),
3064 'PAM configuration directory: @0@'.format(pamconfdir),
3065 'RPM macros directory: @0@'.format(rpmmacrosdir),
3066 'modprobe.d directory: @0@'.format(modprobedir),
3067 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3068 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3069 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3070 'bash completions directory: @0@'.format(bashcompletiondir),
3071 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003072 'extra start script: @0@'.format(get_option('rc-local')),
3073 'extra stop script: @0@'.format(get_option('halt-local')),
3074 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3075 get_option('debug-tty')),
3076 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003077 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003078 'maximum system UID: @0@'.format(system_uid_max),
3079 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003080 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3081 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3082 'minimum container UID base: @0@'.format(container_uid_base_min),
3083 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003084 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003085 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003086 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003087 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003088 'nobody user name: @0@'.format(nobody_user),
3089 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003090 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003091 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003092
3093 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003094 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003095 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3096 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3097
3098alt_dns_servers = '\n '.join(dns_servers.split(' '))
3099alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3100status += [
3101 'default DNS servers: @0@'.format(alt_dns_servers),
3102 'default NTP servers: @0@'.format(alt_ntp_servers)]
3103
3104alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3105 '@@0@'.format(time_epoch)).stdout().strip()
3106status += [
3107 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3108
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003109status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003110 'static libsystemd: @0@'.format(static_libsystemd),
3111 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003112
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003113# TODO:
3114# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3115# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3116# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3117
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003118if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003119 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003120
3121 if have_gnu_efi
3122 status += [
3123 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3124 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003125 'EFI lib directory: @0@'.format(efi_libdir),
3126 'EFI lds directory: @0@'.format(efi_ldsdir),
3127 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003128 endif
3129endif
3130
3131found = []
3132missing = []
3133
3134foreach tuple : [
3135 ['libcryptsetup'],
3136 ['PAM'],
3137 ['AUDIT'],
3138 ['IMA'],
3139 ['AppArmor'],
3140 ['SELinux'],
3141 ['SECCOMP'],
3142 ['SMACK'],
3143 ['zlib'],
3144 ['xz'],
3145 ['lz4'],
3146 ['bzip2'],
3147 ['ACL'],
3148 ['gcrypt'],
3149 ['qrencode'],
3150 ['microhttpd'],
3151 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003152 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003153 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003154 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003155 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003156 ['libidn'],
3157 ['libiptc'],
3158 ['elfutils'],
3159 ['binfmt'],
3160 ['vconsole'],
3161 ['quotacheck'],
3162 ['tmpfiles'],
3163 ['environment.d'],
3164 ['sysusers'],
3165 ['firstboot'],
3166 ['randomseed'],
3167 ['backlight'],
3168 ['rfkill'],
3169 ['logind'],
3170 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003171 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 ['importd'],
3173 ['hostnamed'],
3174 ['timedated'],
3175 ['timesyncd'],
3176 ['localed'],
3177 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003178 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003179 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3180 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003181 ['coredump'],
3182 ['polkit'],
3183 ['legacy pkla', install_polkit_pkla],
3184 ['efi'],
3185 ['gnu-efi', have_gnu_efi],
3186 ['kmod'],
3187 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003188 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003189 ['blkid'],
3190 ['dbus'],
3191 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003192 ['nss-myhostname'],
3193 ['nss-mymachines'],
3194 ['nss-resolve'],
3195 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003196 ['hwdb'],
3197 ['tpm'],
3198 ['man pages', want_man],
3199 ['html pages', want_html],
3200 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003201 ['SysV compat'],
3202 ['utmp'],
3203 ['ldconfig'],
3204 ['hibernate'],
3205 ['adm group', get_option('adm-group')],
3206 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003207 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003208 ['debug hashmap'],
3209 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003210 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003211 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003212 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003213 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003214 ['link-udev-shared', get_option('link-udev-shared')],
3215 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003216]
3217
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003218 if tuple.length() >= 2
3219 cond = tuple[1]
3220 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003221 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3222 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003223 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003224 endif
3225 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003226 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003227 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003228 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003229 endif
3230endforeach
3231
3232status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003233 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003234 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003235 '',
3236 'disabled features: @0@'.format(', '.join(missing)),
3237 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003238message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003239
3240if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003241 warning('\n' +
3242 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3243 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3244 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003245endif