blob: 2c8935c8333a4318b410dea6603dd42ac69a6917 [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'))
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +020078conf.set('HIGH_RLIMIT_NOFILE', 256*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'))
230conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
231conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
232conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
233conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200234conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100235conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400237substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400238substs.set('exec_prefix', prefixdir)
239substs.set('libdir', libdir)
240substs.set('rootlibdir', rootlibdir)
241substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400242substs.set('pkgsysconfdir', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400243substs.set('bindir', bindir)
244substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400245substs.set('rootlibexecdir', rootlibexecdir)
246substs.set('systemunitdir', systemunitdir)
247substs.set('userunitdir', userunitdir)
248substs.set('systempresetdir', systempresetdir)
249substs.set('userpresetdir', userpresetdir)
250substs.set('udevhwdbdir', udevhwdbdir)
251substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400252substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200253substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254substs.set('catalogdir', catalogdir)
255substs.set('tmpfilesdir', tmpfilesdir)
256substs.set('sysusersdir', sysusersdir)
257substs.set('sysctldir', sysctldir)
258substs.set('binfmtdir', binfmtdir)
259substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200260substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400261substs.set('systemgeneratordir', systemgeneratordir)
262substs.set('usergeneratordir', usergeneratordir)
263substs.set('systemenvgeneratordir', systemenvgeneratordir)
264substs.set('userenvgeneratordir', userenvgeneratordir)
265substs.set('systemshutdowndir', systemshutdowndir)
266substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400267substs.set('VARLOGDIR', varlogdir)
268substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400269substs.set('SYSTEMCTL', join_paths(rootbindir, 'systemctl'))
270substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400271substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
272substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
273substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
274substs.set('RC_LOCAL_SCRIPT_PATH_STOP', get_option('halt-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100275substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200276substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400277
278#####################################################################
279
280cc = meson.get_compiler('c')
281pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400282check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100283meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400284
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200285want_tests = get_option('tests')
286slow_tests = want_tests != 'false' and get_option('slow-tests')
287install_tests = get_option('install-tests')
288
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200289cxx = find_program('c++', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200290if cxx.found()
291 # Used only for tests
292 add_languages('cpp')
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200293 cxx_cmd = ' '.join(meson.get_compiler('cpp').cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200294else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200295 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400296endif
297
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500298if want_libfuzzer
299 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200300elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500301 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
302endif
303
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900304possible_cc_flags = [
305 '-Wextra',
306 '-Werror=undef',
307 '-Wlogical-op',
308 '-Wmissing-include-dirs',
309 '-Wold-style-definition',
310 '-Wpointer-arith',
311 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900312 '-Wfloat-equal',
313 '-Wsuggest-attribute=noreturn',
314 '-Werror=missing-prototypes',
315 '-Werror=implicit-function-declaration',
316 '-Werror=missing-declarations',
317 '-Werror=return-type',
318 '-Werror=incompatible-pointer-types',
319 '-Werror=format=2',
320 '-Wstrict-prototypes',
321 '-Wredundant-decls',
322 '-Wmissing-noreturn',
323 '-Wimplicit-fallthrough=5',
324 '-Wshadow',
325 '-Wendif-labels',
326 '-Wstrict-aliasing=2',
327 '-Wwrite-strings',
328 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200329 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200330 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900331 '-Wdate-time',
332 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700333
334 # negative arguments are correctly detected starting with meson 0.46.
335 '-Wno-unused-parameter',
336 '-Wno-missing-field-initializers',
337 '-Wno-unused-result',
338 '-Wno-format-signedness',
339
340 # work-around for gcc 7.1 turning this on on its own.
341 '-Wno-error=nonnull',
342
343 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
344 # optimizations enabled, producing essentially false positives.
345 '-Wno-maybe-uninitialized',
346
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347 '-ffast-math',
348 '-fno-common',
349 '-fdiagnostics-show-option',
350 '-fno-strict-aliasing',
351 '-fvisibility=hidden',
352 '-fstack-protector',
353 '-fstack-protector-strong',
354 '--param=ssp-buffer-size=4',
355]
356
357# --as-needed and --no-undefined are provided by meson by default,
358# run mesonconf to see what is enabled
359possible_link_flags = [
360 '-Wl,-z,relro',
361 '-Wl,-z,now',
362]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400363
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500364# the oss-fuzz fuzzers are not built with -fPIE, so don't
365# enable it when we are linking against them
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500366if not fuzzer_build
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900367 possible_cc_flags += '-fPIE'
368 possible_link_flags += '-pie'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500369endif
370
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900371if cc.get_id() == 'clang'
372 possible_cc_flags += [
373 '-Wno-typedef-redefinition',
374 '-Wno-gnu-variable-sized-type-not-at-end',
375 ]
376endif
377
378if get_option('buildtype') != 'debug'
379 possible_cc_flags += [
380 '-ffunction-sections',
381 '-fdata-sections',
382 ]
383
384 possible_link_flags += '-Wl,--gc-sections'
385endif
386
387add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900388add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900389
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800390if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400391 #include <time.h>
392 #include <inttypes.h>
393 typedef uint64_t usec_t;
394 usec_t now(clockid_t clock);
395 int main(void) {
396 struct timespec now;
397 return 0;
398 }
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800399''', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400400 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400401endif
402
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200403cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400404
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400405#####################################################################
406# compilation result tests
407
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400408conf.set('_GNU_SOURCE', true)
409conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400410
411conf.set('SIZEOF_PID_T', cc.sizeof('pid_t', prefix : '#include <sys/types.h>'))
412conf.set('SIZEOF_UID_T', cc.sizeof('uid_t', prefix : '#include <sys/types.h>'))
413conf.set('SIZEOF_GID_T', cc.sizeof('gid_t', prefix : '#include <sys/types.h>'))
414conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
415conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
416conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
417conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
418
419decl_headers = '''
420#include <uchar.h>
421#include <linux/ethtool.h>
Susant Sahanibce67bb2017-09-14 19:51:39 +0000422#include <linux/fib_rules.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100423#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400424'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400425
426foreach decl : ['char16_t',
427 'char32_t',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400428 'struct ethtool_link_settings',
Susant Sahanibce67bb2017-09-14 19:51:39 +0000429 'struct fib_rule_uid_range',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100430 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400431 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400432
433 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200434 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
435
436 if decl == 'struct statx'
437 if have
438 want_linux_stat_h = false
439 else
440 have = cc.sizeof(decl,
441 prefix : decl_headers + '#include <linux/stat.h>',
442 args : '-D_GNU_SOURCE') > 0
443 want_linux_stat_h = have
444 endif
445 endif
446
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200447 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400448endforeach
449
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200450conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700451
Yu Watanabe8a716f22018-11-17 23:42:27 +0900452foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
453 ['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
454 ['IFLA_VRF_TABLE', 'linux/if_link.h'],
455 ['IFLA_MACVLAN_FLAGS', 'linux/if_link.h'],
456 ['IFLA_IPVLAN_FLAGS', 'linux/if_link.h'],
457 ['IFLA_PHYS_PORT_ID', 'linux/if_link.h'],
458 ['IFLA_BOND_AD_ACTOR_SYSTEM', 'linux/if_link.h'],
459 ['IFLA_VLAN_PROTOCOL', 'linux/if_link.h'],
460 ['IFLA_VXLAN_REMCSUM_NOPARTIAL', 'linux/if_link.h'],
461 ['IFLA_VXLAN_GPE', 'linux/if_link.h'],
462 ['IFLA_GENEVE_LABEL', 'linux/if_link.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400463 # if_tunnel.h is buggy and cannot be included on its own
Yu Watanabe8a716f22018-11-17 23:42:27 +0900464 ['IFLA_VTI_REMOTE', 'linux/if_tunnel.h', '#include <net/if.h>'],
465 ['IFLA_IPTUN_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
466 ['IFLA_GRE_ENCAP_DPORT', 'linux/if_tunnel.h', '#include <net/if.h>'],
Susant Sahani22668642018-11-26 17:20:09 +0530467 ['IFLA_GRE_ERSPAN_HWID', 'linux/if_tunnel.h', '#include <net/if.h>'],
Yu Watanabe8a716f22018-11-17 23:42:27 +0900468 ['IFLA_BRIDGE_VLAN_INFO', 'linux/if_bridge.h'],
469 ['IFLA_BRPORT_PROXYARP', 'linux/if_link.h'],
470 ['IFLA_BRPORT_LEARNING_SYNC', 'linux/if_link.h'],
471 ['IFLA_BR_VLAN_DEFAULT_PVID', 'linux/if_link.h'],
472 ['IPVLAN_F_PRIVATE', 'linux/if_link.h'],
473 ['NDA_IFINDEX', 'linux/neighbour.h'],
474 ['IFA_FLAGS', 'linux/if_addr.h'],
475 ['FRA_UID_RANGE', 'linux/fib_rules.h'],
476 ['LO_FLAGS_PARTSCAN', 'linux/loop.h'],
477 ['VXCAN_INFO_PEER', 'linux/can/vxcan.h'],
478 ['FOU_ATTR_REMCSUM_NOPARTIAL', 'linux/fou.h'],
479 ['FOU_CMD_GET', 'linux/fou.h'],
480 ['ETHTOOL_LINK_MODE_10baseT_Half_BIT', 'linux/ethtool.h'],
481 ['ETHTOOL_LINK_MODE_25000baseCR_Full_BIT', 'linux/ethtool.h'],
482 ['ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT', 'linux/ethtool.h'],
483 ['ETHTOOL_LINK_MODE_1000baseX_Full_BIT', 'linux/ethtool.h'],
484 ['ETHTOOL_LINK_MODE_2500baseT_Full_BIT', 'linux/ethtool.h'],
485 ['ETHTOOL_LINK_MODE_FEC_NONE_BIT', 'linux/ethtool.h'],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400486 ]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400487 prefix = decl.length() > 2 ? decl[2] : ''
488 have = cc.has_header_symbol(decl[1], decl[0], prefix : prefix)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200489 conf.set10('HAVE_' + decl[0], have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400490endforeach
491
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400492foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200493 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400494endforeach
495
496foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100498 ['gettid', '''#include <sys/types.h>
499 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100500 ['pivot_root', '''#include <stdlib.h>
501 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100502 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 #include <sys/stat.h>
504 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100505 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100506 ['renameat2', '''#include <stdio.h>
507 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400508 ['kcmp', '''#include <linux/kcmp.h>'''],
509 ['keyctl', '''#include <sys/types.h>
510 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100511 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400512 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200513 ['bpf', '''#include <sys/syscall.h>
514 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100515 ['statx', '''#include <sys/types.h>
516 #include <sys/stat.h>
517 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100518 ['explicit_bzero' , '''#include <string.h>'''],
519 ['reallocarray', '''#include <malloc.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400520]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400521
Lennart Poettering85db59b2017-12-25 12:01:14 +0100522 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200523 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400524endforeach
525
Lennart Poettering85db59b2017-12-25 12:01:14 +0100526if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200527 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200528 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400529else
530 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200531 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200532 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400533endif
534
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535#####################################################################
536
537sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400538awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400539m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400540stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400541git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100542env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100543perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400544
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -0400545meson_make_symlink = meson.source_root() + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400546mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400547test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
548splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400549
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400550# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
551# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500552progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400553 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400554 ['kmod', '/usr/bin/kmod' ],
555 ['kexec', '/usr/sbin/kexec' ],
556 ['sulogin', '/usr/sbin/sulogin' ],
557 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
558 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
559 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
560 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
561 ]
562foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400563 path = get_option(prog[0] + '-path')
564 if path != ''
565 message('Using @1@ for @0@'.format(prog[0], path))
566 else
567 exe = find_program(prog[0],
568 '/usr/sbin/' + prog[0],
569 '/sbin/' + prog[0],
570 required: false)
571 path = exe.found() ? exe.path() : prog[1]
572 endif
573 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
574 conf.set_quoted(name, path)
575 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576endforeach
577
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500578conf.set_quoted('TELINIT', get_option('telinit-path'))
579
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400580if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100581 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400582endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400583
584############################################################
585
586gperf = find_program('gperf')
587
588gperf_test_format = '''
589#include <string.h>
590const char * in_word_set(const char *, @0@);
591@1@
592'''
593gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
594gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
595gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
596if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400597 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400598else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400599 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
600 if cc.compiles(gperf_test)
601 gperf_len_type = 'unsigned'
602 else
603 error('unable to determine gperf len type')
604 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400605endif
606message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400607conf.set('GPERF_LEN_TYPE', gperf_len_type,
608 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400609
610############################################################
611
612if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400613 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400614endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100615foreach header : ['crypt.h',
616 'linux/btrfs.h',
Yu Watanabe80df8f22018-10-21 18:35:46 +0900617 'linux/fou.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400618 'linux/memfd.h',
619 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200620 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400621 'valgrind/memcheck.h',
622 'valgrind/valgrind.h',
623 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400624
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200625 conf.set10('HAVE_' + header.underscorify().to_upper(),
626 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400627endforeach
628
629############################################################
630
631conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400632conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
633gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400634
635default_hierarchy = get_option('default-hierarchy')
636conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
637 description : 'default cgroup hierarchy as string')
638if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400639 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400641 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400642else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400643 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400644endif
645
646time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900647if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400648 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900649 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400650endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400651conf.set('TIME_EPOCH', time_epoch)
652
653system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900654if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400655 system_uid_max = run_command(
656 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800657 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
658 '/etc/login.defs').stdout().strip()
659 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900660 system_uid_max = 999
661 else
662 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800663 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400665conf.set('SYSTEM_UID_MAX', system_uid_max)
666substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400667
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400668system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900669if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400670 system_gid_max = run_command(
671 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800672 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
673 '/etc/login.defs').stdout().strip()
674 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900675 system_gid_max = 999
676 else
677 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800678 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400679endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400680conf.set('SYSTEM_GID_MAX', system_gid_max)
681substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400682
Yu Watanabeac093402018-05-10 16:04:16 +0900683dynamic_uid_min = get_option('dynamic-uid-min')
684dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100685conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
686conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
687substs.set('dynamicuidmin', dynamic_uid_min)
688substs.set('dynamicuidmax', dynamic_uid_max)
689
Yu Watanabeac093402018-05-10 16:04:16 +0900690container_uid_base_min = get_option('container-uid-base-min')
691container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100692conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
693conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
694substs.set('containeruidbasemin', container_uid_base_min)
695substs.set('containeruidbasemax', container_uid_base_max)
696
Lennart Poetteringafde4572017-12-05 11:00:24 +0100697nobody_user = get_option('nobody-user')
698nobody_group = get_option('nobody-group')
699
Chen Qi2484bff2018-07-23 14:53:09 +0800700if not meson.is_cross_build()
701 getent_result = run_command('getent', 'passwd', '65534')
702 if getent_result.returncode() == 0
703 name = getent_result.stdout().split(':')[0]
704 if name != nobody_user
705 warning('\n' +
706 '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) +
707 'Your build will result in an user table setup that is incompatible with the local system.')
708 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100709 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800710 id_result = run_command('id', '-u', nobody_user)
711 if id_result.returncode() == 0
712 id = id_result.stdout().to_int()
713 if id != 65534
714 warning('\n' +
715 '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) +
716 'Your build will result in an user table setup that is incompatible with the local system.')
717 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100718 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100719
Chen Qi2484bff2018-07-23 14:53:09 +0800720 getent_result = run_command('getent', 'group', '65534')
721 if getent_result.returncode() == 0
722 name = getent_result.stdout().split(':')[0]
723 if name != nobody_group
724 warning('\n' +
725 '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) +
726 'Your build will result in an group table setup that is incompatible with the local system.')
727 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100728 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800729 id_result = run_command('id', '-g', nobody_group)
730 if id_result.returncode() == 0
731 id = id_result.stdout().to_int()
732 if id != 65534
733 warning('\n' +
734 '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) +
735 'Your build will result in an group table setup that is incompatible with the local system.')
736 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100737 endif
738endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900739if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900740 warning('\n' +
741 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
742 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900743endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744
745conf.set_quoted('NOBODY_USER_NAME', nobody_user)
746conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900747substs.set('NOBODY_USER_NAME', nobody_user)
748substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100749
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400750tty_gid = get_option('tty-gid')
751conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400752substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400753
Ikey Doherty84786b82017-12-03 12:28:23 +0000754# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900755users_gid = get_option('users-gid')
756substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000757
Yu Watanabe348b4432018-05-07 18:17:35 +0900758conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
759conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400760
Michael Bieblace5e312018-07-13 23:36:13 +0200761dev_kvm_mode = get_option('dev-kvm-mode')
762substs.set('DEV_KVM_MODE', dev_kvm_mode)
763conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Tom Stellard4e15a732017-10-31 08:46:24 -0700764substs.set('GROUP_RENDER_MODE', get_option('group-render-mode'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400765
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400766kill_user_processes = get_option('default-kill-user-processes')
767conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100768conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400769substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400770
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400771dns_servers = get_option('dns-servers')
772conf.set_quoted('DNS_SERVERS', dns_servers)
773substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400774
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400775ntp_servers = get_option('ntp-servers')
776conf.set_quoted('NTP_SERVERS', ntp_servers)
777substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
779conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
780
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400781substs.set('SUSHELL', get_option('debug-shell'))
782substs.set('DEBUGTTY', get_option('debug-tty'))
783
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200784enable_debug_hashmap = false
785enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900786enable_debug_siphash = false
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900787enable_debug_udev = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200788foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900789 if name == 'hashmap'
790 enable_debug_hashmap = true
791 elif name == 'mmap-cache'
792 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900793 elif name == 'siphash'
794 enable_debug_siphash = true
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900795 elif name == 'udev'
796 enable_debug_udev = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900797 else
798 message('unknown debug option "@0@", ignoring'.format(name))
799 endif
800endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200801conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
802conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900803conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Yu Watanabe20e97dd2018-11-23 00:28:27 +0900804conf.set10('ENABLE_DEBUG_UDEV', enable_debug_udev)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400805
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200806conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200807conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200808
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400809#####################################################################
810
811threads = dependency('threads')
812librt = cc.find_library('rt')
813libm = cc.find_library('m')
814libdl = cc.find_library('dl')
815libcrypt = cc.find_library('crypt')
816
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400817libcap = dependency('libcap', required : false)
818if not libcap.found()
819 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
820 libcap = cc.find_library('cap')
821endif
822
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400823libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100824 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400825
826want_seccomp = get_option('seccomp')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500827if want_seccomp != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400828 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400829 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400830 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200831 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400832else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200833 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400834 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400835endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200836conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400837
838want_selinux = get_option('selinux')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500839if want_selinux != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400840 libselinux = dependency('libselinux',
841 version : '>= 2.1.9',
842 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200843 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400844else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200845 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400846 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400847endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200848conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400849
850want_apparmor = get_option('apparmor')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500851if want_apparmor != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400852 libapparmor = dependency('libapparmor',
853 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200854 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400855else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200856 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400857 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200859conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400860
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400861smack_run_label = get_option('smack-run-label')
862if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400863 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400864endif
865
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400866want_polkit = get_option('polkit')
867install_polkit = false
868install_polkit_pkla = false
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500869if want_polkit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400870 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400871
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400872 libpolkit = dependency('polkit-gobject-1',
873 required : false)
874 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
875 message('Old polkit detected, will install pkla files')
876 install_polkit_pkla = true
877 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400878endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200879conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400880
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400881want_acl = get_option('acl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500882if want_acl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400883 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200884 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400885else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200886 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400887 libacl = []
888endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200889conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400890
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400891want_audit = get_option('audit')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500892if want_audit != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400893 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200894 have = libaudit.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 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400898endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200899conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400900
901want_blkid = get_option('blkid')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500902if want_blkid != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400903 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200904 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400907 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400908endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200909conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400910
911want_kmod = get_option('kmod')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500912if want_kmod != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400913 libkmod = dependency('libkmod',
914 version : '>= 15',
915 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200916 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400919 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400920endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200921conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400922
923want_pam = get_option('pam')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500924if want_pam != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400925 libpam = cc.find_library('pam', required : want_pam == 'true')
926 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200927 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400930 libpam = []
931 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400932endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200933conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934
935want_microhttpd = get_option('microhttpd')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500936if want_microhttpd != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400937 libmicrohttpd = dependency('libmicrohttpd',
938 version : '>= 0.9.33',
939 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200940 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400941else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200942 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400943 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400944endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200945conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400946
947want_libcryptsetup = get_option('libcryptsetup')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500948if want_libcryptsetup != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400949 libcryptsetup = dependency('libcryptsetup',
950 version : '>= 1.6.0',
951 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200952 have = libcryptsetup.found()
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100953 have_sector = cc.has_member(
954 'struct crypt_params_plain',
955 'sector_size',
956 prefix : '#include <libcryptsetup.h>')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400957else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200958 have = false
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100959 have_sector = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400960 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200962conf.set10('HAVE_LIBCRYPTSETUP', have)
Dimitri John Ledkova9fc6402018-08-29 15:38:09 +0100963conf.set10('HAVE_LIBCRYPTSETUP_SECTOR_SIZE', have_sector)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400964
965want_libcurl = get_option('libcurl')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500966if want_libcurl != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libcurl = dependency('libcurl',
968 version : '>= 7.32.0',
969 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200970 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400971else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200972 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400974endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200975conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400976
977want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -0400978want_libidn2 = get_option('libidn2')
979if want_libidn == 'true' and want_libidn2 == 'true'
980 error('libidn and libidn2 cannot be requested simultaneously')
981endif
982
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500983if want_libidn != 'false' and want_libidn2 != 'true' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400984 libidn = dependency('libidn',
985 required : want_libidn == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libidn.found()
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400989 libidn = []
990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_LIBIDN', have)
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500992if not have and want_libidn2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -0400993 # libidn is used for both libidn and libidn2 objects
994 libidn = dependency('libidn2',
995 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200996 have = libidn.found()
997else
998 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400999endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001000conf.set10('HAVE_LIBIDN2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001001
1002want_libiptc = get_option('libiptc')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001003if want_libiptc != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001004 libiptc = dependency('libiptc',
1005 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001006 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001007else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001008 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001009 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001010endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001011conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001012
1013want_qrencode = get_option('qrencode')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001014if want_qrencode != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001015 libqrencode = dependency('libqrencode',
1016 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001017 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001018else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001019 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001020 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001021endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001023
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001024want_gcrypt = get_option('gcrypt')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001025if want_gcrypt != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001026 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1027 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001028 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001029else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030 have = false
1031endif
1032if not have
1033 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001034 libgcrypt = []
1035 libgpg_error = []
1036endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001038
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001039want_gnutls = get_option('gnutls')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001040if want_gnutls != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001041 libgnutls = dependency('gnutls',
1042 version : '>= 3.1.4',
1043 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001044 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001045else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001046 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001047 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001048endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001049conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001050
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001051want_openssl = get_option('openssl')
1052if want_openssl != 'false' and not fuzzer_build
1053 libopenssl = dependency('openssl',
1054 version : '>= 1.1.0',
1055 required : want_openssl == 'true')
1056 have = libopenssl.found()
1057else
1058 have = false
1059 libopenssl = []
1060endif
1061conf.set10('HAVE_OPENSSL', have)
1062
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001063want_elfutils = get_option('elfutils')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001064if want_elfutils != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001065 libdw = dependency('libdw',
1066 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001067 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001069 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001070 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001071endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001072conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001073
1074want_zlib = get_option('zlib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001075if want_zlib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libz = dependency('zlib',
1077 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001080 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001081 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001082endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001083conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001084
1085want_bzip2 = get_option('bzip2')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001086if want_bzip2 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libbzip2 = cc.find_library('bz2',
1088 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001091 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001092 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001093endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001094conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001095
1096want_xz = get_option('xz')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001097if want_xz != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001098 libxz = dependency('liblzma',
1099 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001100 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001101else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001102 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001103 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001104endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001105conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106
1107want_lz4 = get_option('lz4')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001108if want_lz4 != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001109 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001110 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001111 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001112 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001113else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001114 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001115 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001116endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001117conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001118
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001119want_xkbcommon = get_option('xkbcommon')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001120if want_xkbcommon != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001121 libxkbcommon = dependency('xkbcommon',
1122 version : '>= 0.3.0',
1123 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001124 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001125else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001126 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001127 libxkbcommon = []
1128endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001129conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001130
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001131want_pcre2 = get_option('pcre2')
1132if want_pcre2 != 'false'
1133 libpcre2 = dependency('libpcre2-8',
1134 required : want_pcre2 == 'true')
1135 have = libpcre2.found()
1136else
1137 have = false
1138 libpcre2 = []
1139endif
1140conf.set10('HAVE_PCRE2', have)
1141
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001142want_glib = get_option('glib')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001143if want_glib != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libglib = dependency('glib-2.0',
1145 version : '>= 2.22.0',
1146 required : want_glib == 'true')
1147 libgobject = dependency('gobject-2.0',
1148 version : '>= 2.22.0',
1149 required : want_glib == 'true')
1150 libgio = dependency('gio-2.0',
1151 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001152 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001153else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001154 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libglib = []
1156 libgobject = []
1157 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001158endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001160
1161want_dbus = get_option('dbus')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001162if want_dbus != 'false' and not fuzzer_build
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001163 libdbus = dependency('dbus-1',
1164 version : '>= 1.3.2',
1165 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001166 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001167else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001169 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001170endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001171conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001172
Yu Watanabe42303dc2017-06-18 05:22:32 +09001173default_dnssec = get_option('default-dnssec')
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05001174if fuzzer_build
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001175 default_dnssec = 'no'
1176endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001177if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001178 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1179 default_dnssec = 'no'
1180endif
1181conf.set('DEFAULT_DNSSEC_MODE',
1182 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1183substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1184
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001185dns_over_tls = get_option('dns-over-tls')
1186if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001187 if dns_over_tls == 'openssl'
1188 have_gnutls = false
1189 else
1190 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.5.3'))
1191 if dns_over_tls == 'gnutls' and not have_gnutls
1192 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1193 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001194 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001195 if dns_over_tls == 'gnutls' or have_gnutls
1196 have_openssl = false
1197 else
1198 have_openssl = conf.get('HAVE_OPENSSL') == 1
1199 if dns_over_tls != 'auto' and not have_openssl
1200 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
1201 error('DNS-over-TLS support was requested$0$, but dependencies are not available'.format(str))
1202 endif
1203 endif
1204 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001205else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001206 have = false
1207 have_gnutls = false
1208 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001209endif
1210conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001211conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1212conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001213
Iwan Timmerc9299be2018-06-13 20:26:24 +02001214default_dns_over_tls = get_option('default-dns-over-tls')
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001215if fuzzer_build
Iwan Timmerc9299be2018-06-13 20:26:24 +02001216 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001217endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001218if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
1219 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 +02001220 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001221endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001222conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1223 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1224substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001225
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001226want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001227if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001228 have = (conf.get('HAVE_LIBCURL') == 1 and
1229 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001230 conf.get('HAVE_XZ') == 1 and
1231 conf.get('HAVE_GCRYPT') == 1)
1232 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001233 error('importd support was requested, but dependencies are not available')
1234 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001235else
1236 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001239
1240want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001241if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001242 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1243 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001244 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1245 # it's possible to build one without the other. Complain only if
1246 # support was explictly requested. The auxiliary files like sysusers
1247 # config should be installed when any of the programs are built.
1248 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1249 error('remote support was requested, but dependencies are not available')
1250 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001251 have = have_deps[0] or have_deps[1]
1252else
1253 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001254endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001255conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001256
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001257foreach term : ['utmp',
1258 'hibernate',
1259 'environment-d',
1260 'binfmt',
1261 'coredump',
1262 'resolve',
1263 'logind',
1264 'hostnamed',
1265 'localed',
1266 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001267 'portabled',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001268 'networkd',
1269 'timedated',
1270 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001271 'firstboot',
1272 'randomseed',
1273 'backlight',
1274 'vconsole',
1275 'quotacheck',
1276 'sysusers',
1277 'tmpfiles',
1278 'hwdb',
1279 'rfkill',
1280 'ldconfig',
1281 'efi',
1282 'tpm',
1283 'ima',
1284 'smack',
1285 'gshadow',
1286 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001287 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001288 'nss-systemd']
1289 have = get_option(term)
1290 name = 'ENABLE_' + term.underscorify().to_upper()
1291 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001292endforeach
1293
Yu Watanabe08540a92018-07-18 09:25:57 +09001294foreach tuple : [['nss-mymachines', 'machined'],
1295 ['nss-resolve', 'resolve']]
1296 want = get_option(tuple[0])
1297 if want != 'false'
1298 have = get_option(tuple[1])
1299 if want == 'true' and not have
1300 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1301 endif
1302 else
1303 have = false
1304 endif
1305 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1306 conf.set10(name, have)
1307endforeach
1308
1309enable_nss = false
1310foreach term : ['ENABLE_NSS_MYHOSTNAME',
1311 'ENABLE_NSS_MYMACHINES',
1312 'ENABLE_NSS_RESOLVE',
1313 'ENABLE_NSS_SYSTEMD']
1314 if conf.get(term) == 1
1315 enable_nss = true
1316 endif
1317endforeach
1318conf.set10('ENABLE_NSS', enable_nss)
1319
Yu Watanabe348b4432018-05-07 18:17:35 +09001320conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001321
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001322tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001323fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001324
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001325conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001326
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327#####################################################################
1328
1329if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001330 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001331
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001332 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001333 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001334 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001335 elif efi_arch == 'x86_64'
1336 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001337 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001338 elif efi_arch == 'arm'
1339 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001340 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001341 elif efi_arch == 'aarch64'
1342 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001343 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001344 else
1345 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001346 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001347 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001348
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001349 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001350 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001351
Yu Watanabeac093402018-05-10 16:04:16 +09001352 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001353else
1354 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001355endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001356conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357
1358#####################################################################
1359
1360config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001361 output : 'config.h',
1362 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001363
Yu Watanabe348b4432018-05-07 18:17:35 +09001364meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1365
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001366includes = include_directories('src/basic',
1367 'src/shared',
1368 'src/systemd',
1369 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001370 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001371 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001372 'src/resolve',
1373 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001374 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001375 'src/login',
1376 'src/udev',
1377 'src/libudev',
1378 'src/core',
1379 'src/libsystemd/sd-bus',
1380 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001381 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001382 'src/libsystemd/sd-hwdb',
1383 'src/libsystemd/sd-id128',
1384 'src/libsystemd/sd-netlink',
1385 'src/libsystemd/sd-network',
1386 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001387 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001388
1389add_project_arguments('-include', 'config.h', language : 'c')
1390
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001391subdir('po')
1392subdir('catalog')
1393subdir('src/systemd')
1394subdir('src/basic')
1395subdir('src/libsystemd')
1396subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001397subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001398subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001399
1400libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001401 'journal-core',
1402 libjournal_core_sources,
1403 journald_gperf_c,
1404 include_directories : includes,
1405 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001406
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04001407libsystemd_sym_path = '@0@/@1@'.format(meson.current_source_dir(), libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001408libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001409 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001410 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001411 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001412 include_directories : includes,
1413 link_args : ['-shared',
1414 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001415 link_with : [libbasic,
1416 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001417 link_whole : [libsystemd_static,
1418 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001419 dependencies : [threads,
1420 librt,
1421 libxz,
1422 liblz4],
1423 link_depends : libsystemd_sym,
1424 install : true,
1425 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001426
Davide Cavalca70848ec2018-04-09 02:43:35 -07001427static_libsystemd = get_option('static-libsystemd')
1428static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1429
1430install_libsystemd_static = static_library(
1431 'systemd',
1432 libsystemd_sources,
1433 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001434 basic_sources,
1435 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001436 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001437 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001438 build_by_default : static_libsystemd != 'false',
1439 install : static_libsystemd != 'false',
1440 install_dir : rootlibdir,
1441 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1442 dependencies : [threads,
1443 librt,
1444 libxz,
1445 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001446 libcap,
1447 libblkid,
1448 libmount,
1449 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001450 libgcrypt],
1451 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001453############################################################
1454
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001455# binaries that have --help and are intended for use by humans,
1456# usually, but not always, installed in /bin.
1457public_programs = []
1458
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001459subdir('src/libudev')
1460subdir('src/shared')
1461subdir('src/core')
1462subdir('src/udev')
1463subdir('src/network')
1464
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001465subdir('src/analyze')
1466subdir('src/journal-remote')
1467subdir('src/coredump')
1468subdir('src/hostname')
1469subdir('src/import')
1470subdir('src/kernel-install')
1471subdir('src/locale')
1472subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001473subdir('src/portable')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001474subdir('src/nspawn')
1475subdir('src/resolve')
1476subdir('src/timedate')
1477subdir('src/timesync')
1478subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001479subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001480
1481subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001482subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmek6b97bf22017-11-22 12:42:28 +01001483subdir('rules')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001484subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001485
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001486############################################################
1487
1488# only static linking apart from libdl, to make sure that the
1489# module is linked to all libraries that it uses.
1490test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001491 'test-dlopen',
1492 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001493 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001494 include_directories : includes,
1495 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001496 dependencies : [libdl],
1497 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001498
Yu Watanabe08540a92018-07-18 09:25:57 +09001499foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Waldemar Brodkorbe7e11bb2017-06-24 19:30:26 +02001500 ['systemd', 'ENABLE_NSS_SYSTEMD'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001501 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1502 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001503
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001504 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001505 if condition
1506 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001507
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001508 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001509 version_script_arg = join_paths(meson.source_root(), sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001510
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001511 nss = shared_library(
1512 'nss_' + module,
1513 'src/nss-@0@/nss-@0@.c'.format(module),
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001514 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001515 version : '2',
1516 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001517 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1518 link_args : ['-Wl,-z,nodelete',
1519 '-shared',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001520 '-Wl,--version-script=' + version_script_arg,
1521 '-Wl,--undefined'],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001522 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001523 libbasic],
1524 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001525 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001526 link_depends : sym,
1527 install : true,
1528 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001529
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001530 # We cannot use shared_module because it does not support version suffix.
1531 # Unfortunately shared_library insists on creating the symlink…
1532 meson.add_install_script('sh', '-c',
1533 'rm $DESTDIR@0@/libnss_@1@.so'
1534 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001535
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001536 if want_tests != 'false'
1537 test('dlopen-nss_' + module,
1538 test_dlopen,
1539 # path to dlopen must include a slash
1540 args : nss.full_path())
1541 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001542 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001543endforeach
1544
1545############################################################
1546
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001547executable('systemd',
1548 systemd_sources,
1549 include_directories : includes,
1550 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001551 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001552 dependencies : [threads,
1553 librt,
1554 libseccomp,
1555 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001556 libmount,
1557 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001558 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001559 install : true,
1560 install_dir : rootlibexecdir)
1561
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001562meson.add_install_script(meson_make_symlink,
1563 join_paths(rootlibexecdir, 'systemd'),
1564 join_paths(rootsbindir, 'init'))
1565
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001566exe = executable('systemd-analyze',
1567 systemd_analyze_sources,
1568 include_directories : includes,
1569 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001570 libshared],
1571 dependencies : [threads,
1572 librt,
1573 libseccomp,
1574 libselinux,
1575 libmount,
1576 libblkid],
1577 install_rpath : rootlibexecdir,
1578 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001579public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580
1581executable('systemd-journald',
1582 systemd_journald_sources,
1583 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001584 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001585 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586 dependencies : [threads,
1587 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001588 liblz4,
1589 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001590 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001591 install : true,
1592 install_dir : rootlibexecdir)
1593
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001594exe = executable('systemd-cat',
1595 systemd_cat_sources,
1596 include_directories : includes,
1597 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001598 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001599 dependencies : [threads],
1600 install_rpath : rootlibexecdir,
1601 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001602public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001603
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001604exe = executable('journalctl',
1605 journalctl_sources,
1606 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001607 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001608 dependencies : [threads,
1609 libqrencode,
1610 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001611 liblz4,
1612 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001613 install_rpath : rootlibexecdir,
1614 install : true,
1615 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001616public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001617
1618executable('systemd-getty-generator',
1619 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001620 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001621 link_with : [libshared],
1622 install_rpath : rootlibexecdir,
1623 install : true,
1624 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001625
1626executable('systemd-debug-generator',
1627 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001628 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001629 link_with : [libshared],
1630 install_rpath : rootlibexecdir,
1631 install : true,
1632 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001633
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001634executable('systemd-run-generator',
1635 'src/run-generator/run-generator.c',
1636 include_directories : includes,
1637 link_with : [libshared],
1638 install_rpath : rootlibexecdir,
1639 install : true,
1640 install_dir : systemgeneratordir)
1641
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001642executable('systemd-fstab-generator',
1643 'src/fstab-generator/fstab-generator.c',
1644 'src/core/mount-setup.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001645 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001646 link_with : [libshared],
1647 install_rpath : rootlibexecdir,
1648 install : true,
1649 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001650
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001651if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 executable('30-systemd-environment-d-generator',
1653 'src/environment-d-generator/environment-d-generator.c',
1654 include_directories : includes,
1655 link_with : [libshared],
1656 install_rpath : rootlibexecdir,
1657 install : true,
1658 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001659
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 meson.add_install_script(meson_make_symlink,
1661 join_paths(sysconfdir, 'environment'),
1662 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001663endif
1664
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001665if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001666 executable('systemd-hibernate-resume-generator',
1667 'src/hibernate-resume/hibernate-resume-generator.c',
1668 include_directories : includes,
1669 link_with : [libshared],
1670 install_rpath : rootlibexecdir,
1671 install : true,
1672 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001673
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001674 executable('systemd-hibernate-resume',
1675 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001676 include_directories : includes,
1677 link_with : [libshared],
1678 install_rpath : rootlibexecdir,
1679 install : true,
1680 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001681endif
1682
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001683if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001684 executable('systemd-gpt-auto-generator',
1685 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001686 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001687 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001688 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001689 dependencies : libblkid,
1690 install_rpath : rootlibexecdir,
1691 install : true,
1692 install_dir : systemgeneratordir)
1693
1694 exe = executable('systemd-dissect',
1695 'src/dissect/dissect.c',
1696 include_directories : includes,
1697 link_with : [libshared],
1698 install_rpath : rootlibexecdir,
1699 install : true,
1700 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001701 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001702endif
1703
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001704if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001705 executable('systemd-resolved',
1706 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001707 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001708 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001709 libbasic_gcrypt,
1710 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001711 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001712 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001713 install : true,
1714 install_dir : rootlibexecdir)
1715
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001716 exe = executable('resolvectl',
1717 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001718 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001719 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001720 libbasic_gcrypt,
1721 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001722 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001723 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001724 libm,
1725 libidn],
1726 install_rpath : rootlibexecdir,
1727 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001728 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001729
1730 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001731 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001732 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001733
1734 meson.add_install_script(meson_make_symlink,
1735 join_paths(bindir, 'resolvectl'),
1736 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001737endif
1738
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001739if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001740 executable('systemd-logind',
1741 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001742 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001743 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001744 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001745 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001746 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001747 install_rpath : rootlibexecdir,
1748 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001750
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001751 exe = executable('loginctl',
1752 loginctl_sources,
1753 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001754 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001755 dependencies : [threads,
1756 liblz4,
1757 libxz],
1758 install_rpath : rootlibexecdir,
1759 install : true,
1760 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001761 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001762
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001763 exe = executable('systemd-inhibit',
1764 'src/login/inhibit.c',
1765 include_directories : includes,
1766 link_with : [libshared],
1767 install_rpath : rootlibexecdir,
1768 install : true,
1769 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001770 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001771
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001772 if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02001773 version_script_arg = join_paths(meson.source_root(), pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001774 pam_systemd = shared_library(
1775 'pam_systemd',
1776 pam_systemd_c,
1777 name_prefix : '',
1778 include_directories : includes,
1779 link_args : ['-shared',
1780 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001781 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001782 libshared_static],
1783 dependencies : [threads,
1784 libpam,
1785 libpam_misc],
1786 link_depends : pam_systemd_sym,
1787 install : true,
1788 install_dir : pamlibdir)
1789
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001790 if want_tests != 'false'
1791 test('dlopen-pam_systemd',
1792 test_dlopen,
1793 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001794 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001795 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001796 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001797
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001798 executable('systemd-user-runtime-dir',
1799 user_runtime_dir_sources,
1800 include_directories : includes,
1801 link_with : [libshared],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : rootlibexecdir)
1805endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001806
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001807if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001808 executable('systemd-user-sessions',
1809 'src/user-sessions/user-sessions.c',
1810 include_directories : includes,
1811 link_with : [libshared],
1812 install_rpath : rootlibexecdir,
1813 install : true,
1814 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001815endif
1816
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001817if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001818 exe = executable('bootctl',
1819 'src/boot/bootctl.c',
1820 include_directories : includes,
1821 link_with : [libshared],
1822 dependencies : [libblkid],
1823 install_rpath : rootlibexecdir,
1824 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001825 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001826
1827 executable('systemd-bless-boot',
1828 'src/boot/bless-boot.c',
1829 include_directories : includes,
1830 link_with : [libshared],
1831 dependencies : [libblkid],
1832 install_rpath : rootlibexecdir,
1833 install : true,
1834 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001835
1836 executable('systemd-bless-boot-generator',
1837 'src/boot/bless-boot-generator.c',
1838 include_directories : includes,
1839 link_with : [libshared],
1840 install_rpath : rootlibexecdir,
1841 install : true,
1842 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001843endif
1844
Lennart Poetteringf876f532018-06-25 16:07:33 +02001845executable('systemd-boot-check-no-failures',
1846 'src/boot/boot-check-no-failures.c',
1847 include_directories : includes,
1848 link_with : [libshared],
1849 dependencies : [libblkid],
1850 install_rpath : rootlibexecdir,
1851 install : true,
1852 install_dir : rootlibexecdir)
1853
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001854exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1855 include_directories : includes,
1856 link_with : [libshared],
1857 dependencies : [threads],
1858 install_rpath : rootlibexecdir,
1859 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001860public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001861
Felipe Satelerf3794362018-05-22 15:08:57 -04001862
1863if get_option('link-systemctl-shared')
1864 systemctl_link_with = [libshared]
1865else
1866 systemctl_link_with = [libsystemd_static,
1867 libshared_static,
1868 libjournal_client,
1869 libbasic_gcrypt]
1870endif
1871
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001872exe = executable('systemctl', 'src/systemctl/systemctl.c',
1873 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04001874 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001875 dependencies : [threads,
1876 libcap,
1877 libselinux,
1878 libxz,
1879 liblz4],
1880 install_rpath : rootlibexecdir,
1881 install : true,
1882 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001883public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001884
Lennart Poettering61d05782018-04-16 21:41:40 +02001885if conf.get('ENABLE_PORTABLED') == 1
1886 executable('systemd-portabled',
1887 systemd_portabled_sources,
1888 include_directories : includes,
1889 link_with : [libshared],
1890 dependencies : [threads],
1891 install_rpath : rootlibexecdir,
1892 install : true,
1893 install_dir : rootlibexecdir)
1894
1895 exe = executable('portablectl', 'src/portable/portablectl.c',
1896 include_directories : includes,
1897 link_with : [libshared],
1898 dependencies : [threads],
1899 install_rpath : rootlibexecdir,
1900 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02001901 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001902 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02001903endif
1904
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001905foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
1906 meson.add_install_script(meson_make_symlink,
1907 join_paths(rootbindir, 'systemctl'),
1908 join_paths(rootsbindir, alias))
1909endforeach
1910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001911if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001912 executable('systemd-backlight',
1913 'src/backlight/backlight.c',
1914 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001915 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001916 install_rpath : rootlibexecdir,
1917 install : true,
1918 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001919endif
1920
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001921if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001922 executable('systemd-rfkill',
1923 'src/rfkill/rfkill.c',
1924 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001925 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001926 install_rpath : rootlibexecdir,
1927 install : true,
1928 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001929endif
1930
1931executable('systemd-system-update-generator',
1932 'src/system-update-generator/system-update-generator.c',
1933 include_directories : includes,
1934 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001935 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936 install : true,
1937 install_dir : systemgeneratordir)
1938
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001939if conf.get('HAVE_LIBCRYPTSETUP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001940 executable('systemd-cryptsetup',
1941 'src/cryptsetup/cryptsetup.c',
1942 include_directories : includes,
1943 link_with : [libshared],
1944 dependencies : [libcryptsetup],
1945 install_rpath : rootlibexecdir,
1946 install : true,
1947 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001948
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001949 executable('systemd-cryptsetup-generator',
1950 'src/cryptsetup/cryptsetup-generator.c',
1951 include_directories : includes,
1952 link_with : [libshared],
1953 dependencies : [libcryptsetup],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001957
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001958 executable('systemd-veritysetup',
1959 'src/veritysetup/veritysetup.c',
1960 include_directories : includes,
1961 link_with : [libshared],
1962 dependencies : [libcryptsetup],
1963 install_rpath : rootlibexecdir,
1964 install : true,
1965 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001966
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001967 executable('systemd-veritysetup-generator',
1968 'src/veritysetup/veritysetup-generator.c',
1969 include_directories : includes,
1970 link_with : [libshared],
1971 dependencies : [libcryptsetup],
1972 install_rpath : rootlibexecdir,
1973 install : true,
1974 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001975endif
1976
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001977if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001978 executable('systemd-sysv-generator',
1979 'src/sysv-generator/sysv-generator.c',
1980 include_directories : includes,
1981 link_with : [libshared],
1982 install_rpath : rootlibexecdir,
1983 install : true,
1984 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001985
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001986 executable('systemd-rc-local-generator',
1987 'src/rc-local-generator/rc-local-generator.c',
1988 include_directories : includes,
1989 link_with : [libshared],
1990 install_rpath : rootlibexecdir,
1991 install : true,
1992 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001993endif
1994
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001995if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001996 executable('systemd-hostnamed',
1997 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001998 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001999 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002000 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002001 install : true,
2002 install_dir : rootlibexecdir)
2003
2004 exe = executable('hostnamectl',
2005 'src/hostname/hostnamectl.c',
2006 include_directories : includes,
2007 link_with : [libshared],
2008 install_rpath : rootlibexecdir,
2009 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002010 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002011endif
2012
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002013if conf.get('ENABLE_LOCALED') == 1
2014 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002015 # logind will load libxkbcommon.so dynamically on its own
2016 deps = [libdl]
2017 else
2018 deps = []
2019 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002020
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002021 executable('systemd-localed',
2022 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002023 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002024 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002025 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002026 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002027 install : true,
2028 install_dir : rootlibexecdir)
2029
2030 exe = executable('localectl',
2031 localectl_sources,
2032 include_directories : includes,
2033 link_with : [libshared],
2034 install_rpath : rootlibexecdir,
2035 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002036 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002037endif
2038
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002039if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002040 executable('systemd-timedated',
2041 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002042 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002043 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002044 install_rpath : rootlibexecdir,
2045 install : true,
2046 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002047endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002048
Yu Watanabe6129ec82018-05-03 18:07:43 +09002049if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002050 exe = executable('timedatectl',
2051 'src/timedate/timedatectl.c',
2052 include_directories : includes,
2053 install_rpath : rootlibexecdir,
2054 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002055 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002056 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002057 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002058endif
2059
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002060if conf.get('ENABLE_TIMESYNCD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002061 executable('systemd-timesyncd',
2062 systemd_timesyncd_sources,
2063 include_directories : includes,
2064 link_with : [libshared],
2065 dependencies : [threads,
2066 libm],
2067 install_rpath : rootlibexecdir,
2068 install : true,
2069 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002070
2071 executable('systemd-time-wait-sync',
2072 'src/time-wait-sync/time-wait-sync.c',
2073 include_directories : includes,
2074 link_with : [libshared],
2075 install_rpath : rootlibexecdir,
2076 install : true,
2077 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002078endif
2079
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002080if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002081 executable('systemd-machined',
2082 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002083 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002084 link_with : [libmachine_core,
2085 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002086 install_rpath : rootlibexecdir,
2087 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002088 install_dir : rootlibexecdir)
2089
2090 exe = executable('machinectl',
2091 'src/machine/machinectl.c',
2092 include_directories : includes,
2093 link_with : [libshared],
2094 dependencies : [threads,
2095 libxz,
2096 liblz4],
2097 install_rpath : rootlibexecdir,
2098 install : true,
2099 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002100 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002101endif
2102
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002103if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002104 executable('systemd-importd',
2105 systemd_importd_sources,
2106 include_directories : includes,
2107 link_with : [libshared],
2108 dependencies : [threads],
2109 install_rpath : rootlibexecdir,
2110 install : true,
2111 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002112
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002113 systemd_pull = executable('systemd-pull',
2114 systemd_pull_sources,
2115 include_directories : includes,
2116 link_with : [libshared],
2117 dependencies : [libcurl,
2118 libz,
2119 libbzip2,
2120 libxz,
2121 libgcrypt],
2122 install_rpath : rootlibexecdir,
2123 install : true,
2124 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002125
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002126 systemd_import = executable('systemd-import',
2127 systemd_import_sources,
2128 include_directories : includes,
2129 link_with : [libshared],
2130 dependencies : [libcurl,
2131 libz,
2132 libbzip2,
2133 libxz],
2134 install_rpath : rootlibexecdir,
2135 install : true,
2136 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002137
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002138 systemd_export = executable('systemd-export',
2139 systemd_export_sources,
2140 include_directories : includes,
2141 link_with : [libshared],
2142 dependencies : [libcurl,
2143 libz,
2144 libbzip2,
2145 libxz],
2146 install_rpath : rootlibexecdir,
2147 install : true,
2148 install_dir : rootlibexecdir)
2149 public_programs += [systemd_pull, systemd_import, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002150endif
2151
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002152if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002153 exe = executable('systemd-journal-upload',
2154 systemd_journal_upload_sources,
2155 include_directories : includes,
2156 link_with : [libshared],
2157 dependencies : [threads,
2158 libcurl,
2159 libgnutls,
2160 libxz,
2161 liblz4],
2162 install_rpath : rootlibexecdir,
2163 install : true,
2164 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002165 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002166endif
2167
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002168if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002169 s_j_remote = executable('systemd-journal-remote',
2170 systemd_journal_remote_sources,
2171 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002172 link_with : [libshared,
2173 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002174 dependencies : [threads,
2175 libmicrohttpd,
2176 libgnutls,
2177 libxz,
2178 liblz4],
2179 install_rpath : rootlibexecdir,
2180 install : true,
2181 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002182
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002183 s_j_gatewayd = executable('systemd-journal-gatewayd',
2184 systemd_journal_gatewayd_sources,
2185 include_directories : includes,
2186 link_with : [libshared],
2187 dependencies : [threads,
2188 libmicrohttpd,
2189 libgnutls,
2190 libxz,
2191 liblz4],
2192 install_rpath : rootlibexecdir,
2193 install : true,
2194 install_dir : rootlibexecdir)
2195 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002196endif
2197
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002198if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002199 executable('systemd-coredump',
2200 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002201 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002202 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002203 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002204 libacl,
2205 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002206 libxz,
2207 liblz4],
2208 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002209 install : true,
2210 install_dir : rootlibexecdir)
2211
2212 exe = executable('coredumpctl',
2213 coredumpctl_sources,
2214 include_directories : includes,
2215 link_with : [libshared],
2216 dependencies : [threads,
2217 libxz,
2218 liblz4],
2219 install_rpath : rootlibexecdir,
2220 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002221 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002222endif
2223
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002224if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002225 exe = executable('systemd-binfmt',
2226 'src/binfmt/binfmt.c',
2227 include_directories : includes,
2228 link_with : [libshared],
2229 install_rpath : rootlibexecdir,
2230 install : true,
2231 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002232 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002233
2234 meson.add_install_script('sh', '-c',
2235 mkdir_p.format(binfmtdir))
2236 meson.add_install_script('sh', '-c',
2237 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2238endif
2239
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002240if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002241 executable('systemd-vconsole-setup',
2242 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 include_directories : includes,
2244 link_with : [libshared],
2245 install_rpath : rootlibexecdir,
2246 install : true,
2247 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002248endif
2249
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002250if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002251 executable('systemd-random-seed',
2252 'src/random-seed/random-seed.c',
2253 include_directories : includes,
2254 link_with : [libshared],
2255 install_rpath : rootlibexecdir,
2256 install : true,
2257 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002258endif
2259
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002260if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002261 executable('systemd-firstboot',
2262 'src/firstboot/firstboot.c',
2263 include_directories : includes,
2264 link_with : [libshared],
2265 dependencies : [libcrypt],
2266 install_rpath : rootlibexecdir,
2267 install : true,
2268 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002269endif
2270
2271executable('systemd-remount-fs',
2272 'src/remount-fs/remount-fs.c',
2273 'src/core/mount-setup.c',
2274 'src/core/mount-setup.h',
2275 include_directories : includes,
2276 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002277 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002278 install : true,
2279 install_dir : rootlibexecdir)
2280
2281executable('systemd-machine-id-setup',
2282 'src/machine-id-setup/machine-id-setup-main.c',
2283 'src/core/machine-id-setup.c',
2284 'src/core/machine-id-setup.h',
2285 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002286 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002287 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002288 install : true,
2289 install_dir : rootbindir)
2290
2291executable('systemd-fsck',
2292 'src/fsck/fsck.c',
2293 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002294 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002295 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002296 install : true,
2297 install_dir : rootlibexecdir)
2298
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002299executable('systemd-growfs',
2300 'src/partition/growfs.c',
2301 include_directories : includes,
2302 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002303 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002304 install_rpath : rootlibexecdir,
2305 install : true,
2306 install_dir : rootlibexecdir)
2307
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002308executable('systemd-makefs',
2309 'src/partition/makefs.c',
2310 include_directories : includes,
2311 link_with : [libshared],
2312 install_rpath : rootlibexecdir,
2313 install : true,
2314 install_dir : rootlibexecdir)
2315
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316executable('systemd-sleep',
2317 'src/sleep/sleep.c',
2318 include_directories : includes,
2319 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002320 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002321 install : true,
2322 install_dir : rootlibexecdir)
2323
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002324exe = executable('systemd-sysctl',
2325 'src/sysctl/sysctl.c',
2326 include_directories : includes,
2327 link_with : [libshared],
2328 install_rpath : rootlibexecdir,
2329 install : true,
2330 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002331public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002332
2333executable('systemd-ac-power',
2334 'src/ac-power/ac-power.c',
2335 include_directories : includes,
2336 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002337 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338 install : true,
2339 install_dir : rootlibexecdir)
2340
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002341exe = executable('systemd-detect-virt',
2342 'src/detect-virt/detect-virt.c',
2343 include_directories : includes,
2344 link_with : [libshared],
2345 install_rpath : rootlibexecdir,
2346 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002347public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002348
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002349exe = executable('systemd-delta',
2350 'src/delta/delta.c',
2351 include_directories : includes,
2352 link_with : [libshared],
2353 install_rpath : rootlibexecdir,
2354 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002355public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002356
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002357exe = executable('systemd-escape',
2358 'src/escape/escape.c',
2359 include_directories : includes,
2360 link_with : [libshared],
2361 install_rpath : rootlibexecdir,
2362 install : true,
2363 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002364public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002365
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002366exe = executable('systemd-notify',
2367 'src/notify/notify.c',
2368 include_directories : includes,
2369 link_with : [libshared],
2370 install_rpath : rootlibexecdir,
2371 install : true,
2372 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002373public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002374
2375executable('systemd-volatile-root',
2376 'src/volatile-root/volatile-root.c',
2377 include_directories : includes,
2378 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002379 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002380 install : true,
2381 install_dir : rootlibexecdir)
2382
2383executable('systemd-cgroups-agent',
2384 'src/cgroups-agent/cgroups-agent.c',
2385 include_directories : includes,
2386 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002387 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002388 install : true,
2389 install_dir : rootlibexecdir)
2390
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002391exe = executable('systemd-id128',
2392 'src/id128/id128.c',
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true)
2397public_programs += exe
2398
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002399exe = executable('systemd-path',
2400 'src/path/path.c',
2401 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002402 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002403 install_rpath : rootlibexecdir,
2404 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002405public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002406
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002407exe = executable('systemd-ask-password',
2408 'src/ask-password/ask-password.c',
2409 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002410 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002411 install_rpath : rootlibexecdir,
2412 install : true,
2413 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002414public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002415
2416executable('systemd-reply-password',
2417 'src/reply-password/reply-password.c',
2418 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002419 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002420 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002421 install : true,
2422 install_dir : rootlibexecdir)
2423
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002424exe = executable('systemd-tty-ask-password-agent',
2425 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2426 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002427 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002428 install_rpath : rootlibexecdir,
2429 install : true,
2430 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002431public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002432
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002433exe = executable('systemd-cgls',
2434 'src/cgls/cgls.c',
2435 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002436 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002437 install_rpath : rootlibexecdir,
2438 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002439public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002440
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002441exe = executable('systemd-cgtop',
2442 'src/cgtop/cgtop.c',
2443 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002444 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002445 install_rpath : rootlibexecdir,
2446 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002447public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002448
2449executable('systemd-initctl',
2450 'src/initctl/initctl.c',
2451 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002452 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002453 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002454 install : true,
2455 install_dir : rootlibexecdir)
2456
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002457exe = executable('systemd-mount',
2458 'src/mount/mount-tool.c',
2459 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002460 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002461 install_rpath : rootlibexecdir,
2462 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002463public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002464
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002465meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002466 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002467
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002468exe = executable('systemd-run',
2469 'src/run/run.c',
2470 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002471 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002472 install_rpath : rootlibexecdir,
2473 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002474public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002475
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002476exe = executable('systemd-stdio-bridge',
2477 'src/stdio-bridge/stdio-bridge.c',
2478 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002479 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002480 install_rpath : rootlibexecdir,
2481 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002482public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002483
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002484exe = executable('busctl',
2485 'src/busctl/busctl.c',
2486 'src/busctl/busctl-introspect.c',
2487 'src/busctl/busctl-introspect.h',
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)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002492public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002493
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002494if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002495 exe = executable('systemd-sysusers',
2496 'src/sysusers/sysusers.c',
2497 include_directories : includes,
2498 link_with : [libshared],
2499 install_rpath : rootlibexecdir,
2500 install : true,
2501 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002502 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002503endif
2504
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002505if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002506 exe = executable('systemd-tmpfiles',
2507 'src/tmpfiles/tmpfiles.c',
2508 include_directories : includes,
2509 link_with : [libshared],
2510 dependencies : [libacl],
2511 install_rpath : rootlibexecdir,
2512 install : true,
2513 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002514 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002515
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002516 if want_tests != 'false'
2517 test('test-systemd-tmpfiles',
2518 test_systemd_tmpfiles_py,
2519 # https://github.com/mesonbuild/meson/issues/2681
2520 args : exe.full_path())
2521 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002522endif
2523
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002524if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002525 exe = executable('systemd-hwdb',
2526 'src/hwdb/hwdb.c',
2527 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2528 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002529 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002530 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002531 install : true,
2532 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002533 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002534endif
2535
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002536if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002537 executable('systemd-quotacheck',
2538 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002539 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002540 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002541 install_rpath : rootlibexecdir,
2542 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002543 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002544endif
2545
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002546exe = executable('systemd-socket-proxyd',
2547 'src/socket-proxy/socket-proxyd.c',
2548 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002549 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002550 dependencies : [threads],
2551 install_rpath : rootlibexecdir,
2552 install : true,
2553 install_dir : rootlibexecdir)
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-Szmek005a29f2017-04-13 11:52:05 -04002556exe = executable('systemd-udevd',
2557 systemd_udevd_sources,
2558 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002559 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002560 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002561 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002562 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002563 dependencies : [threads,
2564 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002565 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002566 libacl,
2567 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002568 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002569 install : true,
2570 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002571public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002573exe = executable('udevadm',
2574 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002575 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002576 include_directories : includes,
2577 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002578 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002579 libudev_static],
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002580 dependencies : [threads,
2581 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002582 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002583 libacl,
2584 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002585 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002586 install : true,
2587 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002588public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002589
2590executable('systemd-shutdown',
2591 systemd_shutdown_sources,
2592 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002593 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002594 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002595 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002596 install : true,
2597 install_dir : rootlibexecdir)
2598
2599executable('systemd-update-done',
2600 'src/update-done/update-done.c',
2601 include_directories : includes,
2602 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002603 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002604 install : true,
2605 install_dir : rootlibexecdir)
2606
2607executable('systemd-update-utmp',
2608 'src/update-utmp/update-utmp.c',
2609 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002610 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002611 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002612 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002613 install : true,
2614 install_dir : rootlibexecdir)
2615
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002616if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002617 executable('systemd-modules-load',
2618 'src/modules-load/modules-load.c',
2619 include_directories : includes,
2620 link_with : [libshared],
2621 dependencies : [libkmod],
2622 install_rpath : rootlibexecdir,
2623 install : true,
2624 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002625
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002626 meson.add_install_script('sh', '-c',
2627 mkdir_p.format(modulesloaddir))
2628 meson.add_install_script('sh', '-c',
2629 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002630endif
2631
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002632exe = executable('systemd-nspawn',
2633 systemd_nspawn_sources,
2634 'src/core/mount-setup.c', # FIXME: use a variable?
2635 'src/core/mount-setup.h',
2636 'src/core/loopback-setup.c',
2637 'src/core/loopback-setup.h',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002638 include_directories : includes,
2639 link_with : [libnspawn_core,
2640 libshared],
2641 dependencies : [libblkid],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002642 install_rpath : rootlibexecdir,
2643 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002644public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002645
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002646if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002647 executable('systemd-networkd',
2648 systemd_networkd_sources,
2649 include_directories : includes,
2650 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002651 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002652 libudev_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002653 libshared],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002654 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002655 install_rpath : rootlibexecdir,
2656 install : true,
2657 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002658
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002659 executable('systemd-networkd-wait-online',
2660 systemd_networkd_wait_online_sources,
2661 include_directories : includes,
2662 link_with : [libnetworkd_core,
2663 libshared],
2664 install_rpath : rootlibexecdir,
2665 install : true,
2666 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002667
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002668 exe = executable('networkctl',
2669 networkctl_sources,
2670 include_directories : includes,
2671 link_with : [libsystemd_network,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002672 libshared],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002673 install_rpath : rootlibexecdir,
2674 install : true,
2675 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002676 public_programs += exe
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002677endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002678
2679executable('systemd-sulogin-shell',
2680 ['src/sulogin-shell/sulogin-shell.c'],
2681 include_directories : includes,
2682 link_with : [libshared],
2683 install_rpath : rootlibexecdir,
2684 install : true,
2685 install_dir : rootlibexecdir)
2686
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002687############################################################
2688
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002689custom_target(
2690 'systemd-runtest.env',
2691 output : 'systemd-runtest.env',
2692 command : ['sh', '-c', '{ ' +
2693 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(meson.current_source_dir(), 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07002694 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07002695 '} >@OUTPUT@'],
2696 build_by_default : true)
2697
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002698foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002699 sources = tuple[0]
2700 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2701 dependencies = tuple[2]
2702 condition = tuple.length() >= 4 ? tuple[3] : ''
2703 type = tuple.length() >= 5 ? tuple[4] : ''
2704 defs = tuple.length() >= 6 ? tuple[5] : []
2705 incs = tuple.length() >= 7 ? tuple[6] : includes
2706 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002707
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002708 name = sources[0].split('/')[-1].split('.')[0]
2709 if type.startswith('timeout=')
2710 timeout = type.split('=')[1].to_int()
2711 type = ''
2712 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002713
2714 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002715 exe = executable(
2716 name,
2717 sources,
2718 include_directories : incs,
2719 link_with : link_with,
2720 dependencies : dependencies,
2721 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002722 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002723 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02002724 install : install_tests,
2725 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04002726
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002727 if type == 'manual'
2728 message('@0@ is a manual test'.format(name))
2729 elif type == 'unsafe' and want_tests != 'unsafe'
2730 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02002731 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002732 test(name, exe,
2733 env : test_env,
2734 timeout : timeout)
2735 endif
2736 else
2737 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
2738 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002739endforeach
2740
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002741exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002742 'test-libsystemd-sym',
2743 test_libsystemd_sym_c,
2744 include_directories : includes,
2745 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002746 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002747 install : install_tests,
2748 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002749if want_tests != 'false'
2750 test('test-libsystemd-sym', exe)
2751endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04002752
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002753exe = executable(
2754 'test-libsystemd-static-sym',
2755 test_libsystemd_sym_c,
2756 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002757 link_with : [install_libsystemd_static],
2758 dependencies : [threads], # threads is already included in dependencies on the library,
2759 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09002760 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002761 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002762 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002763if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002764 test('test-libsystemd-static-sym', exe)
2765endif
2766
2767exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002768 'test-libudev-sym',
2769 test_libudev_sym_c,
2770 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002771 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002772 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002773 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002774 install : install_tests,
2775 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002776if want_tests != 'false'
2777 test('test-libudev-sym', exe)
2778endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002779
2780exe = executable(
2781 'test-libudev-static-sym',
2782 test_libudev_sym_c,
2783 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002784 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002785 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09002786 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07002787 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002788 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002789if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02002790 test('test-libudev-static-sym', exe)
2791endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04002792
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04002793############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002794
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002795fuzzer_exes = []
2796
Michael Olbrich59967402018-11-11 11:27:35 +01002797if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002798foreach tuple : fuzzers
2799 sources = tuple[0]
2800 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
2801 dependencies = tuple[2]
2802 defs = tuple.length() >= 4 ? tuple[3] : []
2803 incs = tuple.length() >= 5 ? tuple[4] : includes
2804
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -05002805 if fuzzer_build
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002806 dependencies += fuzzing_engine
2807 else
2808 sources += 'src/fuzz/fuzz-main.c'
2809 endif
2810
2811 name = sources[0].split('/')[-1].split('.')[0]
2812
2813 fuzzer_exes += executable(
2814 name,
2815 sources,
2816 include_directories : [incs, include_directories('src/fuzz')],
2817 link_with : link_with,
2818 dependencies : dependencies,
2819 c_args : defs,
2820 install : false)
2821endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01002822endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05002823
2824run_target('fuzzers',
2825 depends : fuzzer_exes,
2826 command : ['true'])
2827
2828############################################################
2829
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002830make_directive_index_py = find_program('tools/make-directive-index.py')
2831make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04002832xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04002833hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002834
2835subdir('units')
2836subdir('sysctl.d')
2837subdir('sysusers.d')
2838subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01002839subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002840subdir('hwdb')
2841subdir('network')
2842subdir('man')
2843subdir('shell-completion/bash')
2844subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002845subdir('docs/sysvinit')
2846subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002847
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002848install_subdir('factory/etc',
2849 install_dir : factorydir)
2850
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002851install_data('xorg/50-systemd-user.sh',
2852 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01002853install_data('modprobe.d/systemd.conf',
2854 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002855install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002856 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01002857 'NEWS',
2858 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302859 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07002860 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002861 'docs/ENVIRONMENT.md',
Faheel Ahmadeea98402018-10-30 23:01:20 +05302862 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002863 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07002864 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07002865 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002866 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
2867 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002868
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002869meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
2870meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
2871
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002872############################################################
2873
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002874meson_check_help = find_program('tools/meson-check-help.sh')
2875
2876foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002877 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002878 if want_tests != 'false'
2879 test('check-help-' + name,
2880 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002881 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002882 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002883endforeach
2884
2885############################################################
2886
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002887# Enable tests for all supported sanitizers
2888foreach tuple : sanitizers
2889 sanitizer = tuple[0]
2890 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002891
Yu Watanabe7a6397d2018-05-15 20:18:24 +09002892 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002893 prev = ''
2894 foreach p : fuzz_regression_tests
2895 b = p.split('/')[-2]
2896 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002897
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002898 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002899
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002900 if name != prev
2901 if want_tests == 'false'
2902 message('Not compiling @0@ because tests is set to false'.format(name))
2903 elif slow_tests
2904 exe = custom_target(
2905 name,
2906 output : name,
2907 depends : build,
2908 command : [env, 'ln', '-fs',
2909 join_paths(build.full_path(), b),
2910 '@OUTPUT@'],
2911 build_by_default : true)
2912 else
2913 message('Not compiling @0@ because slow-tests is set to false'.format(name))
2914 endif
2915 endif
2916 prev = name
2917
2918 if want_tests != 'false' and slow_tests
2919 test('@0@:@1@:@2@'.format(b, c, sanitizer),
2920 env,
2921 args : [exe.full_path(),
Zbigniew Jędrzejewski-Szmeke6bad672018-08-10 17:15:05 +02002922 join_paths(meson.source_root(), p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002923 endif
2924 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002925 endif
2926endforeach
2927
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01002928
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11002929############################################################
2930
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002931if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002932 all_files = run_command(
2933 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002934 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002935 'ls-files',
2936 ':/*.[ch]'])
2937 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002938
userwithuide85a6902017-08-09 13:41:44 +00002939 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002940 'tags',
userwithuide85a6902017-08-09 13:41:44 +00002941 output : 'tags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002942 command : [env, 'etags', '-o', '@0@/TAGS'.format(meson.source_root())] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00002943 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04002944 'ctags',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002945 command : [env, 'ctags', '-o', '@0@/tags'.format(meson.source_root())] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04002946endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002947
2948if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002949 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04002950 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002951 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002952 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04002953endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002954
2955if git.found()
2956 git_head = run_command(
2957 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002958 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002959 'rev-parse', 'HEAD']).stdout().strip()
2960 git_head_short = run_command(
2961 git,
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002962 ['--git-dir=@0@/.git'.format(meson.source_root()),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002963 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
2964
2965 run_target(
2966 'git-snapshot',
2967 command : ['git', 'archive',
Zbigniew Jędrzejewski-Szmek243e5ce2018-08-10 16:50:07 +02002968 '-o', '@0@/systemd-@1@.tar.gz'.format(meson.source_root(),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04002969 git_head_short),
2970 '--prefix', 'systemd-@0@/'.format(git_head),
2971 'HEAD'])
2972endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002973
2974############################################################
2975
Lennart Poettering51b13862017-12-20 12:51:14 +01002976meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
2977run_target(
2978 'check-api-docs',
2979 depends : [man, libsystemd, libudev],
2980 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
2981
Lennart Poettering0bc7a222018-10-02 09:53:05 +02002982run_target(
2983 'make-index-md',
2984 command : ['sh', '@0@/tools/make-index-md.sh'.format(meson.source_root()), meson.source_root()])
2985
Lennart Poettering51b13862017-12-20 12:51:14 +01002986############################################################
2987
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002988status = [
2989 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
2990
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01002991 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01002992 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09002993 'prefix directory: @0@'.format(prefixdir),
2994 'rootprefix directory: @0@'.format(rootprefixdir),
2995 'sysconf directory: @0@'.format(sysconfdir),
2996 'include directory: @0@'.format(includedir),
2997 'lib directory: @0@'.format(libdir),
2998 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04002999 'SysV init scripts: @0@'.format(sysvinit_path),
3000 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003001 'PAM modules directory: @0@'.format(pamlibdir),
3002 'PAM configuration directory: @0@'.format(pamconfdir),
3003 'RPM macros directory: @0@'.format(rpmmacrosdir),
3004 'modprobe.d directory: @0@'.format(modprobedir),
3005 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3006 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3007 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3008 'bash completions directory: @0@'.format(bashcompletiondir),
3009 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003010 'extra start script: @0@'.format(get_option('rc-local')),
3011 'extra stop script: @0@'.format(get_option('halt-local')),
3012 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3013 get_option('debug-tty')),
3014 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003015 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003016 'maximum system UID: @0@'.format(system_uid_max),
3017 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003018 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3019 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3020 'minimum container UID base: @0@'.format(container_uid_base_min),
3021 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003022 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003023 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003024 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003025 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003026 'nobody user name: @0@'.format(nobody_user),
3027 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003028 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003029 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003030
3031 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003032 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003033 'default cgroup hierarchy: @0@'.format(default_hierarchy),
3034 'default KillUserProcesses setting: @0@'.format(kill_user_processes)]
3035
3036alt_dns_servers = '\n '.join(dns_servers.split(' '))
3037alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3038status += [
3039 'default DNS servers: @0@'.format(alt_dns_servers),
3040 'default NTP servers: @0@'.format(alt_ntp_servers)]
3041
3042alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3043 '@@0@'.format(time_epoch)).stdout().strip()
3044status += [
3045 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3046
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003047status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003048 'static libsystemd: @0@'.format(static_libsystemd),
3049 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003050
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003051# TODO:
3052# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3053# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3054# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3055
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003056if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003057 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003058
3059 if have_gnu_efi
3060 status += [
3061 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
3062 'EFI CC @0@'.format(efi_cc),
Yu Watanabe359b4962017-11-25 20:35:24 +09003063 'EFI lib directory: @0@'.format(efi_libdir),
3064 'EFI lds directory: @0@'.format(efi_ldsdir),
3065 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003066 endif
3067endif
3068
3069found = []
3070missing = []
3071
3072foreach tuple : [
3073 ['libcryptsetup'],
3074 ['PAM'],
3075 ['AUDIT'],
3076 ['IMA'],
3077 ['AppArmor'],
3078 ['SELinux'],
3079 ['SECCOMP'],
3080 ['SMACK'],
3081 ['zlib'],
3082 ['xz'],
3083 ['lz4'],
3084 ['bzip2'],
3085 ['ACL'],
3086 ['gcrypt'],
3087 ['qrencode'],
3088 ['microhttpd'],
3089 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003090 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003091 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003092 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003093 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003094 ['libidn'],
3095 ['libiptc'],
3096 ['elfutils'],
3097 ['binfmt'],
3098 ['vconsole'],
3099 ['quotacheck'],
3100 ['tmpfiles'],
3101 ['environment.d'],
3102 ['sysusers'],
3103 ['firstboot'],
3104 ['randomseed'],
3105 ['backlight'],
3106 ['rfkill'],
3107 ['logind'],
3108 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003109 ['portabled'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003110 ['importd'],
3111 ['hostnamed'],
3112 ['timedated'],
3113 ['timesyncd'],
3114 ['localed'],
3115 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003116 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003117 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3118 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003119 ['coredump'],
3120 ['polkit'],
3121 ['legacy pkla', install_polkit_pkla],
3122 ['efi'],
3123 ['gnu-efi', have_gnu_efi],
3124 ['kmod'],
3125 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003126 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003127 ['blkid'],
3128 ['dbus'],
3129 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003130 ['nss-myhostname'],
3131 ['nss-mymachines'],
3132 ['nss-resolve'],
3133 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003134 ['hwdb'],
3135 ['tpm'],
3136 ['man pages', want_man],
3137 ['html pages', want_html],
3138 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003139 ['SysV compat'],
3140 ['utmp'],
3141 ['ldconfig'],
3142 ['hibernate'],
3143 ['adm group', get_option('adm-group')],
3144 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003145 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003146 ['debug hashmap'],
3147 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003148 ['debug siphash'],
Yu Watanabe20e97dd2018-11-23 00:28:27 +09003149 ['debug udev'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003150 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003151 ['trace logging', conf.get('LOG_TRACE') == 1],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003152 ['link-udev-shared', get_option('link-udev-shared')],
3153 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003154]
3155
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003156 if tuple.length() >= 2
3157 cond = tuple[1]
3158 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003159 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3160 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003161 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003162 endif
3163 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003164 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003165 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003166 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003167 endif
3168endforeach
3169
3170status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003171 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003172 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003173 '',
3174 'disabled features: @0@'.format(', '.join(missing)),
3175 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003176message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003177
3178if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003179 warning('\n' +
3180 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3181 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3182 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003183endif