blob: 209971cc100fa9b423d208f594d9aa7f491d9946 [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',
Zbigniew Jędrzejewski-Szmek384db812020-02-05 09:51:59 +01004 version : '245',
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-Szmek827ca902019-11-10 11:39:15 +010011 'warning_level=2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040012 ],
Yu Watanabe7a6397d2018-05-15 20:18:24 +090013 meson_version : '>= 0.46',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040014 )
15
Zbigniew Jędrzejewski-Szmek384db812020-02-05 09:51:59 +010016libsystemd_version = '0.28.0'
17libudev_version = '1.6.17'
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +020018
Yu Watanabe348b4432018-05-07 18:17:35 +090019# We need the same data in two different formats, ugh!
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040020# Also, for hysterical reasons, we use different variable
21# names, sometimes. Not all variables are included in every
22# set. Ugh, ugh, ugh!
23conf = configuration_data()
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010024conf.set('PROJECT_VERSION', meson.project_version(),
25 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040026
27substs = configuration_data()
Zbigniew Jędrzejewski-Szmeka67c3182018-12-19 11:23:42 +010028substs.set('PROJECT_URL', 'https://www.freedesktop.org/wiki/Software/systemd')
Zbigniew Jędrzejewski-Szmek6ffeca82020-02-28 11:09:16 +010029substs.set('PROJECT_VERSION', meson.project_version(),
30 description : 'Numerical project version (used where a simple number is expected)')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040031
Davide Cavalca1485aac2019-02-27 11:19:07 -050032# This is to be used instead of meson.source_root(), as the latter will return
33# the wrong result when systemd is being built as a meson subproject
34project_source_root = meson.current_source_dir()
Zbigniew Jędrzejewski-Szmeka0b15b42019-06-07 14:41:36 +020035relative_source_path = run_command('realpath',
36 '--relative-to=@0@'.format(meson.current_build_dir()),
37 project_source_root).stdout().strip()
38conf.set_quoted('RELATIVE_SOURCE_PATH', relative_source_path)
Davide Cavalca1485aac2019-02-27 11:19:07 -050039
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020040want_ossfuzz = get_option('oss-fuzz')
41want_libfuzzer = get_option('llvm-fuzz')
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000042if want_ossfuzz + want_libfuzzer > 1
43 error('only one of oss-fuzz or llvm-fuzz can be specified')
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020044endif
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +000045
46skip_deps = want_ossfuzz or want_libfuzzer
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +000047fuzzer_build = want_ossfuzz or want_libfuzzer
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +020048
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040049#####################################################################
50
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040051# Try to install the git pre-commit hook
Zbigniew Jędrzejewski-Szmeke2d612a2020-03-28 09:30:51 +010052add_git_hook_sh = find_program('tools/add-git-hook.sh', required : false)
53if add_git_hook_sh.found()
54 git_hook = run_command(add_git_hook_sh)
55 if git_hook.returncode() == 0
56 message(git_hook.stdout().strip())
57 endif
Zbigniew Jędrzejewski-Szmek003c8872017-07-24 04:41:45 -040058endif
59
60#####################################################################
61
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +010062if get_option('split-usr') == 'auto'
63 split_usr = run_command('test', '-L', '/bin').returncode() != 0
64else
65 split_usr = get_option('split-usr') == 'true'
66endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010067conf.set10('HAVE_SPLIT_USR', split_usr,
68 description : '/usr/bin and /bin directories are separate')
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010069
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010070if get_option('split-bin') == 'auto'
71 split_bin = run_command('test', '-L', '/usr/sbin').returncode() != 0
72else
73 split_bin = get_option('split-bin') == 'true'
74endif
Zbigniew Jędrzejewski-Szmek671f0f82018-03-01 21:48:36 +010075conf.set10('HAVE_SPLIT_BIN', split_bin,
76 description : 'bin and sbin directories are separate')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +010077
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010078rootprefixdir = get_option('rootprefix')
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010079# Unusual rootprefixdir values are used by some distros
80# (see https://github.com/systemd/systemd/pull/7461).
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +010081rootprefix_default = split_usr ? '/' : '/usr'
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +010082if rootprefixdir == ''
83 rootprefixdir = rootprefix_default
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +010084endif
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010085rootprefixdir_noslash = rootprefixdir == '/' ? '' : rootprefixdir
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040086
87sysvinit_path = get_option('sysvinit-path')
88sysvrcnd_path = get_option('sysvrcnd-path')
Yu Watanabe348b4432018-05-07 18:17:35 +090089conf.set10('HAVE_SYSV_COMPAT', sysvinit_path != '' and sysvrcnd_path != '',
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +020090 description : 'SysV init scripts and rcN.d links are supported')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040091
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020092conf.set10('BUMP_PROC_SYS_FS_FILE_MAX', get_option('bump-proc-sys-fs-file-max'))
93conf.set10('BUMP_PROC_SYS_FS_NR_OPEN', get_option('bump-proc-sys-fs-nr-open'))
Lennart Poettering09dad042018-11-15 09:50:42 +010094conf.set('HIGH_RLIMIT_NOFILE', 512*1024)
Lennart Poetteringa8b627a2018-10-11 18:23:26 +020095
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +010096# join_paths ignores the preceding arguments if an absolute component is
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -040097# encountered, so this should canonicalize various paths when they are
98# absolute or relative.
99prefixdir = get_option('prefix')
100if not prefixdir.startswith('/')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400101 error('Prefix is not absolute: "@0@"'.format(prefixdir))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400102endif
103bindir = join_paths(prefixdir, get_option('bindir'))
104libdir = join_paths(prefixdir, get_option('libdir'))
105sysconfdir = join_paths(prefixdir, get_option('sysconfdir'))
106includedir = join_paths(prefixdir, get_option('includedir'))
107datadir = join_paths(prefixdir, get_option('datadir'))
108localstatedir = join_paths('/', get_option('localstatedir'))
109
110rootbindir = join_paths(rootprefixdir, 'bin')
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +0100111rootsbindir = join_paths(rootprefixdir, split_bin ? 'sbin' : 'bin')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400112rootlibexecdir = join_paths(rootprefixdir, 'lib/systemd')
113
114rootlibdir = get_option('rootlibdir')
115if rootlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400116 rootlibdir = join_paths(rootprefixdir, libdir.split('/')[-1])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400117endif
118
119# Dirs of external packages
Benedikt Morbacha95696e2018-08-10 04:59:54 +0200120pkgconfigdatadir = get_option('pkgconfigdatadir') == '' ? join_paths(datadir, 'pkgconfig') : get_option('pkgconfigdatadir')
121pkgconfiglibdir = get_option('pkgconfiglibdir') == '' ? join_paths(libdir, 'pkgconfig') : get_option('pkgconfiglibdir')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400122polkitpolicydir = join_paths(datadir, 'polkit-1/actions')
123polkitrulesdir = join_paths(datadir, 'polkit-1/rules.d')
124polkitpkladir = join_paths(localstatedir, 'lib/polkit-1/localauthority/10-vendor.d')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400125xinitrcdir = join_paths(sysconfdir, 'X11/xinit/xinitrc.d')
Yu Watanabe8a38aac2017-11-23 22:20:22 +0900126rpmmacrosdir = get_option('rpmmacrosdir')
127if rpmmacrosdir != 'no'
128 rpmmacrosdir = join_paths(prefixdir, rpmmacrosdir)
129endif
Michael Biebl02fa0542017-10-21 08:32:50 +0200130modprobedir = join_paths(rootprefixdir, 'lib/modprobe.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400131
132# Our own paths
Michael Bieble17e5ba2017-04-13 10:30:56 -0400133pkgdatadir = join_paths(datadir, 'systemd')
134environmentdir = join_paths(prefixdir, 'lib/environment.d')
135pkgsysconfdir = join_paths(sysconfdir, 'systemd')
136userunitdir = join_paths(prefixdir, 'lib/systemd/user')
137userpresetdir = join_paths(prefixdir, 'lib/systemd/user-preset')
138tmpfilesdir = join_paths(prefixdir, 'lib/tmpfiles.d')
139sysusersdir = join_paths(prefixdir, 'lib/sysusers.d')
140sysctldir = join_paths(prefixdir, 'lib/sysctl.d')
141binfmtdir = join_paths(prefixdir, 'lib/binfmt.d')
142modulesloaddir = join_paths(prefixdir, 'lib/modules-load.d')
143networkdir = join_paths(rootprefixdir, 'lib/systemd/network')
144pkgincludedir = join_paths(includedir, 'systemd')
145systemgeneratordir = join_paths(rootlibexecdir, 'system-generators')
146usergeneratordir = join_paths(prefixdir, 'lib/systemd/user-generators')
147systemenvgeneratordir = join_paths(prefixdir, 'lib/systemd/system-environment-generators')
148userenvgeneratordir = join_paths(prefixdir, 'lib/systemd/user-environment-generators')
149systemshutdowndir = join_paths(rootlibexecdir, 'system-shutdown')
150systemsleepdir = join_paths(rootlibexecdir, 'system-sleep')
151systemunitdir = join_paths(rootprefixdir, 'lib/systemd/system')
152systempresetdir = join_paths(rootprefixdir, 'lib/systemd/system-preset')
153udevlibexecdir = join_paths(rootprefixdir, 'lib/udev')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400154udevrulesdir = join_paths(udevlibexecdir, 'rules.d')
155udevhwdbdir = join_paths(udevlibexecdir, 'hwdb.d')
156catalogdir = join_paths(prefixdir, 'lib/systemd/catalog')
157kernelinstalldir = join_paths(prefixdir, 'lib/kernel/install.d')
158factorydir = join_paths(datadir, 'factory')
Michael Bieble17e5ba2017-04-13 10:30:56 -0400159bootlibdir = join_paths(prefixdir, 'lib/systemd/boot/efi')
160testsdir = join_paths(prefixdir, 'lib/systemd/tests')
161systemdstatedir = join_paths(localstatedir, 'lib/systemd')
162catalogstatedir = join_paths(systemdstatedir, 'catalog')
163randomseeddir = join_paths(localstatedir, 'lib/systemd')
Lennart Poettering61d05782018-04-16 21:41:40 +0200164profiledir = join_paths(rootlibexecdir, 'portable', 'profile')
Zbigniew Jędrzejewski-Szmeke5ea7412019-07-22 14:47:51 +0200165ntpservicelistdir = join_paths(rootprefixdir, 'lib/systemd/ntp-units.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400166
tblume75aaade2018-02-01 22:46:15 +0100167docdir = get_option('docdir')
168if docdir == ''
169 docdir = join_paths(datadir, 'doc/systemd')
170endif
171
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400172dbuspolicydir = get_option('dbuspolicydir')
173if dbuspolicydir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400174 dbuspolicydir = join_paths(datadir, 'dbus-1/system.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400175endif
176
177dbussessionservicedir = get_option('dbussessionservicedir')
178if dbussessionservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400179 dbussessionservicedir = join_paths(datadir, 'dbus-1/services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400180endif
181
182dbussystemservicedir = get_option('dbussystemservicedir')
183if dbussystemservicedir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400184 dbussystemservicedir = join_paths(datadir, 'dbus-1/system-services')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400185endif
186
187pamlibdir = get_option('pamlibdir')
188if pamlibdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400189 pamlibdir = join_paths(rootlibdir, 'security')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400190endif
191
192pamconfdir = get_option('pamconfdir')
193if pamconfdir == ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400194 pamconfdir = join_paths(sysconfdir, 'pam.d')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400195endif
196
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100197memory_accounting_default = get_option('memory-accounting-default')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200198status_unit_format_default = get_option('status-unit-format-default')
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100199
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400200conf.set_quoted('PKGSYSCONFDIR', pkgsysconfdir)
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100201conf.set_quoted('SYSTEM_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'system'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400202conf.set_quoted('SYSTEM_DATA_UNIT_PATH', systemunitdir)
203conf.set_quoted('SYSTEM_SYSVINIT_PATH', sysvinit_path)
204conf.set_quoted('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400205conf.set_quoted('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100206
Zbigniew Jędrzejewski-Szmekf7c54272018-03-02 09:09:29 +0100207conf.set('ANSI_OK_COLOR', 'ANSI_' + get_option('ok-color').underscorify().to_upper())
Alexander F Rødseth96164a32018-03-01 13:12:02 +0100208
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100209conf.set_quoted('USER_CONFIG_UNIT_DIR', join_paths(pkgsysconfdir, 'user'))
210conf.set_quoted('USER_DATA_UNIT_DIR', userunitdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400211conf.set_quoted('CERTIFICATE_ROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400212conf.set_quoted('CATALOG_DATABASE', join_paths(catalogstatedir, 'database'))
213conf.set_quoted('SYSTEMD_CGROUP_AGENT_PATH', join_paths(rootlibexecdir, 'systemd-cgroups-agent'))
214conf.set_quoted('SYSTEMD_BINARY_PATH', join_paths(rootlibexecdir, 'systemd'))
215conf.set_quoted('SYSTEMD_FSCK_PATH', join_paths(rootlibexecdir, 'systemd-fsck'))
Zbigniew Jędrzejewski-Szmekda495a02017-11-21 23:18:05 +0100216conf.set_quoted('SYSTEMD_MAKEFS_PATH', join_paths(rootlibexecdir, 'systemd-makefs'))
Zbigniew Jędrzejewski-Szmek7f2806d2017-11-29 20:02:11 +0100217conf.set_quoted('SYSTEMD_GROWFS_PATH', join_paths(rootlibexecdir, 'systemd-growfs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400218conf.set_quoted('SYSTEMD_SHUTDOWN_BINARY_PATH', join_paths(rootlibexecdir, 'systemd-shutdown'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400219conf.set_quoted('SYSTEMCTL_BINARY_PATH', join_paths(rootbindir, 'systemctl'))
220conf.set_quoted('SYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH', join_paths(rootbindir, 'systemd-tty-ask-password-agent'))
221conf.set_quoted('SYSTEMD_STDIO_BRIDGE_BINARY_PATH', join_paths(bindir, 'systemd-stdio-bridge'))
Zbigniew Jędrzejewski-Szmek74344a12017-11-28 20:00:10 +0100222conf.set_quoted('ROOTPREFIX', rootprefixdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400223conf.set_quoted('RANDOM_SEED_DIR', randomseeddir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400224conf.set_quoted('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
225conf.set_quoted('SYSTEMD_CRYPTSETUP_PATH', join_paths(rootlibexecdir, 'systemd-cryptsetup'))
Zbigniew Jędrzejewski-Szmek96d33e42020-03-24 16:28:26 +0100226conf.set_quoted('SYSTEM_GENERATOR_DIR', systemgeneratordir)
227conf.set_quoted('USER_GENERATOR_DIR', usergeneratordir)
228conf.set_quoted('SYSTEM_ENV_GENERATOR_DIR', systemenvgeneratordir)
229conf.set_quoted('USER_ENV_GENERATOR_DIR', userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400230conf.set_quoted('SYSTEM_SHUTDOWN_PATH', systemshutdowndir)
231conf.set_quoted('SYSTEM_SLEEP_PATH', systemsleepdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400232conf.set_quoted('SYSTEMD_KBD_MODEL_MAP', join_paths(pkgdatadir, 'kbd-model-map'))
233conf.set_quoted('SYSTEMD_LANGUAGE_FALLBACK_MAP', join_paths(pkgdatadir, 'language-fallback-map'))
Filipe Brandenburgere2d41372018-09-11 23:55:02 -0700234conf.set_quoted('SYSTEMD_TEST_DATA', join_paths(testsdir, 'testdata'))
Filipe Brandenburger49cdae62018-09-12 00:23:40 -0700235conf.set_quoted('SYSTEMD_CATALOG_DIR', catalogdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400236conf.set_quoted('UDEVLIBEXECDIR', udevlibexecdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400237conf.set_quoted('POLKIT_AGENT_BINARY_PATH', join_paths(bindir, 'pkttyagent'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400238conf.set_quoted('LIBDIR', libdir)
239conf.set_quoted('ROOTLIBDIR', rootlibdir)
240conf.set_quoted('ROOTLIBEXECDIR', rootlibexecdir)
241conf.set_quoted('BOOTLIBDIR', bootlibdir)
Michael Bieble17e5ba2017-04-13 10:30:56 -0400242conf.set_quoted('SYSTEMD_PULL_PATH', join_paths(rootlibexecdir, 'systemd-pull'))
243conf.set_quoted('SYSTEMD_IMPORT_PATH', join_paths(rootlibexecdir, 'systemd-import'))
Lennart Poettering1d7579c2018-10-10 21:20:08 +0200244conf.set_quoted('SYSTEMD_IMPORT_FS_PATH', join_paths(rootlibexecdir, 'systemd-import-fs'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400245conf.set_quoted('SYSTEMD_EXPORT_PATH', join_paths(rootlibexecdir, 'systemd-export'))
246conf.set_quoted('VENDOR_KEYRING_PATH', join_paths(rootlibexecdir, 'import-pubring.gpg'))
247conf.set_quoted('USER_KEYRING_PATH', join_paths(pkgsysconfdir, 'import-pubring.gpg'))
248conf.set_quoted('DOCUMENT_ROOT', join_paths(pkgdatadir, 'gatewayd'))
Lennart Poettering70a5db52019-07-04 18:35:39 +0200249conf.set_quoted('SYSTEMD_HOMEWORK_PATH', join_paths(rootlibexecdir, 'systemd-homework'))
Lennart Poetteringd093b622019-07-04 18:33:30 +0200250conf.set_quoted('SYSTEMD_USERWORK_PATH', join_paths(rootlibexecdir, 'systemd-userwork'))
Zbigniew Jędrzejewski-Szmek30538ff2018-10-17 14:36:09 +0200251conf.set10('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default)
Michal Koutný7f672e82018-03-09 18:27:13 +0100252conf.set_quoted('MEMORY_ACCOUNTING_DEFAULT_YES_NO', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200253conf.set('STATUS_UNIT_FORMAT_DEFAULT', 'STATUS_UNIT_FORMAT_' + status_unit_format_default.to_upper())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400254
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400255substs.set('prefix', prefixdir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100256substs.set('rootprefix', rootprefixdir)
Zbigniew Jędrzejewski-Szmek23bdba62019-03-05 16:46:52 +0100257substs.set('rootprefix_noslash', rootprefixdir_noslash)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400258substs.set('exec_prefix', prefixdir)
259substs.set('libdir', libdir)
260substs.set('rootlibdir', rootlibdir)
261substs.set('includedir', includedir)
Zbigniew Jędrzejewski-Szmek1c2c7c62018-11-17 15:38:15 +0100262substs.set('sysconfdir', sysconfdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400263substs.set('bindir', bindir)
264substs.set('rootbindir', rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400265substs.set('rootlibexecdir', rootlibexecdir)
266substs.set('systemunitdir', systemunitdir)
267substs.set('userunitdir', userunitdir)
268substs.set('systempresetdir', systempresetdir)
269substs.set('userpresetdir', userpresetdir)
270substs.set('udevhwdbdir', udevhwdbdir)
271substs.set('udevrulesdir', udevrulesdir)
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400272substs.set('udevlibexecdir', udevlibexecdir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200273substs.set('environmentdir', environmentdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400274substs.set('catalogdir', catalogdir)
275substs.set('tmpfilesdir', tmpfilesdir)
276substs.set('sysusersdir', sysusersdir)
277substs.set('sysctldir', sysctldir)
278substs.set('binfmtdir', binfmtdir)
279substs.set('modulesloaddir', modulesloaddir)
Zbigniew Jędrzejewski-Szmek424e80b2018-05-19 17:02:37 +0200280substs.set('modprobedir', modprobedir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400281substs.set('systemgeneratordir', systemgeneratordir)
282substs.set('usergeneratordir', usergeneratordir)
283substs.set('systemenvgeneratordir', systemenvgeneratordir)
284substs.set('userenvgeneratordir', userenvgeneratordir)
285substs.set('systemshutdowndir', systemshutdowndir)
286substs.set('systemsleepdir', systemsleepdir)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400287substs.set('CERTIFICATEROOT', get_option('certificate-root'))
Michael Bieble17e5ba2017-04-13 10:30:56 -0400288substs.set('RANDOM_SEED', join_paths(randomseeddir, 'random-seed'))
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400289substs.set('SYSTEM_SYSVINIT_PATH', sysvinit_path)
290substs.set('SYSTEM_SYSVRCND_PATH', sysvrcnd_path)
291substs.set('RC_LOCAL_SCRIPT_PATH_START', get_option('rc-local'))
Zbigniew Jędrzejewski-Szmek444d5862018-02-15 11:43:08 +0100292substs.set('MEMORY_ACCOUNTING_DEFAULT', memory_accounting_default ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek36cf4502019-06-06 19:22:20 +0200293substs.set('STATUS_UNIT_FORMAT_DEFAULT', status_unit_format_default)
Zbigniew Jędrzejewski-Szmekc02b6ee2018-10-17 10:21:48 +0200294substs.set('HIGH_RLIMIT_NOFILE', conf.get('HIGH_RLIMIT_NOFILE'))
Zbigniew Jędrzejewski-Szmeke9bbff12019-05-09 13:23:50 +0200295substs.set('BUILD_ROOT', meson.current_build_dir())
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400296
297#####################################################################
298
299cc = meson.get_compiler('c')
300pkgconfig = import('pkgconfig')
Zbigniew Jędrzejewski-Szmek6e2afb12017-04-24 21:03:35 -0400301check_compilation_sh = find_program('tools/meson-check-compilation.sh')
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100302meson_build_sh = find_program('tools/meson-build.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400303
Zbigniew Jędrzejewski-Szmekd3da2912018-09-12 11:02:58 +0200304want_tests = get_option('tests')
305slow_tests = want_tests != 'false' and get_option('slow-tests')
306install_tests = get_option('install-tests')
307
James Hilliard46e63a22018-12-27 09:16:20 +0800308if add_languages('cpp', required : fuzzer_build)
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +0200309 # Used only for tests
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100310 cxx = meson.get_compiler('cpp')
311 cxx_cmd = ' '.join(cxx.cmd_array())
Zbigniew Jędrzejewski-Szmek1b2acaa2018-10-09 18:48:09 +0200312else
Zbigniew Jędrzejewski-Szmek9b0ca012018-10-10 11:50:57 +0200313 cxx_cmd = ''
Zbigniew Jędrzejewski-Szmek94e25232017-05-13 13:23:28 -0400314endif
315
Jonathan Rudenberg31e57a32018-01-16 10:25:43 -0500316if want_libfuzzer
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +0200317 fuzzing_engine = meson.get_compiler('cpp').find_library('Fuzzer', required : false)
318 if fuzzing_engine.found()
319 add_project_arguments('-fsanitize-coverage=trace-pc-guard,trace-cmp', language : 'c')
320 elif cc.has_argument('-fsanitize=fuzzer-no-link')
321 add_project_arguments('-fsanitize=fuzzer-no-link', language : 'c')
322 else
323 error('Looks like neither libFuzzer nor -fsanitize=fuzzer-no-link is supported')
324 endif
Zbigniew Jędrzejewski-Szmekc09edc72018-10-10 11:56:45 +0200325elif want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -0500326 fuzzing_engine = meson.get_compiler('cpp').find_library('FuzzingEngine')
327endif
328
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100329# Those generate many false positives, and we do not want to change the code to
330# avoid them.
331basic_disabled_warnings = [
332 '-Wno-unused-parameter',
333 '-Wno-missing-field-initializers',
334 '-Wno-unused-result',
335 '-Wno-format-signedness',
336]
337if get_option('b_ndebug') == 'true'
338 # With asserts disabled with get a bunch of warnings about variables which
339 # are used only in the asserts. This is not useful at all, so let's just silence
340 # those warnings.
341 basic_disabled_warnings += [
342 '-Wno-unused-variable',
343 '-Wno-unused-but-set-variable',
344 ]
345endif
346
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900347possible_cc_flags = [
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900348 '-Werror=undef',
349 '-Wlogical-op',
350 '-Wmissing-include-dirs',
351 '-Wold-style-definition',
352 '-Wpointer-arith',
353 '-Winit-self',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900354 '-Wfloat-equal',
355 '-Wsuggest-attribute=noreturn',
356 '-Werror=missing-prototypes',
357 '-Werror=implicit-function-declaration',
358 '-Werror=missing-declarations',
359 '-Werror=return-type',
360 '-Werror=incompatible-pointer-types',
361 '-Werror=format=2',
362 '-Wstrict-prototypes',
363 '-Wredundant-decls',
364 '-Wmissing-noreturn',
365 '-Wimplicit-fallthrough=5',
366 '-Wshadow',
367 '-Wendif-labels',
368 '-Wstrict-aliasing=2',
369 '-Wwrite-strings',
370 '-Werror=overflow',
Zbigniew Jędrzejewski-Szmekb05ecb82018-06-09 13:12:52 +0200371 '-Werror=shift-count-overflow',
Zbigniew Jędrzejewski-Szmekd28b67d2018-06-11 13:17:43 +0200372 '-Werror=shift-overflow=2',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900373 '-Wdate-time',
374 '-Wnested-externs',
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700375
376 # negative arguments are correctly detected starting with meson 0.46.
Zbigniew Jędrzejewski-Szmekeed33622019-03-07 10:56:15 +0100377 '-Wno-error=#warnings', # clang
378 '-Wno-string-plus-int', # clang
Filipe Brandenburgerbf7efeb2018-09-08 13:55:09 -0700379
380 # work-around for gcc 7.1 turning this on on its own.
381 '-Wno-error=nonnull',
382
383 # Disable -Wmaybe-uninitialized, since it's noisy on gcc 8 with
384 # optimizations enabled, producing essentially false positives.
385 '-Wno-maybe-uninitialized',
386
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900387 '-ffast-math',
388 '-fno-common',
389 '-fdiagnostics-show-option',
390 '-fno-strict-aliasing',
391 '-fvisibility=hidden',
392 '-fstack-protector',
393 '-fstack-protector-strong',
394 '--param=ssp-buffer-size=4',
395]
396
397# --as-needed and --no-undefined are provided by meson by default,
398# run mesonconf to see what is enabled
399possible_link_flags = [
400 '-Wl,-z,relro',
401 '-Wl,-z,now',
Norbert Lange68e70ac2019-09-19 17:49:20 +0200402 '-fstack-protector',
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900403]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400404
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900405if cc.get_id() == 'clang'
406 possible_cc_flags += [
407 '-Wno-typedef-redefinition',
408 '-Wno-gnu-variable-sized-type-not-at-end',
409 ]
410endif
411
412if get_option('buildtype') != 'debug'
413 possible_cc_flags += [
414 '-ffunction-sections',
415 '-fdata-sections',
416 ]
417
418 possible_link_flags += '-Wl,--gc-sections'
419endif
420
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100421add_project_arguments(cc.get_supported_arguments(basic_disabled_warnings), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900422add_project_arguments(cc.get_supported_arguments(possible_cc_flags), language : 'c')
Yu Watanabe7a6397d2018-05-15 20:18:24 +0900423add_project_link_arguments(cc.get_supported_link_arguments(possible_link_flags), language : 'c')
Yu Watanabe30a4ddf2018-05-10 15:30:42 +0900424
Caio Marcelo de Oliveira Filho9e70f2f2018-02-19 01:37:19 -0800425if cc.compiles('''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400426 #include <time.h>
427 #include <inttypes.h>
428 typedef uint64_t usec_t;
429 usec_t now(clockid_t clock);
430 int main(void) {
431 struct timespec now;
432 return 0;
433 }
Fabrice Fontaine38c1c962018-11-29 13:22:08 +0100434''', args: '-Werror=shadow', name : '-Werror=shadow with local shadowing')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400435 add_project_arguments('-Werror=shadow', language : 'c')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400436endif
437
Zbigniew Jędrzejewski-Szmeke9f4f562019-11-10 12:16:41 +0100438if cxx_cmd != ''
439 add_project_arguments(cxx.get_supported_arguments(basic_disabled_warnings), language : 'cpp')
440endif
441
Zbigniew Jędrzejewski-Szmek0e3cc902018-10-11 15:12:41 +0200442cpp = ' '.join(cc.cmd_array()) + ' -E'
Zbigniew Jędrzejewski-Szmek9cc0e6e2017-04-11 10:25:34 -0400443
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200444has_wstringop_truncation = cc.has_argument('-Wstringop-truncation')
445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400446#####################################################################
447# compilation result tests
448
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400449conf.set('_GNU_SOURCE', true)
450conf.set('__SANE_USERSPACE_TYPES__', true)
Zbigniew Jędrzejewski-Szmek6695c202019-05-07 15:10:58 +0200451conf.set10('HAVE_WSTRINGOP_TRUNCATION', has_wstringop_truncation)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400452
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400453conf.set('SIZEOF_DEV_T', cc.sizeof('dev_t', prefix : '#include <sys/types.h>'))
454conf.set('SIZEOF_INO_T', cc.sizeof('ino_t', prefix : '#include <sys/types.h>'))
455conf.set('SIZEOF_TIME_T', cc.sizeof('time_t', prefix : '#include <sys/time.h>'))
456conf.set('SIZEOF_RLIM_T', cc.sizeof('rlim_t', prefix : '#include <sys/resource.h>'))
457
458decl_headers = '''
459#include <uchar.h>
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100460#include <sys/stat.h>
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400461'''
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400462
463foreach decl : ['char16_t',
464 'char32_t',
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100465 'struct statx',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400466 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400467
468 # We get -1 if the size cannot be determined
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200469 have = cc.sizeof(decl, prefix : decl_headers, args : '-D_GNU_SOURCE') > 0
470
471 if decl == 'struct statx'
472 if have
473 want_linux_stat_h = false
474 else
475 have = cc.sizeof(decl,
476 prefix : decl_headers + '#include <linux/stat.h>',
477 args : '-D_GNU_SOURCE') > 0
478 want_linux_stat_h = have
479 endif
480 endif
481
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200482 conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400483endforeach
484
Zbigniew Jędrzejewski-Szmek9c869d02018-07-18 17:26:17 +0200485conf.set10('WANT_LINUX_STAT_H', want_linux_stat_h)
Filipe Brandenburger75720bf2018-07-15 22:43:35 -0700486
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400487foreach ident : ['secure_getenv', '__secure_getenv']
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200488 conf.set10('HAVE_' + ident.to_upper(), cc.has_function(ident))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400489endforeach
490
491foreach ident : [
Lennart Poettering85db59b2017-12-25 12:01:14 +0100492 ['memfd_create', '''#include <sys/mman.h>'''],
Lennart Poettering7b961e42017-12-25 12:35:28 +0100493 ['gettid', '''#include <sys/types.h>
494 #include <unistd.h>'''],
Lennart Poettering3c042ad2017-12-25 12:07:40 +0100495 ['pivot_root', '''#include <stdlib.h>
496 #include <unistd.h>'''], # no known header declares pivot_root
Lennart Poettering85db59b2017-12-25 12:01:14 +0100497 ['name_to_handle_at', '''#include <sys/types.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400498 #include <sys/stat.h>
499 #include <fcntl.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100500 ['setns', '''#include <sched.h>'''],
Lennart Poettering2acfd0f2017-12-25 12:35:43 +0100501 ['renameat2', '''#include <stdio.h>
502 #include <fcntl.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400503 ['kcmp', '''#include <linux/kcmp.h>'''],
504 ['keyctl', '''#include <sys/types.h>
505 #include <keyutils.h>'''],
Lennart Poettering85db59b2017-12-25 12:01:14 +0100506 ['copy_file_range', '''#include <sys/syscall.h>
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400507 #include <unistd.h>'''],
Daniel Mack71e52002016-10-18 17:57:10 +0200508 ['bpf', '''#include <sys/syscall.h>
509 #include <unistd.h>'''],
Lennart Poettering4c2e1b32018-02-20 12:48:33 +0100510 ['statx', '''#include <sys/types.h>
511 #include <sys/stat.h>
512 #include <unistd.h>'''],
Zbigniew Jędrzejewski-Szmekaa484f32018-02-26 21:20:00 +0100513 ['explicit_bzero' , '''#include <string.h>'''],
514 ['reallocarray', '''#include <malloc.h>'''],
Michal Sekletarb070c7c2019-03-12 18:58:26 +0100515 ['set_mempolicy', '''#include <stdlib.h>
516 #include <unistd.h>'''],
517 ['get_mempolicy', '''#include <stdlib.h>
518 #include <unistd.h>'''],
Lennart Poettering5f152f42019-10-25 16:06:06 +0200519 ['pidfd_send_signal', '''#include <stdlib.h>
520 #include <unistd.h>
521 #include <signal.h>
522 #include <sys/wait.h>'''],
523 ['pidfd_open', '''#include <stdlib.h>
524 #include <unistd.h>
525 #include <signal.h>
526 #include <sys/wait.h>'''],
Lennart Poettering5ead4e82019-10-30 16:29:42 +0100527 ['rt_sigqueueinfo', '''#include <stdlib.h>
528 #include <unistd.h>
529 #include <signal.h>
530 #include <sys/wait.h>'''],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400531]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400532
Lennart Poettering85db59b2017-12-25 12:01:14 +0100533 have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200534 conf.set10('HAVE_' + ident[0].to_upper(), have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400535endforeach
536
Lennart Poettering85db59b2017-12-25 12:01:14 +0100537if cc.has_function('getrandom', prefix : '''#include <sys/random.h>''', args : '-D_GNU_SOURCE')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200538 conf.set10('USE_SYS_RANDOM_H', true)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200539 conf.set10('HAVE_GETRANDOM', true)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400540else
541 have = cc.has_function('getrandom', prefix : '''#include <linux/random.h>''')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200542 conf.set10('USE_SYS_RANDOM_H', false)
Zbigniew Jędrzejewski-Szmek4b9545f2017-10-03 10:32:34 +0200543 conf.set10('HAVE_GETRANDOM', have)
Zbigniew Jędrzejewski-Szmek4984c8b2017-04-19 21:20:54 -0400544endif
545
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400546#####################################################################
547
Davide Cavalca1485aac2019-02-27 11:19:07 -0500548vcs_tagger = [project_source_root + '/tools/meson-vcs-tag.sh',
549 project_source_root,
Zbigniew Jędrzejewski-Szmeke1ca7342018-12-19 13:33:09 +0100550 get_option('version-tag'),
Zbigniew Jędrzejewski-Szmek681bd2c2018-12-20 20:35:25 +0100551 meson.project_version()]
552
Louis Taylord1084aa2019-01-21 21:45:36 +0000553version_h = vcs_tag(
554 input : 'src/version/version.h.in',
555 output : 'version.h',
556 command: vcs_tagger)
557
558versiondep = declare_dependency(sources: version_h)
559
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400560sed = find_program('sed')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400561awk = find_program('awk')
Zbigniew Jędrzejewski-Szmekd730e2d2017-04-25 08:49:58 -0400562m4 = find_program('m4')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400563stat = find_program('stat')
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -0400564git = find_program('git', required : false)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +1100565env = find_program('env')
Zbigniew Jędrzejewski-Szmekb1ffacb2018-03-22 08:34:21 +0100566perl = find_program('perl', required : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400567
Davide Cavalca1485aac2019-02-27 11:19:07 -0500568meson_make_symlink = project_source_root + '/tools/meson-make-symlink.sh'
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400569mkdir_p = 'mkdir -p $DESTDIR/@0@'
Zbigniew Jędrzejewski-Szmekd83f4f52017-04-16 12:04:46 -0400570test_efi_create_disk_sh = find_program('test/test-efi-create-disk.sh')
571splash_bmp = files('test/splash.bmp')
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -0400572
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400573# if -Dxxx-path option is found, use that. Otherwise, check in $PATH,
574# /usr/sbin, /sbin, and fall back to the default from middle column.
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500575progs = [['quotaon', '/usr/sbin/quotaon' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400576 ['quotacheck', '/usr/sbin/quotacheck' ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400577 ['kmod', '/usr/bin/kmod' ],
578 ['kexec', '/usr/sbin/kexec' ],
579 ['sulogin', '/usr/sbin/sulogin' ],
580 ['mount', '/usr/bin/mount', 'MOUNT_PATH'],
581 ['umount', '/usr/bin/umount', 'UMOUNT_PATH'],
582 ['loadkeys', '/usr/bin/loadkeys', 'KBD_LOADKEYS'],
583 ['setfont', '/usr/bin/setfont', 'KBD_SETFONT'],
Michael Biebl6db90462019-07-18 01:24:00 +0200584 ['nologin', '/usr/sbin/nologin', ],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400585 ]
586foreach prog : progs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400587 path = get_option(prog[0] + '-path')
588 if path != ''
589 message('Using @1@ for @0@'.format(prog[0], path))
590 else
591 exe = find_program(prog[0],
592 '/usr/sbin/' + prog[0],
593 '/sbin/' + prog[0],
594 required: false)
595 path = exe.found() ? exe.path() : prog[1]
596 endif
597 name = prog.length() > 2 ? prog[2] : prog[0].to_upper()
598 conf.set_quoted(name, path)
599 substs.set(name, path)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400600endforeach
601
Mike Gilbert2fa645f2018-01-04 07:14:20 -0500602conf.set_quoted('TELINIT', get_option('telinit-path'))
603
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400604if run_command('ln', '--relative', '--help').returncode() != 0
Zbigniew Jędrzejewski-Szmekcd001012018-03-09 08:56:23 +0100605 error('ln does not support --relative (added in coreutils 8.16)')
Zbigniew Jędrzejewski-Szmek1276a9f2017-04-18 19:11:54 -0400606endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400607
608############################################################
609
610gperf = find_program('gperf')
611
612gperf_test_format = '''
613#include <string.h>
614const char * in_word_set(const char *, @0@);
615@1@
616'''
617gperf_snippet_format = 'echo foo,bar | @0@ -L ANSI-C'
618gperf_snippet = run_command('sh', '-c', gperf_snippet_format.format(gperf.path()))
619gperf_test = gperf_test_format.format('size_t', gperf_snippet.stdout())
620if cc.compiles(gperf_test)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400621 gperf_len_type = 'size_t'
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400622else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400623 gperf_test = gperf_test_format.format('unsigned', gperf_snippet.stdout())
624 if cc.compiles(gperf_test)
625 gperf_len_type = 'unsigned'
626 else
627 error('unable to determine gperf len type')
628 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400629endif
630message('gperf len type is @0@'.format(gperf_len_type))
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400631conf.set('GPERF_LEN_TYPE', gperf_len_type,
632 description : 'The type of gperf "len" parameter')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400633
634############################################################
635
636if not cc.has_header('sys/capability.h')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400637 error('POSIX caps headers not found')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400638endif
Björn Esser9f555bb2018-01-25 15:30:15 +0100639foreach header : ['crypt.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400640 'linux/memfd.h',
641 'linux/vm_sockets.h',
Zbigniew Jędrzejewski-Szmekaf8786b2017-10-03 12:09:40 +0200642 'sys/auxv.h',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400643 'valgrind/memcheck.h',
644 'valgrind/valgrind.h',
645 ]
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -0400646
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200647 conf.set10('HAVE_' + header.underscorify().to_upper(),
648 cc.has_header(header))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400649endforeach
650
651############################################################
652
653conf.set_quoted('FALLBACK_HOSTNAME', get_option('fallback-hostname'))
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -0400654conf.set10('ENABLE_COMPAT_GATEWAY_HOSTNAME', get_option('compat-gateway-hostname'))
655gateway_hostnames = ['_gateway'] + (conf.get('ENABLE_COMPAT_GATEWAY_HOSTNAME') == 1 ? ['gateway'] : [])
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400656
657default_hierarchy = get_option('default-hierarchy')
658conf.set_quoted('DEFAULT_HIERARCHY_NAME', default_hierarchy,
659 description : 'default cgroup hierarchy as string')
660if default_hierarchy == 'legacy'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400661 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_NONE')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400662elif default_hierarchy == 'hybrid'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400663 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_SYSTEMD')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400664else
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400665 conf.set('DEFAULT_HIERARCHY', 'CGROUP_UNIFIED_ALL')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400666endif
667
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +0100668default_net_naming_scheme = get_option('default-net-naming-scheme')
669conf.set_quoted('DEFAULT_NET_NAMING_SCHEME', default_net_naming_scheme)
670
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400671time_epoch = get_option('time-epoch')
Yu Watanabeac093402018-05-10 16:04:16 +0900672if time_epoch == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400673 NEWS = files('NEWS')
Yu Watanabeac093402018-05-10 16:04:16 +0900674 time_epoch = run_command(stat, '-c', '%Y', NEWS).stdout().to_int()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400675endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400676conf.set('TIME_EPOCH', time_epoch)
677
678system_uid_max = get_option('system-uid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900679if system_uid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400680 system_uid_max = run_command(
681 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800682 '/^\s*SYS_UID_MAX\s+/ { uid=$2 } END { print uid }',
683 '/etc/login.defs').stdout().strip()
684 if system_uid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900685 system_uid_max = 999
686 else
687 system_uid_max = system_uid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800688 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400689endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400690conf.set('SYSTEM_UID_MAX', system_uid_max)
691substs.set('systemuidmax', system_uid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400692
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400693system_gid_max = get_option('system-gid-max')
Yu Watanabeac093402018-05-10 16:04:16 +0900694if system_gid_max == -1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400695 system_gid_max = run_command(
696 awk,
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800697 '/^\s*SYS_GID_MAX\s+/ { gid=$2 } END { print gid }',
698 '/etc/login.defs').stdout().strip()
699 if system_gid_max == ''
Yu Watanabeac093402018-05-10 16:04:16 +0900700 system_gid_max = 999
701 else
702 system_gid_max = system_gid_max.to_int()
Caio Marcelo de Oliveira Filho2f62cf32018-02-18 18:33:16 -0800703 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400704endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400705conf.set('SYSTEM_GID_MAX', system_gid_max)
706substs.set('systemgidmax', system_gid_max)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400707
Yu Watanabeac093402018-05-10 16:04:16 +0900708dynamic_uid_min = get_option('dynamic-uid-min')
709dynamic_uid_max = get_option('dynamic-uid-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100710conf.set('DYNAMIC_UID_MIN', dynamic_uid_min)
711conf.set('DYNAMIC_UID_MAX', dynamic_uid_max)
712substs.set('dynamicuidmin', dynamic_uid_min)
713substs.set('dynamicuidmax', dynamic_uid_max)
714
Yu Watanabeac093402018-05-10 16:04:16 +0900715container_uid_base_min = get_option('container-uid-base-min')
716container_uid_base_max = get_option('container-uid-base-max')
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100717conf.set('CONTAINER_UID_BASE_MIN', container_uid_base_min)
718conf.set('CONTAINER_UID_BASE_MAX', container_uid_base_max)
719substs.set('containeruidbasemin', container_uid_base_min)
720substs.set('containeruidbasemax', container_uid_base_max)
721
Lennart Poetteringafde4572017-12-05 11:00:24 +0100722nobody_user = get_option('nobody-user')
723nobody_group = get_option('nobody-group')
724
Chen Qi2484bff2018-07-23 14:53:09 +0800725if not meson.is_cross_build()
726 getent_result = run_command('getent', 'passwd', '65534')
727 if getent_result.returncode() == 0
728 name = getent_result.stdout().split(':')[0]
729 if name != nobody_user
730 warning('\n' +
731 '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) +
732 'Your build will result in an user table setup that is incompatible with the local system.')
733 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100734 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800735 id_result = run_command('id', '-u', nobody_user)
736 if id_result.returncode() == 0
737 id = id_result.stdout().to_int()
738 if id != 65534
739 warning('\n' +
740 '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) +
741 'Your build will result in an user table setup that is incompatible with the local system.')
742 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100743 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100744
Chen Qi2484bff2018-07-23 14:53:09 +0800745 getent_result = run_command('getent', 'group', '65534')
746 if getent_result.returncode() == 0
747 name = getent_result.stdout().split(':')[0]
748 if name != nobody_group
749 warning('\n' +
750 '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) +
751 'Your build will result in an group table setup that is incompatible with the local system.')
752 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100753 endif
Chen Qi2484bff2018-07-23 14:53:09 +0800754 id_result = run_command('id', '-g', nobody_group)
755 if id_result.returncode() == 0
756 id = id_result.stdout().to_int()
757 if id != 65534
758 warning('\n' +
759 '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) +
760 'Your build will result in an group table setup that is incompatible with the local system.')
761 endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100762 endif
763endif
Yu Watanabe8374cc62017-12-07 17:19:11 +0900764if nobody_user != nobody_group and not (nobody_user == 'nobody' and nobody_group == 'nogroup')
Yu Watanabe8ea9fad2018-05-10 14:50:52 +0900765 warning('\n' +
766 'The configured user name "@0@" and group name "@0@" of the nobody user/group are not equivalent.\n'.format(nobody_user, nobody_group) +
767 'Please re-check that both "nobody-user" and "nobody-group" options are correctly set.')
Yu Watanabe8374cc62017-12-07 17:19:11 +0900768endif
Lennart Poetteringafde4572017-12-05 11:00:24 +0100769
770conf.set_quoted('NOBODY_USER_NAME', nobody_user)
771conf.set_quoted('NOBODY_GROUP_NAME', nobody_group)
Yu Watanabe60712022017-12-07 15:49:16 +0900772substs.set('NOBODY_USER_NAME', nobody_user)
773substs.set('NOBODY_GROUP_NAME', nobody_group)
Lennart Poettering87d5e4f2017-12-02 12:48:31 +0100774
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400775tty_gid = get_option('tty-gid')
776conf.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400777substs.set('TTY_GID', tty_gid)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400778
Ikey Doherty84786b82017-12-03 12:28:23 +0000779# Ensure provided GID argument is numeric, otherwise fallback to default assignment
Yu Watanabeac093402018-05-10 16:04:16 +0900780users_gid = get_option('users-gid')
781substs.set('USERS_GID', users_gid < 0 ? '-' : users_gid)
Ikey Doherty84786b82017-12-03 12:28:23 +0000782
Yu Watanabe348b4432018-05-07 18:17:35 +0900783conf.set10('ENABLE_ADM_GROUP', get_option('adm-group'))
784conf.set10('ENABLE_WHEEL_GROUP', get_option('wheel-group'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400785
Michael Bieblace5e312018-07-13 23:36:13 +0200786dev_kvm_mode = get_option('dev-kvm-mode')
787substs.set('DEV_KVM_MODE', dev_kvm_mode)
788conf.set10('DEV_KVM_UACCESS', dev_kvm_mode != '0666')
Michael Biebl055a0832019-03-13 23:22:26 +0100789group_render_mode = get_option('group-render-mode')
790substs.set('GROUP_RENDER_MODE', group_render_mode)
791conf.set10('GROUP_RENDER_UACCESS', group_render_mode != '0666')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400792
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400793kill_user_processes = get_option('default-kill-user-processes')
794conf.set10('KILL_USER_PROCESSES', kill_user_processes)
Michal Koutnýc7f7e852018-03-09 16:40:41 +0100795conf.set_quoted('KILL_USER_PROCESSES_YES_NO', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek2a4c1562017-04-12 19:54:33 -0400796substs.set('KILL_USER_PROCESSES', kill_user_processes ? 'yes' : 'no')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400797
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400798dns_servers = get_option('dns-servers')
799conf.set_quoted('DNS_SERVERS', dns_servers)
800substs.set('DNS_SERVERS', dns_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400801
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -0400802ntp_servers = get_option('ntp-servers')
803conf.set_quoted('NTP_SERVERS', ntp_servers)
804substs.set('NTP_SERVERS', ntp_servers)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400805
Dave Reisner8ca9e922018-12-28 07:38:36 -0500806default_locale = get_option('default-locale')
Yu Watanabe03475e22018-12-29 22:00:07 +0900807if default_locale == ''
James Hilliard50f2fc72019-01-05 11:28:59 +0800808 if not meson.is_cross_build()
809 choose_default_locale_sh = find_program('tools/choose-default-locale.sh')
810 default_locale = run_command(choose_default_locale_sh).stdout().strip()
811 else
812 default_locale = 'C.UTF-8'
813 endif
Yu Watanabe03475e22018-12-29 22:00:07 +0900814endif
Dave Reisner8ca9e922018-12-28 07:38:36 -0500815conf.set_quoted('SYSTEMD_DEFAULT_LOCALE', default_locale)
816
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400817conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
818
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200819service_watchdog = get_option('service-watchdog')
Anita Zhang7bc9ea52019-10-25 15:46:21 -0700820watchdog_value = service_watchdog == '' ? '' : 'WatchdogSec=' + service_watchdog
821substs.set('SERVICE_WATCHDOG', watchdog_value)
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +0200822
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400823substs.set('SUSHELL', get_option('debug-shell'))
824substs.set('DEBUGTTY', get_option('debug-tty'))
Jan Synacek93912e82019-04-25 12:19:16 +0200825conf.set_quoted('DEBUGTTY', get_option('debug-tty'))
Zbigniew Jędrzejewski-Szmek3131bfe2017-04-10 19:06:45 -0400826
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200827enable_debug_hashmap = false
828enable_debug_mmap_cache = false
Yu Watanabed6601492018-11-23 00:36:35 +0900829enable_debug_siphash = false
Zbigniew Jędrzejewski-Szmek8f6b4422018-08-19 19:11:30 +0200830foreach name : get_option('debug-extra')
Yu Watanabead7aa762018-05-02 13:56:28 +0900831 if name == 'hashmap'
832 enable_debug_hashmap = true
833 elif name == 'mmap-cache'
834 enable_debug_mmap_cache = true
Yu Watanabed6601492018-11-23 00:36:35 +0900835 elif name == 'siphash'
836 enable_debug_siphash = true
Yu Watanabead7aa762018-05-02 13:56:28 +0900837 else
838 message('unknown debug option "@0@", ignoring'.format(name))
839 endif
840endforeach
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200841conf.set10('ENABLE_DEBUG_HASHMAP', enable_debug_hashmap)
842conf.set10('ENABLE_DEBUG_MMAP_CACHE', enable_debug_mmap_cache)
Yu Watanabed6601492018-11-23 00:36:35 +0900843conf.set10('ENABLE_DEBUG_SIPHASH', enable_debug_siphash)
Zbigniew Jędrzejewski-Szmek671677d2017-04-27 20:51:34 -0400844
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200845conf.set10('VALGRIND', get_option('valgrind'))
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +0200846conf.set10('LOG_TRACE', get_option('log-trace'))
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +0200847
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100848default_user_path = get_option('user-path')
849if default_user_path != ''
850 conf.set_quoted('DEFAULT_USER_PATH', default_user_path)
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100851 default_user_path_display = default_user_path
852else
853 # meson 0.49 fails when ?: is used in .format()
854 default_user_path_display = '(same as system services)'
Zbigniew Jędrzejewski-Szmek3602ca62019-11-12 15:38:19 +0100855endif
856
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +0100857
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400858#####################################################################
859
860threads = dependency('threads')
861librt = cc.find_library('rt')
862libm = cc.find_library('m')
863libdl = cc.find_library('dl')
864libcrypt = cc.find_library('crypt')
865
Zbigniew Jędrzejewski-Szmek1800cc82017-04-27 01:30:30 -0400866libcap = dependency('libcap', required : false)
867if not libcap.found()
868 # Compat with Ubuntu 14.04 which ships libcap w/o .pc file
869 libcap = cc.find_library('cap')
870endif
871
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400872libmount = dependency('mount',
Zbigniew Jędrzejewski-Szmekc0b4b0f2018-03-09 14:58:47 +0100873 version : fuzzer_build ? '>= 0' : '>= 2.30')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400874
Lennart Poetteringe594a3b2019-12-10 21:31:41 +0100875want_libfdisk = get_option('fdisk')
876if want_libfdisk != 'false' and not skip_deps
877 libfdisk = dependency('fdisk',
878 required : want_libfdisk == 'true')
879 have = libfdisk.found()
880else
881 have = false
882 libfdisk = []
883endif
884conf.set10('HAVE_LIBFDISK', have)
885
Lennart Poettering70a5db52019-07-04 18:35:39 +0200886want_pwquality = get_option('pwquality')
887if want_pwquality != 'false' and not skip_deps
888 libpwquality = dependency('pwquality', required : want_pwquality == 'true')
889 have = libpwquality.found()
890else
891 have = false
892 libpwquality = []
893endif
894conf.set10('HAVE_PWQUALITY', have)
895
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400896want_seccomp = get_option('seccomp')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000897if want_seccomp != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400898 libseccomp = dependency('libseccomp',
Zbigniew Jędrzejewski-Szmek9f0e9c02017-04-27 10:05:18 -0400899 version : '>= 2.3.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400900 required : want_seccomp == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200901 have = libseccomp.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400902else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200903 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400904 libseccomp = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400905endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200906conf.set10('HAVE_SECCOMP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400907
908want_selinux = get_option('selinux')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000909if want_selinux != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400910 libselinux = dependency('libselinux',
911 version : '>= 2.1.9',
912 required : want_selinux == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200913 have = libselinux.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400914else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200915 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400916 libselinux = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400917endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200918conf.set10('HAVE_SELINUX', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400919
920want_apparmor = get_option('apparmor')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000921if want_apparmor != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400922 libapparmor = dependency('libapparmor',
923 required : want_apparmor == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200924 have = libapparmor.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400925else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200926 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400927 libapparmor = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400928endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200929conf.set10('HAVE_APPARMOR', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400930
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400931smack_run_label = get_option('smack-run-label')
932if smack_run_label != ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400933 conf.set_quoted('SMACK_RUN_LABEL', smack_run_label)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400934endif
935
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400936want_polkit = get_option('polkit')
937install_polkit = false
938install_polkit_pkla = false
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000939if want_polkit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400940 install_polkit = true
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400941
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400942 libpolkit = dependency('polkit-gobject-1',
943 required : false)
944 if libpolkit.found() and libpolkit.version().version_compare('< 0.106')
945 message('Old polkit detected, will install pkla files')
946 install_polkit_pkla = true
947 endif
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400948endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200949conf.set10('ENABLE_POLKIT', install_polkit)
Zbigniew Jędrzejewski-Szmek3ca0cb72017-04-12 19:09:26 -0400950
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400951want_acl = get_option('acl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000952if want_acl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400953 libacl = cc.find_library('acl', required : want_acl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200954 have = libacl.found()
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400955else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200956 have = false
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400957 libacl = []
958endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200959conf.set10('HAVE_ACL', have)
Zbigniew Jędrzejewski-Szmek36f03872017-04-21 13:53:59 -0400960
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400961want_audit = get_option('audit')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000962if want_audit != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400963 libaudit = dependency('audit', required : want_audit == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200964 have = libaudit.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400965else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200966 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400967 libaudit = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400968endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200969conf.set10('HAVE_AUDIT', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400970
971want_blkid = get_option('blkid')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000972if want_blkid != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400973 libblkid = dependency('blkid', required : want_blkid == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200974 have = libblkid.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400975else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200976 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400977 libblkid = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400978endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200979conf.set10('HAVE_BLKID', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400980
981want_kmod = get_option('kmod')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000982if want_kmod != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400983 libkmod = dependency('libkmod',
984 version : '>= 15',
985 required : want_kmod == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200986 have = libkmod.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400987else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200988 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400989 libkmod = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400990endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200991conf.set10('HAVE_KMOD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400992
993want_pam = get_option('pam')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +0000994if want_pam != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -0400995 libpam = cc.find_library('pam', required : want_pam == 'true')
996 libpam_misc = cc.find_library('pam_misc', required : want_pam == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200997 have = libpam.found() and libpam_misc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -0400998else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +0200999 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001000 libpam = []
1001 libpam_misc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001002endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001003conf.set10('HAVE_PAM', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001004
1005want_microhttpd = get_option('microhttpd')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001006if want_microhttpd != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001007 libmicrohttpd = dependency('libmicrohttpd',
1008 version : '>= 0.9.33',
1009 required : want_microhttpd == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001010 have = libmicrohttpd.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001011else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001012 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001013 libmicrohttpd = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001014endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001015conf.set10('HAVE_MICROHTTPD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001016
1017want_libcryptsetup = get_option('libcryptsetup')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001018if want_libcryptsetup != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001019 libcryptsetup = dependency('libcryptsetup',
Jay Strictd90874b2019-09-26 15:54:29 +02001020 version : '>= 2.0.1',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001021 required : want_libcryptsetup == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001022 have = libcryptsetup.found()
Lennart Poettering70a5db52019-07-04 18:35:39 +02001023
1024 conf.set10('HAVE_CRYPT_SET_METADATA_SIZE',
1025 have and cc.has_function('crypt_set_metadata_size', dependencies : libcryptsetup))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001026else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001027 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001028 libcryptsetup = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001029endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001030conf.set10('HAVE_LIBCRYPTSETUP', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001031
1032want_libcurl = get_option('libcurl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001033if want_libcurl != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001034 libcurl = dependency('libcurl',
1035 version : '>= 7.32.0',
1036 required : want_libcurl == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001037 have = libcurl.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001038else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001039 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001040 libcurl = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001041endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001042conf.set10('HAVE_LIBCURL', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001043
1044want_libidn = get_option('libidn')
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04001045want_libidn2 = get_option('libidn2')
1046if want_libidn == 'true' and want_libidn2 == 'true'
1047 error('libidn and libidn2 cannot be requested simultaneously')
1048endif
1049
Yu Watanabe1b931392019-06-29 03:13:30 +09001050if want_libidn2 != 'false' and want_libidn != 'true' and not skip_deps
Zbigniew Jędrzejewski-Szmek7f7ab222017-07-12 03:25:59 -04001051 libidn = dependency('libidn2',
1052 required : want_libidn2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001053 have = libidn.found()
1054else
1055 have = false
Yu Watanabe1b931392019-06-29 03:13:30 +09001056 libidn = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001057endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001058conf.set10('HAVE_LIBIDN2', have)
Yu Watanabe1b931392019-06-29 03:13:30 +09001059if not have and want_libidn != 'false' and not skip_deps
1060 # libidn is used for both libidn and libidn2 objects
1061 libidn = dependency('libidn',
1062 required : want_libidn == 'true')
1063 have = libidn.found()
1064else
1065 have = false
1066endif
1067conf.set10('HAVE_LIBIDN', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001068
1069want_libiptc = get_option('libiptc')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001070if want_libiptc != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001071 libiptc = dependency('libiptc',
1072 required : want_libiptc == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001073 have = libiptc.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001074else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001075 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001076 libiptc = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001077endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001078conf.set10('HAVE_LIBIPTC', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001079
1080want_qrencode = get_option('qrencode')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001081if want_qrencode != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001082 libqrencode = dependency('libqrencode',
1083 required : want_qrencode == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001084 have = libqrencode.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001085else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001086 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001087 libqrencode = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001088endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001089conf.set10('HAVE_QRENCODE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001090
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001091want_gcrypt = get_option('gcrypt')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001092if want_gcrypt != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001093 libgcrypt = cc.find_library('gcrypt', required : want_gcrypt == 'true')
1094 libgpg_error = cc.find_library('gpg-error', required : want_gcrypt == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001095 have = libgcrypt.found() and libgpg_error.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001096else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001097 have = false
1098endif
1099if not have
1100 # link to neither of the libs if one is not found
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001101 libgcrypt = []
1102 libgpg_error = []
1103endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001104conf.set10('HAVE_GCRYPT', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001105
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001106want_gnutls = get_option('gnutls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001107if want_gnutls != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001108 libgnutls = dependency('gnutls',
1109 version : '>= 3.1.4',
1110 required : want_gnutls == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001111 have = libgnutls.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001112else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001113 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001114 libgnutls = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001115endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001116conf.set10('HAVE_GNUTLS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001117
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001118want_openssl = get_option('openssl')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001119if want_openssl != 'false' and not skip_deps
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001120 libopenssl = dependency('openssl',
1121 version : '>= 1.1.0',
1122 required : want_openssl == 'true')
1123 have = libopenssl.found()
1124else
1125 have = false
1126 libopenssl = []
1127endif
1128conf.set10('HAVE_OPENSSL', have)
1129
Lennart Poettering839fddb2019-11-05 11:49:27 +01001130want_p11kit = get_option('p11kit')
1131if want_p11kit != 'false' and not skip_deps
1132 libp11kit = dependency('p11-kit-1',
1133 version : '>= 0.23.3',
1134 required : want_p11kit == 'true')
1135 have = libp11kit.found()
1136else
1137 have = false
1138 libp11kit = []
1139endif
1140conf.set10('HAVE_P11KIT', have)
1141
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001142want_elfutils = get_option('elfutils')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001143if want_elfutils != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001144 libdw = dependency('libdw',
1145 required : want_elfutils == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001146 have = libdw.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001147else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001148 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001149 libdw = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001150endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001151conf.set10('HAVE_ELFUTILS', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001152
1153want_zlib = get_option('zlib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001154if want_zlib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001155 libz = dependency('zlib',
1156 required : want_zlib == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001157 have = libz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001158else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001159 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001160 libz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001161endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001162conf.set10('HAVE_ZLIB', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001163
1164want_bzip2 = get_option('bzip2')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001165if want_bzip2 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001166 libbzip2 = cc.find_library('bz2',
1167 required : want_bzip2 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001168 have = libbzip2.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001169else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001170 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001171 libbzip2 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001172endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001173conf.set10('HAVE_BZIP2', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001174
1175want_xz = get_option('xz')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001176if want_xz != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001177 libxz = dependency('liblzma',
1178 required : want_xz == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001179 have = libxz.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001180else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001181 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001182 libxz = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001183endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001184conf.set10('HAVE_XZ', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001185
1186want_lz4 = get_option('lz4')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001187if want_lz4 != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001188 liblz4 = dependency('liblz4',
Zbigniew Jędrzejewski-Szmeke0a1d4b2018-10-29 18:32:51 +01001189 version : '>= 1.3.0',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001190 required : want_lz4 == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001191 have = liblz4.found()
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001192else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001193 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001194 liblz4 = []
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001195endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001196conf.set10('HAVE_LZ4', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001197
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001198want_xkbcommon = get_option('xkbcommon')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001199if want_xkbcommon != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001200 libxkbcommon = dependency('xkbcommon',
1201 version : '>= 0.3.0',
1202 required : want_xkbcommon == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001203 have = libxkbcommon.found()
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001204else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001205 have = false
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001206 libxkbcommon = []
1207endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001208conf.set10('HAVE_XKBCOMMON', have)
Zbigniew Jędrzejewski-Szmeka44fb602017-07-26 14:08:46 -04001209
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01001210want_pcre2 = get_option('pcre2')
1211if want_pcre2 != 'false'
1212 libpcre2 = dependency('libpcre2-8',
1213 required : want_pcre2 == 'true')
1214 have = libpcre2.found()
1215else
1216 have = false
1217 libpcre2 = []
1218endif
1219conf.set10('HAVE_PCRE2', have)
1220
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001221want_glib = get_option('glib')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001222if want_glib != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001223 libglib = dependency('glib-2.0',
1224 version : '>= 2.22.0',
1225 required : want_glib == 'true')
1226 libgobject = dependency('gobject-2.0',
1227 version : '>= 2.22.0',
1228 required : want_glib == 'true')
1229 libgio = dependency('gio-2.0',
1230 required : want_glib == 'true')
Zbigniew Jędrzejewski-Szmek2c201c22017-04-27 21:13:08 -04001231 have = libglib.found() and libgobject.found() and libgio.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001232else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001233 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001234 libglib = []
1235 libgobject = []
1236 libgio = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001237endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001238conf.set10('HAVE_GLIB', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001239
1240want_dbus = get_option('dbus')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001241if want_dbus != 'false' and not skip_deps
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001242 libdbus = dependency('dbus-1',
1243 version : '>= 1.3.2',
1244 required : want_dbus == 'true')
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001245 have = libdbus.found()
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001246else
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001247 have = false
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001248 libdbus = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001249endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001250conf.set10('HAVE_DBUS', have)
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001251
Yu Watanabe42303dc2017-06-18 05:22:32 +09001252default_dnssec = get_option('default-dnssec')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001253if skip_deps
Jonathan Rudenbergb4081f32018-01-15 18:27:37 -05001254 default_dnssec = 'no'
1255endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001256if default_dnssec != 'no' and conf.get('HAVE_GCRYPT') == 0
Yu Watanabe42303dc2017-06-18 05:22:32 +09001257 message('default-dnssec cannot be set to yes or allow-downgrade when gcrypt is disabled. Setting default-dnssec to no.')
1258 default_dnssec = 'no'
1259endif
1260conf.set('DEFAULT_DNSSEC_MODE',
1261 'DNSSEC_' + default_dnssec.underscorify().to_upper())
1262substs.set('DEFAULT_DNSSEC_MODE', default_dnssec)
1263
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001264dns_over_tls = get_option('dns-over-tls')
1265if dns_over_tls != 'false'
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001266 if dns_over_tls == 'openssl'
1267 have_gnutls = false
1268 else
Iwan Timmer38e053c2019-10-29 20:26:05 +01001269 have_gnutls = (conf.get('HAVE_GNUTLS') == 1 and libgnutls.version().version_compare('>= 3.6.0'))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001270 if dns_over_tls == 'gnutls' and not have_gnutls
1271 error('DNS-over-TLS support was requested with gnutls, but dependencies are not available')
1272 endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001273 endif
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001274 if dns_over_tls == 'gnutls' or have_gnutls
1275 have_openssl = false
1276 else
1277 have_openssl = conf.get('HAVE_OPENSSL') == 1
1278 if dns_over_tls != 'auto' and not have_openssl
1279 str = dns_over_tls == 'openssl' ? ' with openssl' : ''
Yu Watanabeb349bc52019-06-17 10:22:54 +09001280 error('DNS-over-TLS support was requested@0@, but dependencies are not available'.format(str))
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001281 endif
1282 endif
1283 have = have_gnutls or have_openssl
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001284else
Michael Olbrichbe5536a2018-11-11 11:30:53 +01001285 have = false
1286 have_gnutls = false
1287 have_openssl = false
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001288endif
1289conf.set10('ENABLE_DNS_OVER_TLS', have)
Iwan Timmer096cbdc2018-07-26 22:47:50 +01001290conf.set10('DNS_OVER_TLS_USE_GNUTLS', have_gnutls)
1291conf.set10('DNS_OVER_TLS_USE_OPENSSL', have_openssl)
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001292
Iwan Timmerc9299be2018-06-13 20:26:24 +02001293default_dns_over_tls = get_option('default-dns-over-tls')
Evgeny Vereshchagin87ac55a2019-05-05 19:28:42 +00001294if skip_deps
Iwan Timmerc9299be2018-06-13 20:26:24 +02001295 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001296endif
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001297if default_dns_over_tls != 'no' and conf.get('ENABLE_DNS_OVER_TLS') == 0
Iwan Timmer4310bfc2019-02-18 20:41:46 +01001298 message('default-dns-over-tls cannot be enabled or set to opportunistic when DNS-over-TLS support is disabled. Setting default-dns-over-tls to no.')
Iwan Timmerc9299be2018-06-13 20:26:24 +02001299 default_dns_over_tls = 'no'
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001300endif
Iwan Timmerc9299be2018-06-13 20:26:24 +02001301conf.set('DEFAULT_DNS_OVER_TLS_MODE',
1302 'DNS_OVER_TLS_' + default_dns_over_tls.underscorify().to_upper())
1303substs.set('DEFAULT_DNS_OVER_TLS_MODE', default_dns_over_tls)
Iwan Timmer5d67a7a2018-04-27 17:50:38 +02001304
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02001305default_mdns = get_option('default-mdns')
1306conf.set('DEFAULT_MDNS_MODE',
1307 'RESOLVE_SUPPORT_' + default_mdns.to_upper())
1308substs.set('DEFAULT_MDNS_MODE', default_mdns)
1309
1310default_llmnr = get_option('default-llmnr')
1311conf.set('DEFAULT_LLMNR_MODE',
1312 'RESOLVE_SUPPORT_' + default_llmnr.to_upper())
1313substs.set('DEFAULT_LLMNR_MODE', default_llmnr)
1314
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001315want_repart = get_option('repart')
1316if want_repart != 'false'
1317 have = (conf.get('HAVE_OPENSSL') == 1 and
1318 conf.get('HAVE_LIBFDISK') == 1)
1319 if want_repart == 'true' and not have
1320 error('repart support was requested, but dependencies are not available')
1321 endif
1322else
1323 have = false
1324endif
1325conf.set10('ENABLE_REPART', have)
1326
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001327want_importd = get_option('importd')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001328if want_importd != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001329 have = (conf.get('HAVE_LIBCURL') == 1 and
1330 conf.get('HAVE_ZLIB') == 1 and
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001331 conf.get('HAVE_XZ') == 1 and
1332 conf.get('HAVE_GCRYPT') == 1)
1333 if want_importd == 'true' and not have
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001334 error('importd support was requested, but dependencies are not available')
1335 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001336else
1337 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001338endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001339conf.set10('ENABLE_IMPORTD', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001340
Lennart Poettering70a5db52019-07-04 18:35:39 +02001341want_homed = get_option('homed')
1342if want_homed != 'false'
1343 have = (conf.get('HAVE_OPENSSL') == 1 and
1344 conf.get('HAVE_LIBFDISK') == 1 and
1345 conf.get('HAVE_LIBCRYPTSETUP') == 1)
1346 if want_homed == 'true' and not have
1347 error('homed support was requested, but dependencies are not available')
1348 endif
1349else
1350 have = false
1351endif
1352conf.set10('ENABLE_HOMED', have)
1353
Yu Watanabeaf06ddf2020-02-01 11:01:41 +09001354have = have and conf.get('HAVE_PAM') == 1
1355conf.set10('ENABLE_PAM_HOME', have)
1356
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001357want_remote = get_option('remote')
Zbigniew Jędrzejewski-Szmek4390be32017-04-13 20:30:07 -04001358if want_remote != 'false'
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001359 have_deps = [conf.get('HAVE_MICROHTTPD') == 1,
1360 conf.get('HAVE_LIBCURL') == 1]
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001361 # sd-j-remote requires µhttpd, and sd-j-upload requires libcurl, so
1362 # it's possible to build one without the other. Complain only if
Ben Boeckel5238e952019-04-26 20:22:40 -04001363 # support was explicitly requested. The auxiliary files like sysusers
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001364 # config should be installed when any of the programs are built.
1365 if want_remote == 'true' and not (have_deps[0] and have_deps[1])
1366 error('remote support was requested, but dependencies are not available')
1367 endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001368 have = have_deps[0] or have_deps[1]
1369else
1370 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001371endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001372conf.set10('ENABLE_REMOTE', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001373
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001374foreach term : ['utmp',
1375 'hibernate',
1376 'environment-d',
1377 'binfmt',
1378 'coredump',
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001379 'pstore',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001380 'resolve',
1381 'logind',
1382 'hostnamed',
1383 'localed',
1384 'machined',
Lennart Poettering61d05782018-04-16 21:41:40 +02001385 'portabled',
Lennart Poetteringd093b622019-07-04 18:33:30 +02001386 'userdb',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001387 'networkd',
1388 'timedated',
1389 'timesyncd',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001390 'firstboot',
1391 'randomseed',
1392 'backlight',
1393 'vconsole',
1394 'quotacheck',
1395 'sysusers',
1396 'tmpfiles',
1397 'hwdb',
1398 'rfkill',
1399 'ldconfig',
1400 'efi',
1401 'tpm',
1402 'ima',
1403 'smack',
1404 'gshadow',
1405 'idn',
Yu Watanabe08540a92018-07-18 09:25:57 +09001406 'nss-myhostname',
Zbigniew Jędrzejewski-Szmeka9149d82017-10-03 13:15:27 +02001407 'nss-systemd']
1408 have = get_option(term)
1409 name = 'ENABLE_' + term.underscorify().to_upper()
1410 conf.set10(name, have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001411endforeach
1412
Yu Watanabe08540a92018-07-18 09:25:57 +09001413foreach tuple : [['nss-mymachines', 'machined'],
1414 ['nss-resolve', 'resolve']]
1415 want = get_option(tuple[0])
1416 if want != 'false'
1417 have = get_option(tuple[1])
1418 if want == 'true' and not have
1419 error('@0@ is requested but @1@ is disabled'.format(tuple[0], tuple[1]))
1420 endif
1421 else
1422 have = false
1423 endif
1424 name = 'ENABLE_' + tuple[0].underscorify().to_upper()
1425 conf.set10(name, have)
1426endforeach
1427
1428enable_nss = false
1429foreach term : ['ENABLE_NSS_MYHOSTNAME',
1430 'ENABLE_NSS_MYMACHINES',
1431 'ENABLE_NSS_RESOLVE',
1432 'ENABLE_NSS_SYSTEMD']
1433 if conf.get(term) == 1
1434 enable_nss = true
1435 endif
1436endforeach
1437conf.set10('ENABLE_NSS', enable_nss)
1438
Yu Watanabe348b4432018-05-07 18:17:35 +09001439conf.set10('ENABLE_TIMEDATECTL', get_option('timedated') or get_option('timesyncd'))
Yu Watanabe6129ec82018-05-03 18:07:43 +09001440
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001441tests = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001442fuzzers = []
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001443
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11001444conf.set10('SYSTEMD_SLOW_TESTS_DEFAULT', slow_tests)
Zbigniew Jędrzejewski-Szmek00d82c82017-07-12 21:25:17 +00001445
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001446#####################################################################
1447
1448if get_option('efi')
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001449 efi_arch = host_machine.cpu_family()
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001450
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001451 if efi_arch == 'x86'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001452 EFI_MACHINE_TYPE_NAME = 'ia32'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001453 gnu_efi_arch = 'ia32'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001454 elif efi_arch == 'x86_64'
1455 EFI_MACHINE_TYPE_NAME = 'x64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001456 gnu_efi_arch = 'x86_64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001457 elif efi_arch == 'arm'
1458 EFI_MACHINE_TYPE_NAME = 'arm'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001459 gnu_efi_arch = 'arm'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001460 elif efi_arch == 'aarch64'
1461 EFI_MACHINE_TYPE_NAME = 'aa64'
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001462 gnu_efi_arch = 'aarch64'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001463 else
1464 EFI_MACHINE_TYPE_NAME = ''
Zbigniew Jędrzejewski-Szmek6800fe72017-04-19 22:57:52 -04001465 gnu_efi_arch = ''
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001466 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001467
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001468 have = true
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001469 conf.set_quoted('EFI_MACHINE_TYPE_NAME', EFI_MACHINE_TYPE_NAME)
Zbigniew Jędrzejewski-Szmek80c6fce2017-04-24 19:28:04 -04001470
Yu Watanabeac093402018-05-10 16:04:16 +09001471 conf.set('SD_TPM_PCR', get_option('tpm-pcrindex'))
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001472else
1473 have = false
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001474endif
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001475conf.set10('ENABLE_EFI', have)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001476
1477#####################################################################
1478
1479config_h = configure_file(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001480 output : 'config.h',
1481 configuration : conf)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001482
Yu Watanabe348b4432018-05-07 18:17:35 +09001483meson_apply_m4 = find_program('tools/meson-apply-m4.sh')
1484
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001485includes = include_directories('src/basic',
Zbigniew Jędrzejewski-Szmek91b08bb2019-07-02 13:01:23 +02001486 'src/boot',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001487 'src/shared',
1488 'src/systemd',
1489 'src/journal',
Zbigniew Jędrzejewski-Szmeka38f7fe2018-05-16 12:05:07 +02001490 'src/journal-remote',
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02001491 'src/nspawn',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001492 'src/resolve',
1493 'src/timesync',
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05001494 'src/time-wait-sync',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001495 'src/login',
1496 'src/udev',
1497 'src/libudev',
1498 'src/core',
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001499 'src/shutdown',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001500 'src/libsystemd/sd-bus',
1501 'src/libsystemd/sd-device',
Yu Watanabea137a1c2018-11-16 17:30:42 +09001502 'src/libsystemd/sd-event',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001503 'src/libsystemd/sd-hwdb',
1504 'src/libsystemd/sd-id128',
1505 'src/libsystemd/sd-netlink',
1506 'src/libsystemd/sd-network',
Yu Watanabeceb26cd2018-12-10 15:45:48 +09001507 'src/libsystemd/sd-resolve',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001508 'src/libsystemd-network',
Zbigniew Jędrzejewski-Szmek2d4ceca2017-12-19 14:19:46 +01001509 '.')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001510
1511add_project_arguments('-include', 'config.h', language : 'c')
1512
Yu Watanabe6ec439f2018-11-28 20:19:41 +09001513generate_gperfs = find_program('tools/generate-gperfs.py')
1514
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001515subdir('po')
1516subdir('catalog')
1517subdir('src/systemd')
1518subdir('src/basic')
1519subdir('src/libsystemd')
1520subdir('src/libsystemd-network')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001521subdir('src/journal')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001522subdir('src/login')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001523
1524libjournal_core = static_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001525 'journal-core',
1526 libjournal_core_sources,
1527 journald_gperf_c,
1528 include_directories : includes,
1529 install : false)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001530
Davide Cavalca1485aac2019-02-27 11:19:07 -05001531libsystemd_sym_path = '@0@/@1@'.format(project_source_root, libsystemd_sym)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001532libsystemd = shared_library(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001533 'systemd',
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001534 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek56d50ab2017-09-28 19:24:16 +02001535 version : libsystemd_version,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001536 include_directories : includes,
1537 link_args : ['-shared',
1538 '-Wl,--version-script=' + libsystemd_sym_path],
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001539 link_with : [libbasic,
1540 libbasic_gcrypt],
Zbigniew Jędrzejewski-Szmek5e3cec82017-12-19 19:38:43 +01001541 link_whole : [libsystemd_static,
1542 libjournal_client],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001543 dependencies : [threads,
1544 librt,
1545 libxz,
1546 liblz4],
1547 link_depends : libsystemd_sym,
1548 install : true,
1549 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001550
Davide Cavalca70848ec2018-04-09 02:43:35 -07001551static_libsystemd = get_option('static-libsystemd')
1552static_libsystemd_pic = static_libsystemd == 'true' or static_libsystemd == 'pic'
1553
1554install_libsystemd_static = static_library(
1555 'systemd',
1556 libsystemd_sources,
1557 journal_client_sources,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001558 basic_sources,
1559 basic_gcrypt_sources,
Yu Watanabebe44b572018-10-12 11:59:55 +09001560 disable_mempool_c,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001561 include_directories : includes,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001562 build_by_default : static_libsystemd != 'false',
1563 install : static_libsystemd != 'false',
1564 install_dir : rootlibdir,
1565 pic : static_libsystemd == 'true' or static_libsystemd == 'pic',
1566 dependencies : [threads,
1567 librt,
1568 libxz,
1569 liblz4,
Zbigniew Jędrzejewski-Szmek975464e2018-04-25 15:29:48 +02001570 libcap,
1571 libblkid,
1572 libmount,
1573 libselinux,
Davide Cavalca70848ec2018-04-09 02:43:35 -07001574 libgcrypt],
1575 c_args : libsystemd_c_args + (static_libsystemd_pic ? [] : ['-fno-PIC']))
1576
Mario Limonciellob61d7772019-09-09 22:49:35 +01001577#Generate autosuspend rules
1578make_autosuspend_rules_py = find_program('tools/make-autosuspend-rules.py')
1579
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001580############################################################
1581
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001582# binaries that have --help and are intended for use by humans,
1583# usually, but not always, installed in /bin.
1584public_programs = []
1585
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001586subdir('src/libudev')
1587subdir('src/shared')
1588subdir('src/core')
Lennart Poettering9e71f5d2019-03-05 12:12:33 +01001589subdir('src/shutdown')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001590subdir('src/udev')
1591subdir('src/network')
1592
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001593subdir('src/analyze')
1594subdir('src/journal-remote')
1595subdir('src/coredump')
Eric DeVolder9b4abc62019-05-16 08:59:01 -05001596subdir('src/pstore')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001597subdir('src/hostname')
1598subdir('src/import')
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01001599subdir('src/partition')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001600subdir('src/kernel-install')
1601subdir('src/locale')
1602subdir('src/machine')
Lennart Poettering61d05782018-04-16 21:41:40 +02001603subdir('src/portable')
Lennart Poetteringd093b622019-07-04 18:33:30 +02001604subdir('src/userdb')
Lennart Poettering70a5db52019-07-04 18:35:39 +02001605subdir('src/home')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001606subdir('src/nspawn')
1607subdir('src/resolve')
1608subdir('src/timedate')
1609subdir('src/timesync')
1610subdir('src/vconsole')
Zbigniew Jędrzejewski-Szmekb7100722017-04-12 15:05:55 -04001611subdir('src/boot/efi')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001612
1613subdir('src/test')
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05001614subdir('src/fuzz')
Zbigniew Jędrzejewski-Szmekef2ad302019-10-08 16:43:18 +02001615subdir('rules.d')
Zbigniew Jędrzejewski-Szmek4ff3f252017-04-13 20:47:20 -04001616subdir('test')
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04001617
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001618############################################################
1619
1620# only static linking apart from libdl, to make sure that the
1621# module is linked to all libraries that it uses.
1622test_dlopen = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001623 'test-dlopen',
1624 test_dlopen_c,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001625 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001626 include_directories : includes,
1627 link_with : [libbasic],
Yu Watanabefd1939f2018-09-12 21:47:56 +09001628 dependencies : [libdl],
1629 build_by_default : want_tests != 'false')
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001630
Yu Watanabe08540a92018-07-18 09:25:57 +09001631foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
Lennart Poettering1684c562019-07-04 18:31:11 +02001632 ['systemd', 'ENABLE_NSS_SYSTEMD', 'src/nss-systemd/userdb-glue.c src/nss-systemd/userdb-glue.h'],
Yu Watanabe08540a92018-07-18 09:25:57 +09001633 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
1634 ['resolve', 'ENABLE_NSS_RESOLVE']]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001635
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001636 condition = tuple[1] == '' or conf.get(tuple[1]) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001637 if condition
1638 module = tuple[0]
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001639
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001640 sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
Davide Cavalca1485aac2019-02-27 11:19:07 -05001641 version_script_arg = join_paths(project_source_root, sym)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001642
Lennart Poettering1684c562019-07-04 18:31:11 +02001643 sources = ['src/nss-@0@/nss-@0@.c'.format(module)]
1644 if tuple.length() > 2
1645 sources += tuple[2].split()
1646 endif
1647
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001648 nss = shared_library(
1649 'nss_' + module,
Lennart Poettering1684c562019-07-04 18:31:11 +02001650 sources,
Zbigniew Jędrzejewski-Szmeka5d88352018-10-09 16:02:55 +02001651 disable_mempool_c,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001652 version : '2',
1653 include_directories : includes,
Lennart Poetteringb4b36f42017-12-12 20:13:16 +01001654 # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
1655 link_args : ['-Wl,-z,nodelete',
1656 '-shared',
Jussi Pakkanen700805f2019-04-06 21:59:06 +02001657 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001658 link_with : [libsystemd_static,
Lennart Poettering733cbd02019-07-23 14:22:06 +02001659 libshared_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001660 libbasic],
1661 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek5486a312017-05-12 08:31:46 -04001662 librt],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001663 link_depends : sym,
1664 install : true,
1665 install_dir : rootlibdir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001666
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001667 # We cannot use shared_module because it does not support version suffix.
1668 # Unfortunately shared_library insists on creating the symlink…
1669 meson.add_install_script('sh', '-c',
1670 'rm $DESTDIR@0@/libnss_@1@.so'
1671 .format(rootlibdir, module))
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001672
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001673 if want_tests != 'false'
1674 test('dlopen-nss_' + module,
1675 test_dlopen,
1676 # path to dlopen must include a slash
1677 args : nss.full_path())
1678 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001679 endif
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001680endforeach
1681
1682############################################################
1683
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001684executable('systemd',
1685 systemd_sources,
1686 include_directories : includes,
1687 link_with : [libcore,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001688 libshared],
Michael Olbrich416d7d42019-02-25 11:59:23 +01001689 dependencies : [versiondep,
1690 threads,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001691 librt,
1692 libseccomp,
1693 libselinux,
Zbigniew Jędrzejewski-Szmekf4ee10a2017-04-09 14:08:53 -04001694 libmount,
1695 libblkid],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001696 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001697 install : true,
1698 install_dir : rootlibexecdir)
1699
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001700meson.add_install_script(meson_make_symlink,
1701 join_paths(rootlibexecdir, 'systemd'),
1702 join_paths(rootsbindir, 'init'))
1703
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001704exe = executable('systemd-analyze',
1705 systemd_analyze_sources,
1706 include_directories : includes,
1707 link_with : [libcore,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001708 libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01001709 dependencies : [versiondep,
1710 threads,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001711 librt,
1712 libseccomp,
1713 libselinux,
1714 libmount,
1715 libblkid],
1716 install_rpath : rootlibexecdir,
Jakov Smolicdd0f7952020-04-15 17:53:36 +02001717 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001718public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001719
1720executable('systemd-journald',
1721 systemd_journald_sources,
1722 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001723 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001724 libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001725 dependencies : [threads,
1726 libxz,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04001727 liblz4,
1728 libselinux],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04001729 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001730 install : true,
1731 install_dir : rootlibexecdir)
1732
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001733exe = executable('systemd-cat',
1734 systemd_cat_sources,
1735 include_directories : includes,
1736 link_with : [libjournal_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001737 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001738 dependencies : [threads],
1739 install_rpath : rootlibexecdir,
1740 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001741public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001742
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001743exe = executable('journalctl',
1744 journalctl_sources,
1745 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001746 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001747 dependencies : [threads,
1748 libqrencode,
1749 libxz,
Zbigniew Jędrzejewski-Szmek6becf482018-01-12 07:55:45 +01001750 liblz4,
1751 libpcre2],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001752 install_rpath : rootlibexecdir,
1753 install : true,
1754 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001755public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001756
1757executable('systemd-getty-generator',
1758 'src/getty-generator/getty-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001759 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001760 link_with : [libshared],
1761 install_rpath : rootlibexecdir,
1762 install : true,
1763 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001764
1765executable('systemd-debug-generator',
1766 'src/debug-generator/debug-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767 include_directories : includes,
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001768 link_with : [libshared],
1769 install_rpath : rootlibexecdir,
1770 install : true,
1771 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001772
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001773executable('systemd-run-generator',
1774 'src/run-generator/run-generator.c',
1775 include_directories : includes,
1776 link_with : [libshared],
1777 install_rpath : rootlibexecdir,
1778 install : true,
1779 install_dir : systemgeneratordir)
1780
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001781executable('systemd-fstab-generator',
1782 'src/fstab-generator/fstab-generator.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001783 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01001784 link_with : [libcore_shared,
1785 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04001786 install_rpath : rootlibexecdir,
1787 install : true,
1788 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001789
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001790if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001791 executable('30-systemd-environment-d-generator',
1792 'src/environment-d-generator/environment-d-generator.c',
1793 include_directories : includes,
1794 link_with : [libshared],
1795 install_rpath : rootlibexecdir,
1796 install : true,
1797 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001798
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001799 meson.add_install_script(meson_make_symlink,
1800 join_paths(sysconfdir, 'environment'),
1801 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001802endif
1803
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001804if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001805 executable('systemd-hibernate-resume-generator',
1806 'src/hibernate-resume/hibernate-resume-generator.c',
1807 include_directories : includes,
1808 link_with : [libshared],
1809 install_rpath : rootlibexecdir,
1810 install : true,
1811 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001812
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001813 executable('systemd-hibernate-resume',
1814 'src/hibernate-resume/hibernate-resume.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001815 include_directories : includes,
1816 link_with : [libshared],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001820endif
1821
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001822if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001823 executable('systemd-gpt-auto-generator',
1824 'src/gpt-auto-generator/gpt-auto-generator.c',
Zbigniew Jędrzejewski-Szmekd284b822018-11-19 11:12:28 +01001825 'src/shared/blkid-util.h',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001826 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001827 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001828 dependencies : libblkid,
1829 install_rpath : rootlibexecdir,
1830 install : true,
1831 install_dir : systemgeneratordir)
1832
1833 exe = executable('systemd-dissect',
1834 'src/dissect/dissect.c',
1835 include_directories : includes,
1836 link_with : [libshared],
1837 install_rpath : rootlibexecdir,
1838 install : true,
1839 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001840 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001841endif
1842
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001843if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001844 executable('systemd-resolved',
1845 systemd_resolved_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001846 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001847 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001848 libbasic_gcrypt,
1849 libsystemd_resolve_core],
Yu Watanabe56ddbf12018-06-21 01:29:49 +09001850 dependencies : systemd_resolved_dependencies,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001851 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001852 install : true,
1853 install_dir : rootlibexecdir)
1854
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001855 exe = executable('resolvectl',
1856 resolvectl_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001857 include_directories : includes,
Zbigniew Jędrzejewski-Szmek34e221a2017-12-19 19:06:56 +01001858 link_with : [libshared,
Zbigniew Jędrzejewski-Szmek568a4ff2017-12-19 22:46:01 +01001859 libbasic_gcrypt,
1860 libsystemd_resolve_core],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001861 dependencies : [threads,
Michael Biebl76c87412017-04-21 23:45:54 +02001862 libgpg_error,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001863 libm,
1864 libidn],
1865 install_rpath : rootlibexecdir,
1866 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001867 public_programs += exe
Lennart Poettering088c1362018-02-27 17:48:54 +01001868
1869 meson.add_install_script(meson_make_symlink,
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001870 join_paths(bindir, 'resolvectl'),
Lennart Poettering088c1362018-02-27 17:48:54 +01001871 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001872
1873 meson.add_install_script(meson_make_symlink,
1874 join_paths(bindir, 'resolvectl'),
1875 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001876endif
1877
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001878if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001879 executable('systemd-logind',
1880 systemd_logind_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001881 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001882 link_with : [liblogind_core,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001883 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001884 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001885 libacl],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001886 install_rpath : rootlibexecdir,
1887 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001888 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001889
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001890 exe = executable('loginctl',
1891 loginctl_sources,
1892 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02001893 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001894 dependencies : [threads,
1895 liblz4,
1896 libxz],
1897 install_rpath : rootlibexecdir,
1898 install : true,
1899 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001900 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001901
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001902 exe = executable('systemd-inhibit',
1903 'src/login/inhibit.c',
1904 include_directories : includes,
1905 link_with : [libshared],
1906 install_rpath : rootlibexecdir,
1907 install : true,
1908 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001909 public_programs += exe
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001910
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001911 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001912 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001913 pam_systemd = shared_library(
1914 'pam_systemd',
1915 pam_systemd_c,
1916 name_prefix : '',
1917 include_directories : includes,
1918 link_args : ['-shared',
1919 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001920 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001921 libshared_static],
1922 dependencies : [threads,
1923 libpam,
1924 libpam_misc],
1925 link_depends : pam_systemd_sym,
1926 install : true,
1927 install_dir : pamlibdir)
1928
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001929 if want_tests != 'false'
1930 test('dlopen-pam_systemd',
1931 test_dlopen,
1932 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001933 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001934 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001935 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001936
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001937 executable('systemd-user-runtime-dir',
1938 user_runtime_dir_sources,
1939 include_directories : includes,
1940 link_with : [libshared],
1941 install_rpath : rootlibexecdir,
1942 install : true,
1943 install_dir : rootlibexecdir)
1944endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001945
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001946if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 executable('systemd-user-sessions',
1948 'src/user-sessions/user-sessions.c',
1949 include_directories : includes,
1950 link_with : [libshared],
1951 install_rpath : rootlibexecdir,
1952 install : true,
1953 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001954endif
1955
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001956if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001957 exe = executable('bootctl',
1958 'src/boot/bootctl.c',
1959 include_directories : includes,
1960 link_with : [libshared],
1961 dependencies : [libblkid],
1962 install_rpath : rootlibexecdir,
1963 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001964 public_programs += exe
Lennart Poettering36695e82018-06-25 17:24:09 +02001965
1966 executable('systemd-bless-boot',
1967 'src/boot/bless-boot.c',
1968 include_directories : includes,
1969 link_with : [libshared],
1970 dependencies : [libblkid],
1971 install_rpath : rootlibexecdir,
1972 install : true,
1973 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001974
1975 executable('systemd-bless-boot-generator',
1976 'src/boot/bless-boot-generator.c',
1977 include_directories : includes,
1978 link_with : [libshared],
1979 install_rpath : rootlibexecdir,
1980 install : true,
1981 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001982endif
1983
Lennart Poetteringf876f532018-06-25 16:07:33 +02001984executable('systemd-boot-check-no-failures',
1985 'src/boot/boot-check-no-failures.c',
1986 include_directories : includes,
1987 link_with : [libshared],
1988 dependencies : [libblkid],
1989 install_rpath : rootlibexecdir,
1990 install : true,
1991 install_dir : rootlibexecdir)
1992
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04001993exe = executable('systemd-socket-activate', 'src/activate/activate.c',
1994 include_directories : includes,
1995 link_with : [libshared],
1996 dependencies : [threads],
1997 install_rpath : rootlibexecdir,
1998 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02001999public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002000
Felipe Satelerf3794362018-05-22 15:08:57 -04002001
2002if get_option('link-systemctl-shared')
2003 systemctl_link_with = [libshared]
2004else
2005 systemctl_link_with = [libsystemd_static,
2006 libshared_static,
2007 libjournal_client,
2008 libbasic_gcrypt]
2009endif
2010
Lennart Poettering63a3b3c2019-03-22 20:05:08 +01002011exe = executable('systemctl',
2012 'src/systemctl/systemctl.c',
2013 'src/systemctl/sysv-compat.h',
2014 'src/systemctl/sysv-compat.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002015 include_directories : includes,
Felipe Satelerf3794362018-05-22 15:08:57 -04002016 link_with : systemctl_link_with,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002017 dependencies : [threads,
2018 libcap,
2019 libselinux,
2020 libxz,
2021 liblz4],
2022 install_rpath : rootlibexecdir,
2023 install : true,
2024 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002025public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002026
Lennart Poettering61d05782018-04-16 21:41:40 +02002027if conf.get('ENABLE_PORTABLED') == 1
2028 executable('systemd-portabled',
2029 systemd_portabled_sources,
2030 include_directories : includes,
2031 link_with : [libshared],
2032 dependencies : [threads],
2033 install_rpath : rootlibexecdir,
2034 install : true,
2035 install_dir : rootlibexecdir)
2036
2037 exe = executable('portablectl', 'src/portable/portablectl.c',
2038 include_directories : includes,
2039 link_with : [libshared],
2040 dependencies : [threads],
2041 install_rpath : rootlibexecdir,
2042 install : true,
Lennart Poettering80f39b82018-10-08 17:28:44 +02002043 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002044 public_programs += exe
Lennart Poettering61d05782018-04-16 21:41:40 +02002045endif
2046
Lennart Poetteringd093b622019-07-04 18:33:30 +02002047if conf.get('ENABLE_USERDB') == 1
2048 executable('systemd-userwork',
2049 systemd_userwork_sources,
2050 include_directories : includes,
2051 link_with : [libshared],
2052 dependencies : [threads],
2053 install_rpath : rootlibexecdir,
2054 install : true,
2055 install_dir : rootlibexecdir)
2056
2057 executable('systemd-userdbd',
2058 systemd_userdbd_sources,
2059 include_directories : includes,
2060 link_with : [libshared],
2061 dependencies : [threads],
2062 install_rpath : rootlibexecdir,
2063 install : true,
2064 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002065
2066 executable('userdbctl',
2067 userdbctl_sources,
2068 include_directories : includes,
2069 link_with : [libshared],
2070 dependencies : [threads],
2071 install_rpath : rootlibexecdir,
2072 install : true,
2073 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002074endif
2075
Lennart Poettering70a5db52019-07-04 18:35:39 +02002076if conf.get('ENABLE_HOMED') == 1
2077 executable('systemd-homework',
2078 systemd_homework_sources,
2079 include_directories : includes,
2080 link_with : [libshared],
2081 dependencies : [threads,
2082 libcryptsetup,
2083 libblkid,
2084 libcrypt,
2085 libopenssl,
2086 libfdisk,
2087 libp11kit],
2088 install_rpath : rootlibexecdir,
2089 install : true,
2090 install_dir : rootlibexecdir)
2091
2092 executable('systemd-homed',
2093 systemd_homed_sources,
2094 include_directories : includes,
2095 link_with : [libshared],
2096 dependencies : [threads,
2097 libcrypt,
2098 libopenssl,
2099 libpwquality],
2100 install_rpath : rootlibexecdir,
2101 install : true,
2102 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002103
2104 executable('homectl',
2105 homectl_sources,
2106 include_directories : includes,
2107 link_with : [libshared],
2108 dependencies : [threads,
2109 libcrypt,
2110 libopenssl,
2111 libp11kit,
2112 libpwquality],
2113 install_rpath : rootlibexecdir,
2114 install : true,
2115 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002116
2117 if conf.get('HAVE_PAM') == 1
2118 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2119 pam_systemd = shared_library(
2120 'pam_systemd_home',
2121 pam_systemd_home_c,
2122 name_prefix : '',
2123 include_directories : includes,
2124 link_args : ['-shared',
2125 '-Wl,--version-script=' + version_script_arg],
2126 link_with : [libsystemd_static,
2127 libshared_static],
2128 dependencies : [threads,
2129 libpam,
2130 libpam_misc,
2131 libcrypt],
2132 link_depends : pam_systemd_home_sym,
2133 install : true,
2134 install_dir : pamlibdir)
2135 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002136endif
2137
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002138foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2139 meson.add_install_script(meson_make_symlink,
2140 join_paths(rootbindir, 'systemctl'),
2141 join_paths(rootsbindir, alias))
2142endforeach
2143
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002144if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002145 executable('systemd-backlight',
2146 'src/backlight/backlight.c',
2147 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002148 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002149 install_rpath : rootlibexecdir,
2150 install : true,
2151 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002152endif
2153
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002154if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002155 executable('systemd-rfkill',
2156 'src/rfkill/rfkill.c',
2157 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002158 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002159 install_rpath : rootlibexecdir,
2160 install : true,
2161 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002162endif
2163
2164executable('systemd-system-update-generator',
2165 'src/system-update-generator/system-update-generator.c',
2166 include_directories : includes,
2167 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002168 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002169 install : true,
2170 install_dir : systemgeneratordir)
2171
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002172if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002173 systemd_cryptsetup_sources = files('''
2174 src/cryptsetup/cryptsetup.c
2175 src/cryptsetup/cryptsetup-pkcs11.h
2176'''.split())
2177
2178 if conf.get('HAVE_P11KIT') == 1
2179 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2180 endif
2181
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002182 executable('systemd-cryptsetup',
Lennart Poettering08669702019-08-22 10:21:11 +02002183 systemd_cryptsetup_sources,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002184 include_directories : includes,
2185 link_with : [libshared],
Lennart Poettering08669702019-08-22 10:21:11 +02002186 dependencies : [libcryptsetup,
2187 libp11kit],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002188 install_rpath : rootlibexecdir,
2189 install : true,
2190 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002191
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002192 executable('systemd-cryptsetup-generator',
2193 'src/cryptsetup/cryptsetup-generator.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 dependencies : [libcryptsetup],
2197 install_rpath : rootlibexecdir,
2198 install : true,
2199 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002200
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002201 executable('systemd-veritysetup',
2202 'src/veritysetup/veritysetup.c',
2203 include_directories : includes,
2204 link_with : [libshared],
2205 dependencies : [libcryptsetup],
2206 install_rpath : rootlibexecdir,
2207 install : true,
2208 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002209
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002210 executable('systemd-veritysetup-generator',
2211 'src/veritysetup/veritysetup-generator.c',
2212 include_directories : includes,
2213 link_with : [libshared],
2214 dependencies : [libcryptsetup],
2215 install_rpath : rootlibexecdir,
2216 install : true,
2217 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002218endif
2219
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002220if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002221 executable('systemd-sysv-generator',
2222 'src/sysv-generator/sysv-generator.c',
2223 include_directories : includes,
2224 link_with : [libshared],
2225 install_rpath : rootlibexecdir,
2226 install : true,
2227 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002228
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002229 executable('systemd-rc-local-generator',
2230 'src/rc-local-generator/rc-local-generator.c',
2231 include_directories : includes,
2232 link_with : [libshared],
2233 install_rpath : rootlibexecdir,
2234 install : true,
2235 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002236endif
2237
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002238if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002239 executable('systemd-hostnamed',
2240 'src/hostname/hostnamed.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002241 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002242 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002243 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002244 install : true,
2245 install_dir : rootlibexecdir)
2246
2247 exe = executable('hostnamectl',
2248 'src/hostname/hostnamectl.c',
2249 include_directories : includes,
2250 link_with : [libshared],
2251 install_rpath : rootlibexecdir,
2252 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002253 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002254endif
2255
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002256if conf.get('ENABLE_LOCALED') == 1
2257 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002258 # logind will load libxkbcommon.so dynamically on its own
2259 deps = [libdl]
2260 else
2261 deps = []
2262 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002263
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002264 executable('systemd-localed',
2265 systemd_localed_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002266 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002267 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002268 dependencies : deps,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002269 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002270 install : true,
2271 install_dir : rootlibexecdir)
2272
2273 exe = executable('localectl',
2274 localectl_sources,
2275 include_directories : includes,
2276 link_with : [libshared],
2277 install_rpath : rootlibexecdir,
2278 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002279 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002280endif
2281
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002282if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002283 executable('systemd-timedated',
2284 'src/timedate/timedated.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002285 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002286 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002287 install_rpath : rootlibexecdir,
2288 install : true,
2289 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002290endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002291
Yu Watanabe6129ec82018-05-03 18:07:43 +09002292if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002293 exe = executable('timedatectl',
2294 'src/timedate/timedatectl.c',
2295 include_directories : includes,
2296 install_rpath : rootlibexecdir,
2297 link_with : [libshared],
Yu Watanabe6129ec82018-05-03 18:07:43 +09002298 dependencies : [libm],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002299 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002300 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002301endif
2302
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002303if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002304 if get_option('link-timesyncd-shared')
2305 timesyncd_link_with = [libshared]
2306 else
2307 timesyncd_link_with = [libsystemd_static,
2308 libshared_static,
2309 libjournal_client,
2310 libbasic_gcrypt]
2311 endif
2312
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002313 executable('systemd-timesyncd',
2314 systemd_timesyncd_sources,
2315 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002316 link_with : [timesyncd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002317 dependencies : [threads,
2318 libm],
2319 install_rpath : rootlibexecdir,
2320 install : true,
2321 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002322
2323 executable('systemd-time-wait-sync',
2324 'src/time-wait-sync/time-wait-sync.c',
2325 include_directories : includes,
Robert Scheckfd74a132020-02-08 14:02:09 +01002326 link_with : [timesyncd_link_with],
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002327 install_rpath : rootlibexecdir,
2328 install : true,
2329 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002330endif
2331
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002332if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002333 executable('systemd-machined',
2334 systemd_machined_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002335 include_directories : includes,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002336 link_with : [libmachine_core,
2337 libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002338 install_rpath : rootlibexecdir,
2339 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002340 install_dir : rootlibexecdir)
2341
2342 exe = executable('machinectl',
2343 'src/machine/machinectl.c',
2344 include_directories : includes,
2345 link_with : [libshared],
2346 dependencies : [threads,
2347 libxz,
2348 liblz4],
2349 install_rpath : rootlibexecdir,
2350 install : true,
2351 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002352 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002353endif
2354
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002355if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002356 executable('systemd-importd',
2357 systemd_importd_sources,
2358 include_directories : includes,
2359 link_with : [libshared],
2360 dependencies : [threads],
2361 install_rpath : rootlibexecdir,
2362 install : true,
2363 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002364
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002365 systemd_pull = executable('systemd-pull',
2366 systemd_pull_sources,
2367 include_directories : includes,
2368 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002369 dependencies : [versiondep,
2370 libcurl,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002371 libz,
2372 libbzip2,
2373 libxz,
2374 libgcrypt],
2375 install_rpath : rootlibexecdir,
2376 install : true,
2377 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002378
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002379 systemd_import = executable('systemd-import',
2380 systemd_import_sources,
2381 include_directories : includes,
2382 link_with : [libshared],
2383 dependencies : [libcurl,
2384 libz,
2385 libbzip2,
2386 libxz],
2387 install_rpath : rootlibexecdir,
2388 install : true,
2389 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002390
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002391 systemd_import_fs = executable('systemd-import-fs',
2392 systemd_import_fs_sources,
2393 include_directories : includes,
2394 link_with : [libshared],
2395 install_rpath : rootlibexecdir,
2396 install : true,
2397 install_dir : rootlibexecdir)
2398
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002399 systemd_export = executable('systemd-export',
2400 systemd_export_sources,
2401 include_directories : includes,
2402 link_with : [libshared],
2403 dependencies : [libcurl,
2404 libz,
2405 libbzip2,
2406 libxz],
2407 install_rpath : rootlibexecdir,
2408 install : true,
2409 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002410
2411 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002412endif
2413
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002414if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002415 exe = executable('systemd-journal-upload',
2416 systemd_journal_upload_sources,
2417 include_directories : includes,
2418 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002419 dependencies : [versiondep,
2420 threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002421 libcurl,
2422 libgnutls,
2423 libxz,
2424 liblz4],
2425 install_rpath : rootlibexecdir,
2426 install : true,
2427 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002428 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002429endif
2430
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002431if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002432 s_j_remote = executable('systemd-journal-remote',
2433 systemd_journal_remote_sources,
2434 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc064d8d2018-05-16 10:21:58 +02002435 link_with : [libshared,
2436 libsystemd_journal_remote],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002437 dependencies : [threads,
2438 libmicrohttpd,
2439 libgnutls,
2440 libxz,
2441 liblz4],
2442 install_rpath : rootlibexecdir,
2443 install : true,
2444 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002445
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002446 s_j_gatewayd = executable('systemd-journal-gatewayd',
2447 systemd_journal_gatewayd_sources,
2448 include_directories : includes,
2449 link_with : [libshared],
2450 dependencies : [threads,
2451 libmicrohttpd,
2452 libgnutls,
2453 libxz,
2454 liblz4],
2455 install_rpath : rootlibexecdir,
2456 install : true,
2457 install_dir : rootlibexecdir)
2458 public_programs += [s_j_remote, s_j_gatewayd]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002459endif
2460
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002461if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002462 executable('systemd-coredump',
2463 systemd_coredump_sources,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002464 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002465 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002466 dependencies : [threads,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002467 libacl,
2468 libdw,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002469 libxz,
2470 liblz4],
2471 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002472 install : true,
2473 install_dir : rootlibexecdir)
2474
2475 exe = executable('coredumpctl',
2476 coredumpctl_sources,
2477 include_directories : includes,
2478 link_with : [libshared],
2479 dependencies : [threads,
2480 libxz,
2481 liblz4],
2482 install_rpath : rootlibexecdir,
2483 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002484 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002485endif
2486
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002487if conf.get('ENABLE_PSTORE') == 1
2488 executable('systemd-pstore',
2489 systemd_pstore_sources,
2490 include_directories : includes,
2491 link_with : [libshared],
2492 dependencies : [threads,
2493 libacl,
2494 libdw,
2495 libxz,
2496 liblz4],
2497 install_rpath : rootlibexecdir,
2498 install : true,
2499 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002500endif
2501
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002502if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002503 exe = executable('systemd-binfmt',
2504 'src/binfmt/binfmt.c',
2505 include_directories : includes,
2506 link_with : [libshared],
2507 install_rpath : rootlibexecdir,
2508 install : true,
2509 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002510 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002511
2512 meson.add_install_script('sh', '-c',
2513 mkdir_p.format(binfmtdir))
2514 meson.add_install_script('sh', '-c',
2515 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2516endif
2517
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002518if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002519 exe = executable('systemd-repart',
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002520 systemd_repart_sources,
2521 include_directories : includes,
2522 link_with : [libshared],
2523 dependencies : [threads,
2524 libcryptsetup,
2525 libblkid,
2526 libfdisk,
2527 libopenssl],
2528 install_rpath : rootlibexecdir,
2529 install : true,
2530 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002531
2532 if want_tests != 'false'
2533 test('test-repart',
2534 test_repart_sh,
2535 args : exe.full_path())
2536 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002537endif
2538
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002539if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002540 executable('systemd-vconsole-setup',
2541 'src/vconsole/vconsole-setup.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002542 include_directories : includes,
2543 link_with : [libshared],
2544 install_rpath : rootlibexecdir,
2545 install : true,
2546 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002547endif
2548
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002549if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002550 executable('systemd-random-seed',
2551 'src/random-seed/random-seed.c',
2552 include_directories : includes,
2553 link_with : [libshared],
2554 install_rpath : rootlibexecdir,
2555 install : true,
2556 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002557endif
2558
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002559if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002560 executable('systemd-firstboot',
2561 'src/firstboot/firstboot.c',
2562 include_directories : includes,
2563 link_with : [libshared],
2564 dependencies : [libcrypt],
2565 install_rpath : rootlibexecdir,
2566 install : true,
2567 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002568endif
2569
2570executable('systemd-remount-fs',
2571 'src/remount-fs/remount-fs.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002572 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002573 link_with : [libcore_shared,
2574 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002575 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002576 install : true,
2577 install_dir : rootlibexecdir)
2578
2579executable('systemd-machine-id-setup',
2580 'src/machine-id-setup/machine-id-setup-main.c',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002581 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002582 link_with : [libcore_shared,
2583 libshared],
Zbigniew Jędrzejewski-Szmekb2fc5832017-04-10 18:13:00 -04002584 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002585 install : true,
2586 install_dir : rootbindir)
2587
2588executable('systemd-fsck',
2589 'src/fsck/fsck.c',
2590 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002591 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002592 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002593 install : true,
2594 install_dir : rootlibexecdir)
2595
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002596executable('systemd-growfs',
2597 'src/partition/growfs.c',
2598 include_directories : includes,
2599 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002600 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002601 install_rpath : rootlibexecdir,
2602 install : true,
2603 install_dir : rootlibexecdir)
2604
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002605executable('systemd-makefs',
2606 'src/partition/makefs.c',
2607 include_directories : includes,
2608 link_with : [libshared],
2609 install_rpath : rootlibexecdir,
2610 install : true,
2611 install_dir : rootlibexecdir)
2612
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002613executable('systemd-sleep',
2614 'src/sleep/sleep.c',
2615 include_directories : includes,
2616 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002617 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002618 install : true,
2619 install_dir : rootlibexecdir)
2620
Yu Watanabed25e1272019-01-03 02:32:57 +09002621install_data('src/sleep/sleep.conf',
2622 install_dir : pkgsysconfdir)
2623
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002624exe = executable('systemd-sysctl',
2625 'src/sysctl/sysctl.c',
2626 include_directories : includes,
2627 link_with : [libshared],
2628 install_rpath : rootlibexecdir,
2629 install : true,
2630 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002631public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002632
2633executable('systemd-ac-power',
2634 'src/ac-power/ac-power.c',
2635 include_directories : includes,
2636 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002637 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002638 install : true,
2639 install_dir : rootlibexecdir)
2640
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002641exe = executable('systemd-detect-virt',
2642 'src/detect-virt/detect-virt.c',
2643 include_directories : includes,
2644 link_with : [libshared],
2645 install_rpath : rootlibexecdir,
2646 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002647public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002648
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002649exe = executable('systemd-delta',
2650 'src/delta/delta.c',
2651 include_directories : includes,
2652 link_with : [libshared],
2653 install_rpath : rootlibexecdir,
2654 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002655public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002656
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002657exe = executable('systemd-escape',
2658 'src/escape/escape.c',
2659 include_directories : includes,
2660 link_with : [libshared],
2661 install_rpath : rootlibexecdir,
2662 install : true,
2663 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002664public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002665
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002666exe = executable('systemd-notify',
2667 'src/notify/notify.c',
2668 include_directories : includes,
2669 link_with : [libshared],
2670 install_rpath : rootlibexecdir,
2671 install : true,
2672 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002673public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002674
2675executable('systemd-volatile-root',
2676 'src/volatile-root/volatile-root.c',
2677 include_directories : includes,
2678 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002679 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002680 install : true,
2681 install_dir : rootlibexecdir)
2682
2683executable('systemd-cgroups-agent',
2684 'src/cgroups-agent/cgroups-agent.c',
2685 include_directories : includes,
2686 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002687 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002688 install : true,
2689 install_dir : rootlibexecdir)
2690
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002691exe = executable('systemd-id128',
2692 'src/id128/id128.c',
2693 include_directories : includes,
2694 link_with : [libshared],
2695 install_rpath : rootlibexecdir,
2696 install : true)
2697public_programs += exe
2698
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002699exe = executable('systemd-path',
2700 'src/path/path.c',
2701 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002702 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002703 install_rpath : rootlibexecdir,
2704 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002705public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002707exe = executable('systemd-ask-password',
2708 'src/ask-password/ask-password.c',
2709 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002710 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002711 install_rpath : rootlibexecdir,
2712 install : true,
2713 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002714public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002715
2716executable('systemd-reply-password',
2717 'src/reply-password/reply-password.c',
2718 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002719 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002720 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002721 install : true,
2722 install_dir : rootlibexecdir)
2723
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002724exe = executable('systemd-tty-ask-password-agent',
2725 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2726 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002727 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002728 install_rpath : rootlibexecdir,
2729 install : true,
2730 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002731public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002732
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002733exe = executable('systemd-cgls',
2734 'src/cgls/cgls.c',
2735 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002736 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002737 install_rpath : rootlibexecdir,
2738 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002739public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002740
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002741exe = executable('systemd-cgtop',
2742 'src/cgtop/cgtop.c',
2743 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002744 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002745 install_rpath : rootlibexecdir,
2746 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002747public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002748
2749executable('systemd-initctl',
2750 'src/initctl/initctl.c',
2751 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002752 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002753 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002754 install : true,
2755 install_dir : rootlibexecdir)
2756
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002757exe = executable('systemd-mount',
2758 'src/mount/mount-tool.c',
2759 include_directories : includes,
Michael Biebl34ce0a52017-04-25 20:19:54 +02002760 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek7d991d42019-04-04 13:41:47 +02002761 dependencies: [libmount],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002762 install_rpath : rootlibexecdir,
2763 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002764public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002765
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002766meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002767 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002768
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002769exe = executable('systemd-run',
2770 'src/run/run.c',
2771 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002772 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002773 install_rpath : rootlibexecdir,
2774 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002775public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002776
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002777exe = executable('systemd-stdio-bridge',
2778 'src/stdio-bridge/stdio-bridge.c',
2779 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002780 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002781 dependencies : [versiondep],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002782 install_rpath : rootlibexecdir,
2783 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002784public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002785
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002786exe = executable('busctl',
2787 'src/busctl/busctl.c',
2788 'src/busctl/busctl-introspect.c',
2789 'src/busctl/busctl-introspect.h',
2790 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002791 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002792 install_rpath : rootlibexecdir,
2793 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002794public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002796if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002797 exe = executable('systemd-sysusers',
2798 'src/sysusers/sysusers.c',
2799 include_directories : includes,
2800 link_with : [libshared],
2801 install_rpath : rootlibexecdir,
2802 install : true,
2803 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002804 public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002805endif
2806
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002807if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002808 exe = executable('systemd-tmpfiles',
2809 'src/tmpfiles/tmpfiles.c',
2810 include_directories : includes,
2811 link_with : [libshared],
2812 dependencies : [libacl],
2813 install_rpath : rootlibexecdir,
2814 install : true,
2815 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002816 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002817
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002818 if want_tests != 'false'
2819 test('test-systemd-tmpfiles',
2820 test_systemd_tmpfiles_py,
2821 # https://github.com/mesonbuild/meson/issues/2681
2822 args : exe.full_path())
2823 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002824endif
2825
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002826if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002827 exe = executable('systemd-hwdb',
2828 'src/hwdb/hwdb.c',
2829 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2830 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002831 link_with : [libudev_static],
Michael Biebl0da6f392017-04-21 18:32:14 +02002832 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002833 install : true,
2834 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002835 public_programs += exe
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002836endif
2837
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002838if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002839 executable('systemd-quotacheck',
2840 'src/quotacheck/quotacheck.c',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002841 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002842 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002843 install_rpath : rootlibexecdir,
2844 install : true,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002845 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002846endif
2847
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002848exe = executable('systemd-socket-proxyd',
2849 'src/socket-proxy/socket-proxyd.c',
2850 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002851 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002852 dependencies : [threads],
2853 install_rpath : rootlibexecdir,
2854 install : true,
2855 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002856public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002857
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002858exe = executable('systemd-udevd',
2859 systemd_udevd_sources,
2860 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002861 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002862 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002863 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002864 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002865 dependencies : [versiondep,
2866 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002867 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002868 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002869 libacl,
2870 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002871 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002872 install : true,
2873 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002874public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002875
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002876exe = executable('udevadm',
2877 udevadm_sources,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02002878 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002879 include_directories : includes,
2880 link_with : [libudev_core,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002881 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002882 libudev_static],
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01002883 dependencies : [versiondep,
2884 threads,
Zbigniew Jędrzejewski-Szmek3a30f212017-04-17 12:07:12 -04002885 libkmod,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002886 libidn,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002887 libacl,
2888 libblkid],
Zbigniew Jędrzejewski-Szmek1aec3ed2017-04-17 19:33:10 -04002889 install_rpath : udev_rpath,
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002890 install : true,
2891 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002892public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002893
2894executable('systemd-shutdown',
2895 systemd_shutdown_sources,
2896 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002897 link_with : [libcore_shared,
2898 libshared],
Zbigniew Jędrzejewski-Szmek95b862b2018-03-14 11:32:30 +01002899 dependencies : [libmount],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002900 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002901 install : true,
2902 install_dir : rootlibexecdir)
2903
2904executable('systemd-update-done',
2905 'src/update-done/update-done.c',
2906 include_directories : includes,
2907 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002908 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002909 install : true,
2910 install_dir : rootlibexecdir)
2911
2912executable('systemd-update-utmp',
2913 'src/update-utmp/update-utmp.c',
2914 include_directories : includes,
Zbigniew Jędrzejewski-Szmekaac26052017-04-14 18:49:47 -04002915 link_with : [libshared],
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002916 dependencies : [libaudit],
Zbigniew Jędrzejewski-Szmek421f0012017-04-12 12:02:30 -04002917 install_rpath : rootlibexecdir,
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002918 install : true,
2919 install_dir : rootlibexecdir)
2920
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002921if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002922 executable('systemd-modules-load',
2923 'src/modules-load/modules-load.c',
2924 include_directories : includes,
2925 link_with : [libshared],
2926 dependencies : [libkmod],
2927 install_rpath : rootlibexecdir,
2928 install : true,
2929 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002930
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002931 meson.add_install_script('sh', '-c',
2932 mkdir_p.format(modulesloaddir))
2933 meson.add_install_script('sh', '-c',
2934 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002935endif
2936
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002937exe = executable('systemd-nspawn',
2938 systemd_nspawn_sources,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002939 include_directories : includes,
Zbigniew Jędrzejewski-Szmek53f79e12019-03-05 16:19:40 +01002940 link_with : [libcore_shared,
2941 libnspawn_core,
Zbigniew Jędrzejewski-Szmek97d90612018-05-28 10:37:11 +02002942 libshared],
Franck Bui82384232019-03-22 11:09:08 +01002943 dependencies : [libblkid,
2944 libseccomp],
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04002945 install_rpath : rootlibexecdir,
2946 install : true)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002947public_programs += exe
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002948
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002949if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002950 executable('systemd-networkd',
2951 systemd_networkd_sources,
Yu Watanabe737f1402019-10-30 17:02:15 +09002952 include_directories : network_include_dir,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002953 link_with : [libnetworkd_core,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002954 libsystemd_network,
Zbigniew Jędrzejewski-Szmek0c06b502017-12-19 20:54:46 +01002955 libudev_static,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002956 networkd_link_with],
Zbigniew Jędrzejewski-Szmek4b57a272017-06-21 06:05:15 -04002957 dependencies : [threads],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002958 install_rpath : rootlibexecdir,
2959 install : true,
2960 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002961
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002962 executable('systemd-networkd-wait-online',
2963 systemd_networkd_wait_online_sources,
2964 include_directories : includes,
2965 link_with : [libnetworkd_core,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002966 networkd_link_with],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002967 install_rpath : rootlibexecdir,
2968 install : true,
2969 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002970
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002971 exe = executable('networkctl',
2972 networkctl_sources,
2973 include_directories : includes,
2974 link_with : [libsystemd_network,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002975 networkd_link_with],
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002976 install_rpath : rootlibexecdir,
2977 install : true,
2978 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002979 public_programs += exe
Yu Watanabe426c1d32019-07-13 03:35:04 +09002980
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01002981 exe = executable('systemd-network-generator',
Yu Watanabe426c1d32019-07-13 03:35:04 +09002982 network_generator_sources,
2983 include_directories : includes,
Robert Scheck5ac8b502020-01-08 02:36:07 +01002984 link_with : [networkd_link_with],
Yu Watanabe426c1d32019-07-13 03:35:04 +09002985 install_rpath : rootlibexecdir,
2986 install : true,
2987 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01002988
2989 if want_tests != 'false'
2990 test('test-network-generator-conversion',
2991 test_network_generator_conversion_sh,
2992 # https://github.com/mesonbuild/meson/issues/2681
2993 args : exe.full_path())
2994 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03002995endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01002996
2997executable('systemd-sulogin-shell',
2998 ['src/sulogin-shell/sulogin-shell.c'],
2999 include_directories : includes,
3000 link_with : [libshared],
3001 install_rpath : rootlibexecdir,
3002 install : true,
3003 install_dir : rootlibexecdir)
3004
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003005############################################################
3006
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003007custom_target(
3008 'systemd-runtest.env',
3009 output : 'systemd-runtest.env',
3010 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003011 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07003012 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003013 '} >@OUTPUT@'],
3014 build_by_default : true)
3015
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003016foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003017 sources = tuple[0]
3018 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3019 dependencies = tuple[2]
3020 condition = tuple.length() >= 4 ? tuple[3] : ''
3021 type = tuple.length() >= 5 ? tuple[4] : ''
3022 defs = tuple.length() >= 6 ? tuple[5] : []
3023 incs = tuple.length() >= 7 ? tuple[6] : includes
3024 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003025
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003026 name = sources[0].split('/')[-1].split('.')[0]
3027 if type.startswith('timeout=')
3028 timeout = type.split('=')[1].to_int()
3029 type = ''
3030 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003031
3032 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003033 exe = executable(
3034 name,
3035 sources,
3036 include_directories : incs,
3037 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003038 dependencies : [versiondep,
3039 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003040 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003041 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003042 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003043 install : install_tests,
3044 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003045
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003046 if type == 'manual'
3047 message('@0@ is a manual test'.format(name))
3048 elif type == 'unsafe' and want_tests != 'unsafe'
3049 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003050 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003051 test(name, exe,
3052 env : test_env,
3053 timeout : timeout)
3054 endif
3055 else
3056 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3057 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003058endforeach
3059
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003060exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003061 'test-libsystemd-sym',
3062 test_libsystemd_sym_c,
3063 include_directories : includes,
3064 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003065 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003066 install : install_tests,
3067 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003068if want_tests != 'false'
3069 test('test-libsystemd-sym', exe)
3070endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003071
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003072exe = executable(
3073 'test-libsystemd-static-sym',
3074 test_libsystemd_sym_c,
3075 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003076 link_with : [install_libsystemd_static],
3077 dependencies : [threads], # threads is already included in dependencies on the library,
3078 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003079 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003080 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003081 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003082if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003083 test('test-libsystemd-static-sym', exe)
3084endif
3085
3086exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003087 'test-libudev-sym',
3088 test_libudev_sym_c,
3089 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003090 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003091 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003092 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003093 install : install_tests,
3094 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003095if want_tests != 'false'
3096 test('test-libudev-sym', exe)
3097endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003098
3099exe = executable(
3100 'test-libudev-static-sym',
3101 test_libudev_sym_c,
3102 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003103 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003104 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003105 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003106 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003107 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003108if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003109 test('test-libudev-static-sym', exe)
3110endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003111
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003112############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003113
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003114fuzzer_exes = []
3115
Michael Olbrich59967402018-11-11 11:27:35 +01003116if get_option('tests') != 'false'
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003117foreach tuple : fuzzers
3118 sources = tuple[0]
3119 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3120 dependencies = tuple[2]
3121 defs = tuple.length() >= 4 ? tuple[3] : []
3122 incs = tuple.length() >= 5 ? tuple[4] : includes
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003123 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003124
Evgeny Vereshchagin6b8d32e2020-03-30 06:42:19 +00003125 if want_ossfuzz
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003126 dependencies += fuzzing_engine
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003127 elif want_libfuzzer
3128 if fuzzing_engine.found()
3129 dependencies += fuzzing_engine
3130 else
3131 link_args += ['-fsanitize=fuzzer']
3132 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003133 else
3134 sources += 'src/fuzz/fuzz-main.c'
3135 endif
3136
3137 name = sources[0].split('/')[-1].split('.')[0]
3138
3139 fuzzer_exes += executable(
3140 name,
3141 sources,
3142 include_directories : [incs, include_directories('src/fuzz')],
3143 link_with : link_with,
3144 dependencies : dependencies,
3145 c_args : defs,
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003146 link_args: link_args,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003147 install : false)
3148endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003149endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003150
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003151run_target('fuzzers',
3152 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003153 command : ['true'])
3154
3155############################################################
3156
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003157make_directive_index_py = find_program('tools/make-directive-index.py')
3158make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003159xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003160hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003161autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003162
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003163subdir('sysctl.d')
3164subdir('sysusers.d')
3165subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003166subdir('hwdb.d')
3167subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003168subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003169subdir('network')
3170subdir('man')
3171subdir('shell-completion/bash')
3172subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003173subdir('docs/sysvinit')
3174subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003175
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003176install_subdir('factory/etc',
3177 install_dir : factorydir)
3178
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003179install_data('xorg/50-systemd-user.sh',
3180 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003181install_data('modprobe.d/systemd.conf',
3182 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003183install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003184 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003185 'NEWS',
3186 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303187 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003188 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003189 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003190 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003191 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003192 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003193 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003194 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3195 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003196
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003197meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3198meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3199
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003200############################################################
3201
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003202meson_check_help = find_program('tools/meson-check-help.sh')
3203
3204foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003205 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003206 if want_tests != 'false'
3207 test('check-help-' + name,
3208 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003209 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003210 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003211endforeach
3212
3213############################################################
3214
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003215check_directives_sh = find_program('tools/check-directives.sh')
3216
3217if want_tests != 'false'
3218 test('check-directives',
3219 check_directives_sh,
3220 args : project_source_root)
3221endif
3222
3223############################################################
3224
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003225# Enable tests for all supported sanitizers
3226foreach tuple : sanitizers
3227 sanitizer = tuple[0]
3228 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003229
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003230 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003231 prev = ''
3232 foreach p : fuzz_regression_tests
3233 b = p.split('/')[-2]
3234 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003235
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003236 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003237
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003238 if name != prev
3239 if want_tests == 'false'
3240 message('Not compiling @0@ because tests is set to false'.format(name))
3241 elif slow_tests
3242 exe = custom_target(
3243 name,
3244 output : name,
3245 depends : build,
3246 command : [env, 'ln', '-fs',
3247 join_paths(build.full_path(), b),
3248 '@OUTPUT@'],
3249 build_by_default : true)
3250 else
3251 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3252 endif
3253 endif
3254 prev = name
3255
3256 if want_tests != 'false' and slow_tests
3257 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3258 env,
3259 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003260 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003261 endif
3262 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003263 endif
3264endforeach
3265
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003266
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003267############################################################
3268
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003269if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003270 all_files = run_command(
3271 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003272 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003273 'ls-files',
3274 ':/*.[ch]'])
3275 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003276
userwithuide85a6902017-08-09 13:41:44 +00003277 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003278 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003279 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003280 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003281 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003282 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003283 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003284endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003285
3286if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003287 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003288 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003289 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003290 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003291endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003292
3293if git.found()
3294 git_head = run_command(
3295 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003296 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003297 'rev-parse', 'HEAD']).stdout().strip()
3298 git_head_short = run_command(
3299 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003300 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003301 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3302
3303 run_target(
3304 'git-snapshot',
3305 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003306 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003307 git_head_short),
3308 '--prefix', 'systemd-@0@/'.format(git_head),
3309 'HEAD'])
3310endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003311
3312############################################################
3313
Lennart Poettering51b13862017-12-20 12:51:14 +01003314meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3315run_target(
3316 'check-api-docs',
3317 depends : [man, libsystemd, libudev],
3318 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3319
3320############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003321watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003322
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003323status = [
3324 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3325
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003326 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003327 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003328 'prefix directory: @0@'.format(prefixdir),
3329 'rootprefix directory: @0@'.format(rootprefixdir),
3330 'sysconf directory: @0@'.format(sysconfdir),
3331 'include directory: @0@'.format(includedir),
3332 'lib directory: @0@'.format(libdir),
3333 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003334 'SysV init scripts: @0@'.format(sysvinit_path),
3335 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003336 'PAM modules directory: @0@'.format(pamlibdir),
3337 'PAM configuration directory: @0@'.format(pamconfdir),
3338 'RPM macros directory: @0@'.format(rpmmacrosdir),
3339 'modprobe.d directory: @0@'.format(modprobedir),
3340 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3341 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3342 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3343 'bash completions directory: @0@'.format(bashcompletiondir),
3344 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003345 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003346 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3347 get_option('debug-tty')),
3348 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003349 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003350 'maximum system UID: @0@'.format(system_uid_max),
3351 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003352 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3353 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3354 'minimum container UID base: @0@'.format(container_uid_base_min),
3355 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003356 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003357 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003358 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003359 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003360 'nobody user name: @0@'.format(nobody_user),
3361 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003362 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003363 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003364
3365 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003366 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003367 'default mDNS mode: @0@'.format(default_mdns),
3368 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003369 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003370 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003371 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003372 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003373 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003374 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003375
3376alt_dns_servers = '\n '.join(dns_servers.split(' '))
3377alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3378status += [
3379 'default DNS servers: @0@'.format(alt_dns_servers),
3380 'default NTP servers: @0@'.format(alt_ntp_servers)]
3381
3382alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3383 '@@0@'.format(time_epoch)).stdout().strip()
3384status += [
3385 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3386
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003387status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003388 'static libsystemd: @0@'.format(static_libsystemd),
3389 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003390
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003391# TODO:
3392# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3393# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3394# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3395
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003396if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003397 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003398
3399 if have_gnu_efi
3400 status += [
3401 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003402 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003403 'EFI lds: @0@'.format(efi_lds),
3404 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003405 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003406 endif
3407endif
3408
3409found = []
3410missing = []
3411
3412foreach tuple : [
3413 ['libcryptsetup'],
3414 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003415 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003416 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003417 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003418 ['AUDIT'],
3419 ['IMA'],
3420 ['AppArmor'],
3421 ['SELinux'],
3422 ['SECCOMP'],
3423 ['SMACK'],
3424 ['zlib'],
3425 ['xz'],
3426 ['lz4'],
3427 ['bzip2'],
3428 ['ACL'],
3429 ['gcrypt'],
3430 ['qrencode'],
3431 ['microhttpd'],
3432 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003433 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003434 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003435 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003436 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437 ['libidn'],
3438 ['libiptc'],
3439 ['elfutils'],
3440 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003441 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003442 ['vconsole'],
3443 ['quotacheck'],
3444 ['tmpfiles'],
3445 ['environment.d'],
3446 ['sysusers'],
3447 ['firstboot'],
3448 ['randomseed'],
3449 ['backlight'],
3450 ['rfkill'],
3451 ['logind'],
3452 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003453 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003454 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003455 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003456 ['importd'],
3457 ['hostnamed'],
3458 ['timedated'],
3459 ['timesyncd'],
3460 ['localed'],
3461 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003462 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003463 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3464 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003465 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003466 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003467 ['polkit'],
3468 ['legacy pkla', install_polkit_pkla],
3469 ['efi'],
3470 ['gnu-efi', have_gnu_efi],
3471 ['kmod'],
3472 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003473 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003474 ['blkid'],
3475 ['dbus'],
3476 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003477 ['nss-myhostname'],
3478 ['nss-mymachines'],
3479 ['nss-resolve'],
3480 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003481 ['hwdb'],
3482 ['tpm'],
3483 ['man pages', want_man],
3484 ['html pages', want_html],
3485 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003486 ['SysV compat'],
3487 ['utmp'],
3488 ['ldconfig'],
3489 ['hibernate'],
3490 ['adm group', get_option('adm-group')],
3491 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003492 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003493 ['debug hashmap'],
3494 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003495 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003496 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003497 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003498 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003499 ['link-udev-shared', get_option('link-udev-shared')],
3500 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003501 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003502 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003503 ['kernel-install', get_option('kernel-install')],
3504 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003505]
3506
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003507 if tuple.length() >= 2
3508 cond = tuple[1]
3509 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003510 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3511 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003512 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003513 endif
3514 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003515 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003516 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003517 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003518 endif
3519endforeach
3520
3521status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003522 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003523 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003524 '',
3525 'disabled features: @0@'.format(', '.join(missing)),
3526 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003527message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003528
3529if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003530 warning('\n' +
3531 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3532 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3533 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003534endif