blob: 6c9299e27b5b73b99ec84627ee6a496152283c95 [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',
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001133 version : '>= 0.23.3',
1134 required : want_p11kit == 'true')
Lennart Poettering839fddb2019-11-05 11:49:27 +01001135 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
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001577# Generate autosuspend rules
Mario Limonciellob61d7772019-09-09 22:49:35 +01001578make_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-Szmek6164ec42020-04-28 09:08:04 +02001684executable(
1685 'systemd',
1686 systemd_sources,
1687 include_directories : includes,
1688 link_with : [libcore,
1689 libshared],
1690 dependencies : [versiondep,
1691 threads,
1692 librt,
1693 libseccomp,
1694 libselinux,
1695 libmount,
1696 libblkid],
1697 install_rpath : rootlibexecdir,
1698 install : true,
1699 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001700
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01001701meson.add_install_script(meson_make_symlink,
1702 join_paths(rootlibexecdir, 'systemd'),
1703 join_paths(rootsbindir, 'init'))
1704
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001705public_programs += executable(
1706 'systemd-analyze',
1707 systemd_analyze_sources,
1708 include_directories : includes,
1709 link_with : [libcore,
1710 libshared],
1711 dependencies : [versiondep,
1712 threads,
1713 librt,
1714 libseccomp,
1715 libselinux,
1716 libmount,
1717 libblkid],
1718 install_rpath : rootlibexecdir,
1719 install : get_option('analyze'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001720
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001721executable(
1722 'systemd-journald',
1723 systemd_journald_sources,
1724 include_directories : includes,
1725 link_with : [libjournal_core,
1726 libshared],
1727 dependencies : [threads,
1728 libxz,
1729 liblz4,
1730 libselinux],
1731 install_rpath : rootlibexecdir,
1732 install : true,
1733 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001734
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001735public_programs += executable(
1736 'systemd-cat',
1737 systemd_cat_sources,
1738 include_directories : includes,
1739 link_with : [libjournal_core,
1740 libshared],
1741 dependencies : [threads],
1742 install_rpath : rootlibexecdir,
1743 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001744
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001745public_programs += executable(
1746 'journalctl',
1747 journalctl_sources,
1748 include_directories : includes,
1749 link_with : [libshared],
1750 dependencies : [threads,
1751 libqrencode,
1752 libxz,
1753 liblz4,
1754 libpcre2],
1755 install_rpath : rootlibexecdir,
1756 install : true,
1757 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001758
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001759executable(
1760 'systemd-getty-generator',
1761 'src/getty-generator/getty-generator.c',
1762 include_directories : includes,
1763 link_with : [libshared],
1764 install_rpath : rootlibexecdir,
1765 install : true,
1766 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001767
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001768executable(
1769 'systemd-debug-generator',
1770 'src/debug-generator/debug-generator.c',
1771 include_directories : includes,
1772 link_with : [libshared],
1773 install_rpath : rootlibexecdir,
1774 install : true,
1775 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001776
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001777executable(
1778 'systemd-run-generator',
1779 'src/run-generator/run-generator.c',
1780 include_directories : includes,
1781 link_with : [libshared],
1782 install_rpath : rootlibexecdir,
1783 install : true,
1784 install_dir : systemgeneratordir)
Lennart Poettering35a1ff42018-11-15 22:09:29 +01001785
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001786executable(
1787 'systemd-fstab-generator',
1788 'src/fstab-generator/fstab-generator.c',
1789 include_directories : includes,
1790 link_with : [libcore_shared,
1791 libshared],
1792 install_rpath : rootlibexecdir,
1793 install : true,
1794 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001795
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001796if conf.get('ENABLE_ENVIRONMENT_D') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001797 executable(
1798 '30-systemd-environment-d-generator',
1799 'src/environment-d-generator/environment-d-generator.c',
1800 include_directories : includes,
1801 link_with : [libshared],
1802 install_rpath : rootlibexecdir,
1803 install : true,
1804 install_dir : userenvgeneratordir)
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04001805
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001806 meson.add_install_script(meson_make_symlink,
1807 join_paths(sysconfdir, 'environment'),
1808 join_paths(environmentdir, '99-environment.conf'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001809endif
1810
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001811if conf.get('ENABLE_HIBERNATE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001812 executable(
1813 'systemd-hibernate-resume-generator',
1814 'src/hibernate-resume/hibernate-resume-generator.c',
1815 include_directories : includes,
1816 link_with : [libshared],
1817 install_rpath : rootlibexecdir,
1818 install : true,
1819 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001820
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001821 executable(
1822 'systemd-hibernate-resume',
1823 'src/hibernate-resume/hibernate-resume.c',
1824 include_directories : includes,
1825 link_with : [libshared],
1826 install_rpath : rootlibexecdir,
1827 install : true,
1828 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001829endif
1830
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001831if conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001832 executable(
1833 'systemd-gpt-auto-generator',
1834 'src/gpt-auto-generator/gpt-auto-generator.c',
1835 'src/shared/blkid-util.h',
1836 include_directories : includes,
1837 link_with : [libshared],
1838 dependencies : libblkid,
1839 install_rpath : rootlibexecdir,
1840 install : true,
1841 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001842
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001843 public_programs += executable(
1844 'systemd-dissect',
1845 'src/dissect/dissect.c',
1846 include_directories : includes,
1847 link_with : [libshared],
1848 install_rpath : rootlibexecdir,
1849 install : true,
1850 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001851endif
1852
Zbigniew Jędrzejewski-Szmek1ec57f32017-10-03 13:12:29 +02001853if conf.get('ENABLE_RESOLVE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001854 executable(
1855 'systemd-resolved',
1856 systemd_resolved_sources,
1857 include_directories : includes,
1858 link_with : [libshared,
1859 libbasic_gcrypt,
1860 libsystemd_resolve_core],
1861 dependencies : systemd_resolved_dependencies,
1862 install_rpath : rootlibexecdir,
1863 install : true,
1864 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001865
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001866 public_programs += executable(
1867 'resolvectl',
1868 resolvectl_sources,
1869 include_directories : includes,
1870 link_with : [libshared,
1871 libbasic_gcrypt,
1872 libsystemd_resolve_core],
1873 dependencies : [threads,
1874 libgpg_error,
1875 libm,
1876 libidn],
1877 install_rpath : rootlibexecdir,
1878 install : true)
Lennart Poettering088c1362018-02-27 17:48:54 +01001879
1880 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001881 join_paths(bindir, 'resolvectl'),
1882 join_paths(rootsbindir, 'resolvconf'))
Yu Watanabec2e84ca2018-04-19 03:24:23 +09001883
1884 meson.add_install_script(meson_make_symlink,
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001885 join_paths(bindir, 'resolvectl'),
1886 join_paths(bindir, 'systemd-resolve'))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001887endif
1888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001889if conf.get('ENABLE_LOGIND') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001890 executable(
1891 'systemd-logind',
1892 systemd_logind_sources,
1893 include_directories : includes,
1894 link_with : [liblogind_core,
1895 libshared],
1896 dependencies : [threads,
1897 libacl],
1898 install_rpath : rootlibexecdir,
1899 install : true,
1900 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001901
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001902 public_programs += executable(
1903 'loginctl',
1904 loginctl_sources,
1905 include_directories : includes,
1906 link_with : [libshared],
1907 dependencies : [threads,
1908 liblz4,
1909 libxz],
1910 install_rpath : rootlibexecdir,
1911 install : true,
1912 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001913
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001914 public_programs += executable(
1915 'systemd-inhibit',
1916 'src/login/inhibit.c',
1917 include_directories : includes,
1918 link_with : [libshared],
1919 install_rpath : rootlibexecdir,
1920 install : true,
1921 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek83b6af32017-04-14 20:10:28 -04001922
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001923 if conf.get('HAVE_PAM') == 1
Davide Cavalca1485aac2019-02-27 11:19:07 -05001924 version_script_arg = join_paths(project_source_root, pam_systemd_sym)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001925 pam_systemd = shared_library(
1926 'pam_systemd',
1927 pam_systemd_c,
1928 name_prefix : '',
1929 include_directories : includes,
1930 link_args : ['-shared',
1931 '-Wl,--version-script=' + version_script_arg],
Zbigniew Jędrzejewski-Szmek37e4d7a2017-12-19 11:35:01 +01001932 link_with : [libsystemd_static,
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001933 libshared_static],
1934 dependencies : [threads,
1935 libpam,
1936 libpam_misc],
1937 link_depends : pam_systemd_sym,
1938 install : true,
1939 install_dir : pamlibdir)
1940
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001941 if want_tests != 'false'
1942 test('dlopen-pam_systemd',
1943 test_dlopen,
1944 # path to dlopen must include a slash
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02001945 args : pam_systemd.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02001946 endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04001947 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001948
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001949 executable(
1950 'systemd-user-runtime-dir',
1951 user_runtime_dir_sources,
1952 include_directories : includes,
1953 link_with : [libshared],
1954 install_rpath : rootlibexecdir,
1955 install : true,
1956 install_dir : rootlibexecdir)
Lennart Poettering07ee5ad2018-08-08 14:50:57 +02001957endif
Zbigniew Jędrzejewski-Szmeka9f0f5e2017-12-09 19:30:17 +01001958
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001959if conf.get('HAVE_PAM') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001960 executable(
1961 'systemd-user-sessions',
1962 'src/user-sessions/user-sessions.c',
1963 include_directories : includes,
1964 link_with : [libshared],
1965 install_rpath : rootlibexecdir,
1966 install : true,
1967 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001968endif
1969
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02001970if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001971 public_programs += executable(
1972 'bootctl',
1973 'src/boot/bootctl.c',
1974 include_directories : includes,
1975 link_with : [libshared],
1976 dependencies : [libblkid],
1977 install_rpath : rootlibexecdir,
1978 install : true)
Lennart Poettering36695e82018-06-25 17:24:09 +02001979
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001980 public_programs += executable(
1981 'systemd-bless-boot',
1982 'src/boot/bless-boot.c',
1983 include_directories : includes,
1984 link_with : [libshared],
1985 dependencies : [libblkid],
1986 install_rpath : rootlibexecdir,
1987 install : true,
1988 install_dir : rootlibexecdir)
Lennart Poettering8d16ed02018-06-22 17:00:47 +02001989
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02001990 executable(
1991 'systemd-bless-boot-generator',
1992 'src/boot/bless-boot-generator.c',
1993 include_directories : includes,
1994 link_with : [libshared],
1995 install_rpath : rootlibexecdir,
1996 install : true,
1997 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04001998endif
1999
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002000executable(
2001 'systemd-boot-check-no-failures',
2002 'src/boot/boot-check-no-failures.c',
2003 include_directories : includes,
2004 link_with : [libshared],
2005 dependencies : [libblkid],
2006 install_rpath : rootlibexecdir,
2007 install : true,
2008 install_dir : rootlibexecdir)
Lennart Poetteringf876f532018-06-25 16:07:33 +02002009
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002010public_programs += executable(
2011 'systemd-socket-activate',
2012 'src/activate/activate.c',
2013 include_directories : includes,
2014 link_with : [libshared],
2015 dependencies : [threads],
2016 install_rpath : rootlibexecdir,
2017 install : true)
Felipe Satelerf3794362018-05-22 15:08:57 -04002018
2019if get_option('link-systemctl-shared')
2020 systemctl_link_with = [libshared]
2021else
2022 systemctl_link_with = [libsystemd_static,
2023 libshared_static,
2024 libjournal_client,
2025 libbasic_gcrypt]
2026endif
2027
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002028public_programs += executable(
2029 'systemctl',
2030 'src/systemctl/systemctl.c',
2031 'src/systemctl/sysv-compat.h',
2032 'src/systemctl/sysv-compat.c',
2033 include_directories : includes,
2034 link_with : systemctl_link_with,
2035 dependencies : [threads,
2036 libcap,
2037 libselinux,
2038 libxz,
2039 liblz4],
2040 install_rpath : rootlibexecdir,
2041 install : true,
2042 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002043
Lennart Poettering61d05782018-04-16 21:41:40 +02002044if conf.get('ENABLE_PORTABLED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002045 executable(
2046 'systemd-portabled',
2047 systemd_portabled_sources,
2048 include_directories : includes,
2049 link_with : [libshared],
2050 dependencies : [threads],
2051 install_rpath : rootlibexecdir,
2052 install : true,
2053 install_dir : rootlibexecdir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002054
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002055 public_programs += executable(
2056 'portablectl',
2057 'src/portable/portablectl.c',
2058 include_directories : includes,
2059 link_with : [libshared],
2060 dependencies : [threads],
2061 install_rpath : rootlibexecdir,
2062 install : true,
2063 install_dir : rootbindir)
Lennart Poettering61d05782018-04-16 21:41:40 +02002064endif
2065
Lennart Poetteringd093b622019-07-04 18:33:30 +02002066if conf.get('ENABLE_USERDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002067 executable(
2068 'systemd-userwork',
2069 systemd_userwork_sources,
2070 include_directories : includes,
2071 link_with : [libshared],
2072 dependencies : [threads],
2073 install_rpath : rootlibexecdir,
2074 install : true,
2075 install_dir : rootlibexecdir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002076
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002077 executable(
2078 'systemd-userdbd',
2079 systemd_userdbd_sources,
2080 include_directories : includes,
2081 link_with : [libshared],
2082 dependencies : [threads],
2083 install_rpath : rootlibexecdir,
2084 install : true,
2085 install_dir : rootlibexecdir)
Lennart Poettering16049372019-08-05 18:22:01 +02002086
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002087 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002088 'userdbctl',
2089 userdbctl_sources,
2090 include_directories : includes,
2091 link_with : [libshared],
2092 dependencies : [threads],
2093 install_rpath : rootlibexecdir,
2094 install : true,
2095 install_dir : rootbindir)
Lennart Poetteringd093b622019-07-04 18:33:30 +02002096endif
2097
Lennart Poettering70a5db52019-07-04 18:35:39 +02002098if conf.get('ENABLE_HOMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002099 executable(
2100 'systemd-homework',
2101 systemd_homework_sources,
2102 include_directories : includes,
2103 link_with : [libshared],
2104 dependencies : [threads,
2105 libcryptsetup,
2106 libblkid,
2107 libcrypt,
2108 libopenssl,
2109 libfdisk,
2110 libp11kit],
2111 install_rpath : rootlibexecdir,
2112 install : true,
2113 install_dir : rootlibexecdir)
Lennart Poettering70a5db52019-07-04 18:35:39 +02002114
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002115 executable(
2116 'systemd-homed',
2117 systemd_homed_sources,
2118 include_directories : includes,
2119 link_with : [libshared],
2120 dependencies : [threads,
2121 libcrypt,
2122 libopenssl,
2123 libpwquality],
2124 install_rpath : rootlibexecdir,
2125 install : true,
2126 install_dir : rootlibexecdir)
Lennart Poettering4aa0a8a2019-07-04 19:06:15 +02002127
Zbigniew Jędrzejewski-Szmek460e5af2020-04-28 09:08:37 +02002128 public_programs += executable(
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002129 'homectl',
2130 homectl_sources,
2131 include_directories : includes,
2132 link_with : [libshared],
2133 dependencies : [threads,
2134 libcrypt,
2135 libopenssl,
2136 libp11kit,
2137 libpwquality],
2138 install_rpath : rootlibexecdir,
2139 install : true,
2140 install_dir : rootbindir)
Lennart Poettering26cf9fb2019-07-04 19:06:26 +02002141
2142 if conf.get('HAVE_PAM') == 1
2143 version_script_arg = join_paths(project_source_root, pam_systemd_home_sym)
2144 pam_systemd = shared_library(
2145 'pam_systemd_home',
2146 pam_systemd_home_c,
2147 name_prefix : '',
2148 include_directories : includes,
2149 link_args : ['-shared',
2150 '-Wl,--version-script=' + version_script_arg],
2151 link_with : [libsystemd_static,
2152 libshared_static],
2153 dependencies : [threads,
2154 libpam,
2155 libpam_misc,
2156 libcrypt],
2157 link_depends : pam_systemd_home_sym,
2158 install : true,
2159 install_dir : pamlibdir)
2160 endif
Lennart Poettering70a5db52019-07-04 18:35:39 +02002161endif
2162
Zbigniew Jędrzejewski-Szmekba7f4ae2018-02-28 10:20:48 +01002163foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
2164 meson.add_install_script(meson_make_symlink,
2165 join_paths(rootbindir, 'systemctl'),
2166 join_paths(rootsbindir, alias))
2167endforeach
2168
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002169if conf.get('ENABLE_BACKLIGHT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002170 executable(
2171 'systemd-backlight',
2172 'src/backlight/backlight.c',
2173 include_directories : includes,
2174 link_with : [libshared],
2175 install_rpath : rootlibexecdir,
2176 install : true,
2177 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002178endif
2179
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002180if conf.get('ENABLE_RFKILL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002181 executable(
2182 'systemd-rfkill',
2183 'src/rfkill/rfkill.c',
2184 include_directories : includes,
2185 link_with : [libshared],
2186 install_rpath : rootlibexecdir,
2187 install : true,
2188 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002189endif
2190
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002191executable(
2192 'systemd-system-update-generator',
2193 'src/system-update-generator/system-update-generator.c',
2194 include_directories : includes,
2195 link_with : [libshared],
2196 install_rpath : rootlibexecdir,
2197 install : true,
2198 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002199
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002200if conf.get('HAVE_LIBCRYPTSETUP') == 1
Lennart Poettering08669702019-08-22 10:21:11 +02002201 systemd_cryptsetup_sources = files('''
2202 src/cryptsetup/cryptsetup.c
2203 src/cryptsetup/cryptsetup-pkcs11.h
2204'''.split())
2205
2206 if conf.get('HAVE_P11KIT') == 1
2207 systemd_cryptsetup_sources += files('src/cryptsetup/cryptsetup-pkcs11.c')
2208 endif
2209
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002210 executable(
2211 'systemd-cryptsetup',
2212 systemd_cryptsetup_sources,
2213 include_directories : includes,
2214 link_with : [libshared],
2215 dependencies : [libcryptsetup,
2216 libp11kit],
2217 install_rpath : rootlibexecdir,
2218 install : true,
2219 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002220
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002221 executable(
2222 'systemd-cryptsetup-generator',
2223 'src/cryptsetup/cryptsetup-generator.c',
2224 include_directories : includes,
2225 link_with : [libshared],
2226 dependencies : [libcryptsetup],
2227 install_rpath : rootlibexecdir,
2228 install : true,
2229 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002230
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002231 executable(
2232 'systemd-veritysetup',
2233 'src/veritysetup/veritysetup.c',
2234 include_directories : includes,
2235 link_with : [libshared],
2236 dependencies : [libcryptsetup],
2237 install_rpath : rootlibexecdir,
2238 install : true,
2239 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002240
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002241 executable(
2242 'systemd-veritysetup-generator',
2243 'src/veritysetup/veritysetup-generator.c',
2244 include_directories : includes,
2245 link_with : [libshared],
2246 dependencies : [libcryptsetup],
2247 install_rpath : rootlibexecdir,
2248 install : true,
2249 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002250endif
2251
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002252if conf.get('HAVE_SYSV_COMPAT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002253 executable(
2254 'systemd-sysv-generator',
2255 'src/sysv-generator/sysv-generator.c',
2256 include_directories : includes,
2257 link_with : [libshared],
2258 install_rpath : rootlibexecdir,
2259 install : true,
2260 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002261
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002262 executable(
2263 'systemd-rc-local-generator',
2264 'src/rc-local-generator/rc-local-generator.c',
2265 include_directories : includes,
2266 link_with : [libshared],
2267 install_rpath : rootlibexecdir,
2268 install : true,
2269 install_dir : systemgeneratordir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002270endif
2271
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002272if conf.get('ENABLE_HOSTNAMED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002273 executable(
2274 'systemd-hostnamed',
2275 'src/hostname/hostnamed.c',
2276 include_directories : includes,
2277 link_with : [libshared],
2278 install_rpath : rootlibexecdir,
2279 install : true,
2280 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002281
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002282 public_programs += executable(
2283 'hostnamectl',
2284 'src/hostname/hostnamectl.c',
2285 include_directories : includes,
2286 link_with : [libshared],
2287 install_rpath : rootlibexecdir,
2288 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002289endif
2290
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002291if conf.get('ENABLE_LOCALED') == 1
2292 if conf.get('HAVE_XKBCOMMON') == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002293 # logind will load libxkbcommon.so dynamically on its own
2294 deps = [libdl]
2295 else
2296 deps = []
2297 endif
Zbigniew Jędrzejewski-Szmek1eeb43f2017-04-13 19:37:14 -04002298
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002299 executable(
2300 'systemd-localed',
2301 systemd_localed_sources,
2302 include_directories : includes,
2303 link_with : [libshared],
2304 dependencies : deps,
2305 install_rpath : rootlibexecdir,
2306 install : true,
2307 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002308
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002309 public_programs += executable(
2310 'localectl',
2311 localectl_sources,
2312 include_directories : includes,
2313 link_with : [libshared],
2314 install_rpath : rootlibexecdir,
2315 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002316endif
2317
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002318if conf.get('ENABLE_TIMEDATED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002319 executable(
2320 'systemd-timedated',
2321 'src/timedate/timedated.c',
2322 include_directories : includes,
2323 link_with : [libshared],
2324 install_rpath : rootlibexecdir,
2325 install : true,
2326 install_dir : rootlibexecdir)
Yu Watanabe6129ec82018-05-03 18:07:43 +09002327endif
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002328
Yu Watanabe6129ec82018-05-03 18:07:43 +09002329if conf.get('ENABLE_TIMEDATECTL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002330 public_programs += executable(
2331 'timedatectl',
2332 'src/timedate/timedatectl.c',
2333 include_directories : includes,
2334 install_rpath : rootlibexecdir,
2335 link_with : [libshared],
2336 dependencies : [libm],
2337 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002338endif
2339
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002340if conf.get('ENABLE_TIMESYNCD') == 1
Robert Scheckfd74a132020-02-08 14:02:09 +01002341 if get_option('link-timesyncd-shared')
2342 timesyncd_link_with = [libshared]
2343 else
2344 timesyncd_link_with = [libsystemd_static,
2345 libshared_static,
2346 libjournal_client,
2347 libbasic_gcrypt]
2348 endif
2349
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002350 executable(
2351 'systemd-timesyncd',
2352 systemd_timesyncd_sources,
2353 include_directories : includes,
2354 link_with : [timesyncd_link_with],
2355 dependencies : [threads,
2356 libm],
2357 install_rpath : rootlibexecdir,
2358 install : true,
2359 install_dir : rootlibexecdir)
Peter A. Bigot5c3376e2018-03-21 06:42:04 -05002360
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002361 executable(
2362 'systemd-time-wait-sync',
2363 'src/time-wait-sync/time-wait-sync.c',
2364 include_directories : includes,
2365 link_with : [timesyncd_link_with],
2366 install_rpath : rootlibexecdir,
2367 install : true,
2368 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002369endif
2370
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002371if conf.get('ENABLE_MACHINED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002372 executable(
2373 'systemd-machined',
2374 systemd_machined_sources,
2375 include_directories : includes,
2376 link_with : [libmachine_core,
2377 libshared],
2378 install_rpath : rootlibexecdir,
2379 install : true,
2380 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002381
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002382 public_programs += executable(
2383 'machinectl',
2384 'src/machine/machinectl.c',
2385 include_directories : includes,
2386 link_with : [libshared],
2387 dependencies : [threads,
2388 libxz,
2389 liblz4],
2390 install_rpath : rootlibexecdir,
2391 install : true,
2392 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002393endif
2394
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002395if conf.get('ENABLE_IMPORTD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002396 executable(
2397 'systemd-importd',
2398 systemd_importd_sources,
2399 include_directories : includes,
2400 link_with : [libshared],
2401 dependencies : [threads],
2402 install_rpath : rootlibexecdir,
2403 install : true,
2404 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002405
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002406 systemd_pull = executable(
2407 'systemd-pull',
2408 systemd_pull_sources,
2409 include_directories : includes,
2410 link_with : [libshared],
2411 dependencies : [versiondep,
2412 libcurl,
2413 libz,
2414 libbzip2,
2415 libxz,
2416 libgcrypt],
2417 install_rpath : rootlibexecdir,
2418 install : true,
2419 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002420
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002421 systemd_import = executable(
2422 'systemd-import',
2423 systemd_import_sources,
2424 include_directories : includes,
2425 link_with : [libshared],
2426 dependencies : [libcurl,
2427 libz,
2428 libbzip2,
2429 libxz],
2430 install_rpath : rootlibexecdir,
2431 install : true,
2432 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002433
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002434 systemd_import_fs = executable(
2435 'systemd-import-fs',
2436 systemd_import_fs_sources,
2437 include_directories : includes,
2438 link_with : [libshared],
2439 install_rpath : rootlibexecdir,
2440 install : true,
2441 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002442
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002443 systemd_export = executable(
2444 'systemd-export',
2445 systemd_export_sources,
2446 include_directories : includes,
2447 link_with : [libshared],
2448 dependencies : [libcurl,
2449 libz,
2450 libbzip2,
2451 libxz],
2452 install_rpath : rootlibexecdir,
2453 install : true,
2454 install_dir : rootlibexecdir)
Lennart Poettering1d7579c2018-10-10 21:20:08 +02002455
2456 public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002457endif
2458
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002459if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002460 public_programs += executable(
2461 'systemd-journal-upload',
2462 systemd_journal_upload_sources,
2463 include_directories : includes,
2464 link_with : [libshared],
2465 dependencies : [versiondep,
2466 threads,
2467 libcurl,
2468 libgnutls,
2469 libxz,
2470 liblz4],
2471 install_rpath : rootlibexecdir,
2472 install : true,
2473 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002474endif
2475
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002476if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002477 public_programs += executable(
2478 'systemd-journal-remote',
2479 systemd_journal_remote_sources,
2480 include_directories : includes,
2481 link_with : [libshared,
2482 libsystemd_journal_remote],
2483 dependencies : [threads,
2484 libmicrohttpd,
2485 libgnutls,
2486 libxz,
2487 liblz4],
2488 install_rpath : rootlibexecdir,
2489 install : true,
2490 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002491
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002492 public_programs += executable(
2493 'systemd-journal-gatewayd',
2494 systemd_journal_gatewayd_sources,
2495 include_directories : includes,
2496 link_with : [libshared],
2497 dependencies : [threads,
2498 libmicrohttpd,
2499 libgnutls,
2500 libxz,
2501 liblz4],
2502 install_rpath : rootlibexecdir,
2503 install : true,
2504 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002505endif
2506
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002507if conf.get('ENABLE_COREDUMP') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002508 executable(
2509 'systemd-coredump',
2510 systemd_coredump_sources,
2511 include_directories : includes,
2512 link_with : [libshared],
2513 dependencies : [threads,
2514 libacl,
2515 libdw,
2516 libxz,
2517 liblz4],
2518 install_rpath : rootlibexecdir,
2519 install : true,
2520 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002521
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002522 public_programs += executable(
2523 'coredumpctl',
2524 coredumpctl_sources,
2525 include_directories : includes,
2526 link_with : [libshared],
2527 dependencies : [threads,
2528 libxz,
2529 liblz4],
2530 install_rpath : rootlibexecdir,
2531 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002532endif
2533
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002534if conf.get('ENABLE_PSTORE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002535 executable(
2536 'systemd-pstore',
2537 systemd_pstore_sources,
2538 include_directories : includes,
2539 link_with : [libshared],
2540 dependencies : [threads,
2541 libacl,
2542 libdw,
2543 libxz,
2544 liblz4],
2545 install_rpath : rootlibexecdir,
2546 install : true,
2547 install_dir : rootlibexecdir)
Eric DeVolder9b4abc62019-05-16 08:59:01 -05002548endif
2549
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002550if conf.get('ENABLE_BINFMT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002551 public_programs += executable(
2552 'systemd-binfmt',
2553 'src/binfmt/binfmt.c',
2554 include_directories : includes,
2555 link_with : [libshared],
2556 install_rpath : rootlibexecdir,
2557 install : true,
2558 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002559
2560 meson.add_install_script('sh', '-c',
2561 mkdir_p.format(binfmtdir))
2562 meson.add_install_script('sh', '-c',
2563 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
2564endif
2565
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002566if conf.get('ENABLE_REPART') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002567 exe = executable(
2568 'systemd-repart',
2569 systemd_repart_sources,
2570 include_directories : includes,
2571 link_with : [libshared],
2572 dependencies : [threads,
2573 libcryptsetup,
2574 libblkid,
2575 libfdisk,
2576 libopenssl],
2577 install_rpath : rootlibexecdir,
2578 install : true,
2579 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmeke29e4d52020-03-20 20:22:42 +01002580
2581 if want_tests != 'false'
2582 test('test-repart',
2583 test_repart_sh,
2584 args : exe.full_path())
2585 endif
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01002586endif
2587
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002588if conf.get('ENABLE_VCONSOLE') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002589 executable(
2590 'systemd-vconsole-setup',
2591 'src/vconsole/vconsole-setup.c',
2592 include_directories : includes,
2593 link_with : [libshared],
2594 install_rpath : rootlibexecdir,
2595 install : true,
2596 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002597endif
2598
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002599if conf.get('ENABLE_RANDOMSEED') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002600 executable(
2601 'systemd-random-seed',
2602 'src/random-seed/random-seed.c',
2603 include_directories : includes,
2604 link_with : [libshared],
2605 install_rpath : rootlibexecdir,
2606 install : true,
2607 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002608endif
2609
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002610if conf.get('ENABLE_FIRSTBOOT') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002611 executable(
2612 'systemd-firstboot',
2613 'src/firstboot/firstboot.c',
2614 include_directories : includes,
2615 link_with : [libshared],
2616 dependencies : [libcrypt],
2617 install_rpath : rootlibexecdir,
2618 install : true,
2619 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002620endif
2621
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002622executable(
2623 'systemd-remount-fs',
2624 'src/remount-fs/remount-fs.c',
2625 include_directories : includes,
2626 link_with : [libcore_shared,
2627 libshared],
2628 install_rpath : rootlibexecdir,
2629 install : true,
2630 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002631
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002632executable(
2633 'systemd-machine-id-setup',
2634 'src/machine-id-setup/machine-id-setup-main.c',
2635 include_directories : includes,
2636 link_with : [libcore_shared,
2637 libshared],
2638 install_rpath : rootlibexecdir,
2639 install : true,
2640 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002641
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002642executable(
2643 'systemd-fsck',
2644 'src/fsck/fsck.c',
2645 include_directories : includes,
2646 link_with : [libshared],
2647 install_rpath : rootlibexecdir,
2648 install : true,
2649 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002650
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002651executable('systemd-growfs',
2652 'src/partition/growfs.c',
2653 include_directories : includes,
2654 link_with : [libshared],
Zbigniew Jędrzejewski-Szmekc34b75a2017-11-21 18:56:52 +01002655 dependencies : [libcryptsetup],
Zbigniew Jędrzejewski-Szmek80750ad2017-10-23 13:40:38 +02002656 install_rpath : rootlibexecdir,
2657 install : true,
2658 install_dir : rootlibexecdir)
2659
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002660executable(
2661 'systemd-makefs',
2662 'src/partition/makefs.c',
2663 include_directories : includes,
2664 link_with : [libshared],
2665 install_rpath : rootlibexecdir,
2666 install : true,
2667 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekb7f28ac2017-11-26 22:51:29 +01002668
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002669executable(
2670 'systemd-sleep',
2671 'src/sleep/sleep.c',
2672 include_directories : includes,
2673 link_with : [libshared],
2674 install_rpath : rootlibexecdir,
2675 install : true,
2676 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002677
Yu Watanabed25e1272019-01-03 02:32:57 +09002678install_data('src/sleep/sleep.conf',
2679 install_dir : pkgsysconfdir)
2680
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002681public_programs += executable(
2682 'systemd-sysctl',
2683 'src/sysctl/sysctl.c',
2684 include_directories : includes,
2685 link_with : [libshared],
2686 install_rpath : rootlibexecdir,
2687 install : true,
2688 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002689
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002690executable(
2691 'systemd-ac-power',
2692 'src/ac-power/ac-power.c',
2693 include_directories : includes,
2694 link_with : [libshared],
2695 install_rpath : rootlibexecdir,
2696 install : true,
2697 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002698
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002699public_programs += executable(
2700 'systemd-detect-virt',
2701 'src/detect-virt/detect-virt.c',
2702 include_directories : includes,
2703 link_with : [libshared],
2704 install_rpath : rootlibexecdir,
2705 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002706
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002707public_programs += executable(
2708 'systemd-delta',
2709 'src/delta/delta.c',
2710 include_directories : includes,
2711 link_with : [libshared],
2712 install_rpath : rootlibexecdir,
2713 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002714
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002715public_programs += executable(
2716 'systemd-escape',
2717 'src/escape/escape.c',
2718 include_directories : includes,
2719 link_with : [libshared],
2720 install_rpath : rootlibexecdir,
2721 install : true,
2722 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002723
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002724public_programs += executable(
2725 'systemd-notify',
2726 'src/notify/notify.c',
2727 include_directories : includes,
2728 link_with : [libshared],
2729 install_rpath : rootlibexecdir,
2730 install : true,
2731 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002732
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002733executable(
2734 'systemd-volatile-root',
2735 'src/volatile-root/volatile-root.c',
2736 include_directories : includes,
2737 link_with : [libshared],
2738 install_rpath : rootlibexecdir,
2739 install : true,
2740 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002741
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002742executable(
2743 'systemd-cgroups-agent',
2744 'src/cgroups-agent/cgroups-agent.c',
2745 include_directories : includes,
2746 link_with : [libshared],
2747 install_rpath : rootlibexecdir,
2748 install : true,
2749 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002750
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002751public_programs += executable(
2752 'systemd-id128',
2753 'src/id128/id128.c',
2754 include_directories : includes,
2755 link_with : [libshared],
2756 install_rpath : rootlibexecdir,
2757 install : true)
Zbigniew Jędrzejewski-Szmek0d1d5122018-08-21 16:08:48 +02002758
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002759public_programs += executable(
2760 'systemd-path',
2761 'src/path/path.c',
2762 include_directories : includes,
2763 link_with : [libshared],
2764 install_rpath : rootlibexecdir,
2765 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002766
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002767public_programs += executable(
2768 'systemd-ask-password',
2769 'src/ask-password/ask-password.c',
2770 include_directories : includes,
2771 link_with : [libshared],
2772 install_rpath : rootlibexecdir,
2773 install : true,
2774 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002775
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002776executable(
2777 'systemd-reply-password',
2778 'src/reply-password/reply-password.c',
2779 include_directories : includes,
2780 link_with : [libshared],
2781 install_rpath : rootlibexecdir,
2782 install : true,
2783 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002784
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002785public_programs += executable(
2786 'systemd-tty-ask-password-agent',
2787 'src/tty-ask-password-agent/tty-ask-password-agent.c',
2788 include_directories : includes,
2789 link_with : [libshared],
2790 install_rpath : rootlibexecdir,
2791 install : true,
2792 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002793
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002794public_programs += executable(
2795 'systemd-cgls',
2796 'src/cgls/cgls.c',
2797 include_directories : includes,
2798 link_with : [libshared],
2799 install_rpath : rootlibexecdir,
2800 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002801
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002802public_programs += executable(
2803 'systemd-cgtop',
2804 'src/cgtop/cgtop.c',
2805 include_directories : includes,
2806 link_with : [libshared],
2807 install_rpath : rootlibexecdir,
2808 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002809
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002810executable(
2811 'systemd-initctl',
2812 'src/initctl/initctl.c',
2813 include_directories : includes,
2814 link_with : [libshared],
2815 install_rpath : rootlibexecdir,
2816 install : true,
2817 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002818
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002819public_programs += executable(
2820 'systemd-mount',
2821 'src/mount/mount-tool.c',
2822 include_directories : includes,
2823 link_with : [libshared],
2824 dependencies: [libmount],
2825 install_rpath : rootlibexecdir,
2826 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002827
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002828meson.add_install_script(meson_make_symlink,
Michael Bieble17e5ba2017-04-13 10:30:56 -04002829 'systemd-mount', join_paths(bindir, 'systemd-umount'))
Zbigniew Jędrzejewski-Szmek7b76fce2017-04-09 23:55:50 -04002830
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002831public_programs += executable(
2832 'systemd-run',
2833 'src/run/run.c',
2834 include_directories : includes,
2835 link_with : [libshared],
2836 install_rpath : rootlibexecdir,
2837 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002838
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002839public_programs += executable(
2840 'systemd-stdio-bridge',
2841 'src/stdio-bridge/stdio-bridge.c',
2842 include_directories : includes,
2843 link_with : [libshared],
2844 dependencies : [versiondep],
2845 install_rpath : rootlibexecdir,
2846 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002847
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002848public_programs += executable(
2849 'busctl',
2850 'src/busctl/busctl.c',
2851 'src/busctl/busctl-introspect.c',
2852 'src/busctl/busctl-introspect.h',
2853 include_directories : includes,
2854 link_with : [libshared],
2855 install_rpath : rootlibexecdir,
2856 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002857
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002858if conf.get('ENABLE_SYSUSERS') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002859 public_programs += executable(
2860 'systemd-sysusers',
2861 'src/sysusers/sysusers.c',
2862 include_directories : includes,
2863 link_with : [libshared],
2864 install_rpath : rootlibexecdir,
2865 install : true,
2866 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002867endif
2868
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002869if conf.get('ENABLE_TMPFILES') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002870 exe = executable(
2871 'systemd-tmpfiles',
2872 'src/tmpfiles/tmpfiles.c',
2873 include_directories : includes,
2874 link_with : [libshared],
2875 dependencies : [libacl],
2876 install_rpath : rootlibexecdir,
2877 install : true,
2878 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02002879 public_programs += exe
Zbigniew Jędrzejewski-Szmekd9daae52017-11-22 14:13:32 +01002880
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02002881 if want_tests != 'false'
2882 test('test-systemd-tmpfiles',
2883 test_systemd_tmpfiles_py,
2884 # https://github.com/mesonbuild/meson/issues/2681
2885 args : exe.full_path())
2886 endif
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002887endif
2888
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002889if conf.get('ENABLE_HWDB') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002890 public_programs += executable(
2891 'systemd-hwdb',
2892 'src/hwdb/hwdb.c',
2893 'src/libsystemd/sd-hwdb/hwdb-internal.h',
2894 include_directories : includes,
2895 link_with : [libudev_static],
2896 install_rpath : udev_rpath,
2897 install : true,
2898 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002899endif
2900
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002901if conf.get('ENABLE_QUOTACHECK') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002902 executable(
2903 'systemd-quotacheck',
2904 'src/quotacheck/quotacheck.c',
2905 include_directories : includes,
2906 link_with : [libshared],
2907 install_rpath : rootlibexecdir,
2908 install : true,
2909 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002910endif
2911
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002912public_programs += executable(
2913 'systemd-socket-proxyd',
2914 'src/socket-proxy/socket-proxyd.c',
2915 include_directories : includes,
2916 link_with : [libshared],
2917 dependencies : [threads],
2918 install_rpath : rootlibexecdir,
2919 install : true,
2920 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002921
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002922public_programs += executable(
2923 'systemd-udevd',
2924 systemd_udevd_sources,
2925 include_directories : includes,
2926 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2927 link_with : [libudev_core,
2928 libsystemd_network,
2929 libudev_static],
2930 dependencies : [versiondep,
2931 threads,
2932 libkmod,
2933 libidn,
2934 libacl,
2935 libblkid],
2936 install_rpath : udev_rpath,
2937 install : true,
2938 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002939
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002940public_programs += executable(
2941 'udevadm',
2942 udevadm_sources,
2943 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
2944 include_directories : includes,
2945 link_with : [libudev_core,
2946 libsystemd_network,
2947 libudev_static],
2948 dependencies : [versiondep,
2949 threads,
2950 libkmod,
2951 libidn,
2952 libacl,
2953 libblkid],
2954 install_rpath : udev_rpath,
2955 install : true,
2956 install_dir : rootbindir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002957
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002958executable(
2959 'systemd-shutdown',
2960 systemd_shutdown_sources,
2961 include_directories : includes,
2962 link_with : [libcore_shared,
2963 libshared],
2964 dependencies : [libmount],
2965 install_rpath : rootlibexecdir,
2966 install : true,
2967 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002968
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002969executable(
2970 'systemd-update-done',
2971 'src/update-done/update-done.c',
2972 include_directories : includes,
2973 link_with : [libshared],
2974 install_rpath : rootlibexecdir,
2975 install : true,
2976 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002977
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002978executable(
2979 'systemd-update-utmp',
2980 'src/update-utmp/update-utmp.c',
2981 include_directories : includes,
2982 link_with : [libshared],
2983 dependencies : [libaudit],
2984 install_rpath : rootlibexecdir,
2985 install : true,
2986 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04002987
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02002988if conf.get('HAVE_KMOD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02002989 executable(
2990 'systemd-modules-load',
2991 'src/modules-load/modules-load.c',
2992 include_directories : includes,
2993 link_with : [libshared],
2994 dependencies : [libkmod],
2995 install_rpath : rootlibexecdir,
2996 install : true,
2997 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04002998
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04002999 meson.add_install_script('sh', '-c',
3000 mkdir_p.format(modulesloaddir))
3001 meson.add_install_script('sh', '-c',
3002 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003003endif
3004
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003005public_programs += executable(
3006 'systemd-nspawn',
3007 systemd_nspawn_sources,
3008 include_directories : includes,
3009 link_with : [libcore_shared,
3010 libnspawn_core,
3011 libshared],
3012 dependencies : [libblkid,
3013 libseccomp],
3014 install_rpath : rootlibexecdir,
3015 install : true)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003016
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003017if conf.get('ENABLE_NETWORKD') == 1
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003018 executable(
3019 'systemd-networkd',
3020 systemd_networkd_sources,
3021 include_directories : network_include_dir,
3022 link_with : [libnetworkd_core,
3023 libsystemd_network,
3024 libudev_static,
3025 networkd_link_with],
3026 dependencies : [threads],
3027 install_rpath : rootlibexecdir,
3028 install : true,
3029 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003030
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003031 executable(
3032 'systemd-networkd-wait-online',
3033 systemd_networkd_wait_online_sources,
3034 include_directories : includes,
3035 link_with : [libnetworkd_core,
3036 networkd_link_with],
3037 install_rpath : rootlibexecdir,
3038 install : true,
3039 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003040
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003041 public_programs += executable(
3042 'networkctl',
3043 networkctl_sources,
3044 include_directories : includes,
3045 link_with : [libsystemd_network,
3046 networkd_link_with],
3047 install_rpath : rootlibexecdir,
3048 install : true,
3049 install_dir : rootbindir)
Yu Watanabe426c1d32019-07-13 03:35:04 +09003050
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003051 exe = executable(
3052 'systemd-network-generator',
3053 network_generator_sources,
3054 include_directories : includes,
3055 link_with : [networkd_link_with],
3056 install_rpath : rootlibexecdir,
3057 install : true,
3058 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmekfbaa1132019-12-10 13:04:39 +01003059
3060 if want_tests != 'false'
3061 test('test-network-generator-conversion',
3062 test_network_generator_conversion_sh,
3063 # https://github.com/mesonbuild/meson/issues/2681
3064 args : exe.full_path())
3065 endif
Felipe Satelerdcfe0722017-08-21 09:48:41 -03003066endif
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003067
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003068executable(
3069 'systemd-sulogin-shell',
3070 ['src/sulogin-shell/sulogin-shell.c'],
3071 include_directories : includes,
3072 link_with : [libshared],
3073 install_rpath : rootlibexecdir,
3074 install : true,
3075 install_dir : rootlibexecdir)
Zbigniew Jędrzejewski-Szmeke821f6a2017-12-07 10:44:43 +01003076
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003077############################################################
3078
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003079custom_target(
3080 'systemd-runtest.env',
3081 output : 'systemd-runtest.env',
3082 command : ['sh', '-c', '{ ' +
Davide Cavalca1485aac2019-02-27 11:19:07 -05003083 'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
Filipe Brandenburger49cdae62018-09-12 00:23:40 -07003084 'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
Filipe Brandenburgere2d41372018-09-11 23:55:02 -07003085 '} >@OUTPUT@'],
3086 build_by_default : true)
3087
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003088foreach tuple : tests
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003089 sources = tuple[0]
3090 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3091 dependencies = tuple[2]
3092 condition = tuple.length() >= 4 ? tuple[3] : ''
3093 type = tuple.length() >= 5 ? tuple[4] : ''
3094 defs = tuple.length() >= 6 ? tuple[5] : []
3095 incs = tuple.length() >= 7 ? tuple[6] : includes
3096 timeout = 30
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003097
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003098 name = sources[0].split('/')[-1].split('.')[0]
3099 if type.startswith('timeout=')
3100 timeout = type.split('=')[1].to_int()
3101 type = ''
3102 endif
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003103
3104 if condition == '' or conf.get(condition) == 1
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003105 exe = executable(
3106 name,
3107 sources,
3108 include_directories : incs,
3109 link_with : link_with,
Zbigniew Jędrzejewski-Szmek60722ad2019-02-24 22:49:38 +01003110 dependencies : [versiondep,
3111 dependencies],
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003112 c_args : defs,
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003113 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003114 install_rpath : rootlibexecdir,
Michael Biebl7cdd9782017-06-23 03:23:30 +02003115 install : install_tests,
3116 install_dir : join_paths(testsdir, type))
Zbigniew Jędrzejewski-Szmek572baca2017-04-08 01:55:38 -04003117
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003118 if type == 'manual'
3119 message('@0@ is a manual test'.format(name))
3120 elif type == 'unsafe' and want_tests != 'unsafe'
3121 message('@0@ is an unsafe test'.format(name))
Zbigniew Jędrzejewski-Szmek3b2bdd62018-09-12 16:52:08 +02003122 elif want_tests != 'false'
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003123 test(name, exe,
3124 env : test_env,
3125 timeout : timeout)
3126 endif
3127 else
3128 message('Not compiling @0@ because @1@ is not true'.format(name, condition))
3129 endif
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003130endforeach
3131
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003132exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003133 'test-libsystemd-sym',
3134 test_libsystemd_sym_c,
3135 include_directories : includes,
3136 link_with : [libsystemd],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003137 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003138 install : install_tests,
3139 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003140if want_tests != 'false'
3141 test('test-libsystemd-sym', exe)
3142endif
Zbigniew Jędrzejewski-Szmek37ab1a22017-04-10 14:13:40 -04003143
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003144exe = executable(
3145 'test-libsystemd-static-sym',
3146 test_libsystemd_sym_c,
3147 include_directories : includes,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003148 link_with : [install_libsystemd_static],
3149 dependencies : [threads], # threads is already included in dependencies on the library,
3150 # but does not seem to get propagated. Add here as a work-around.
Yu Watanabefd1939f2018-09-12 21:47:56 +09003151 build_by_default : want_tests != 'false' and static_libsystemd_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003152 install : install_tests and static_libsystemd_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003153 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003154if want_tests != 'false' and static_libsystemd_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003155 test('test-libsystemd-static-sym', exe)
3156endif
3157
3158exe = executable(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003159 'test-libudev-sym',
3160 test_libudev_sym_c,
3161 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003162 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003163 link_with : [libudev],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003164 build_by_default : want_tests != 'false',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003165 install : install_tests,
3166 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003167if want_tests != 'false'
3168 test('test-libudev-sym', exe)
3169endif
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003170
3171exe = executable(
3172 'test-libudev-static-sym',
3173 test_libudev_sym_c,
3174 include_directories : includes,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003175 c_args : '-Wno-deprecated-declarations',
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003176 link_with : [install_libudev_static],
Yu Watanabefd1939f2018-09-12 21:47:56 +09003177 build_by_default : want_tests != 'false' and static_libudev_pic,
Davide Cavalca20f3d322018-04-24 13:34:48 -07003178 install : install_tests and static_libudev_pic,
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003179 install_dir : testsdir)
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003180if want_tests != 'false' and static_libudev_pic
Zbigniew Jędrzejewski-Szmek0632b4c2018-04-23 13:49:27 +02003181 test('test-libudev-static-sym', exe)
3182endif
Zbigniew Jędrzejewski-Szmeke0bec522017-04-10 15:20:42 -04003183
Zbigniew Jędrzejewski-Szmek69e96422017-04-07 00:19:09 -04003184############################################################
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003185
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003186fuzzer_exes = []
3187
Michael Olbrich59967402018-11-11 11:27:35 +01003188if get_option('tests') != 'false'
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003189 foreach tuple : fuzzers
3190 sources = tuple[0]
3191 link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
3192 dependencies = tuple[2]
3193 defs = tuple.length() >= 4 ? tuple[3] : []
3194 incs = tuple.length() >= 5 ? tuple[4] : includes
3195 link_args = []
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003196
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003197 if want_ossfuzz
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003198 dependencies += fuzzing_engine
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003199 elif want_libfuzzer
3200 if fuzzing_engine.found()
3201 dependencies += fuzzing_engine
3202 else
3203 link_args += ['-fsanitize=fuzzer']
3204 endif
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003205 else
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003206 sources += 'src/fuzz/fuzz-main.c'
Evgeny Vereshchagin9c5c4672019-05-09 00:03:41 +02003207 endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003208
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003209 name = sources[0].split('/')[-1].split('.')[0]
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003210
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003211 fuzzer_exes += executable(
3212 name,
3213 sources,
3214 include_directories : [incs, include_directories('src/fuzz')],
3215 link_with : link_with,
3216 dependencies : dependencies,
3217 c_args : defs,
3218 link_args: link_args,
3219 install : false)
3220 endforeach
Michael Olbrich59967402018-11-11 11:27:35 +01003221endif
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003222
Zbigniew Jędrzejewski-Szmek6164ec42020-04-28 09:08:04 +02003223run_target(
3224 'fuzzers',
Zbigniew Jędrzejewski-Szmek63058f42019-01-05 13:20:52 +01003225 depends : fuzzer_exes,
Jonathan Rudenberg7db7d5b2018-01-13 19:51:07 -05003226 command : ['true'])
3227
3228############################################################
3229
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003230make_directive_index_py = find_program('tools/make-directive-index.py')
3231make_man_index_py = find_program('tools/make-man-index.py')
Zbigniew Jędrzejewski-Szmekb184e8f2017-04-13 19:59:21 -04003232xml_helper_py = find_program('tools/xml_helper.py')
Zbigniew Jędrzejewski-Szmekabba22c2017-04-15 00:40:59 -04003233hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
Zbigniew Jędrzejewski-Szmek62d39992019-11-15 11:32:24 +01003234autosuspend_update_sh = find_program('tools/meson-autosuspend-update.sh')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003235
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003236subdir('sysctl.d')
3237subdir('sysusers.d')
3238subdir('tmpfiles.d')
Zbigniew Jędrzejewski-Szmek4f10b802019-10-08 16:52:10 +02003239subdir('hwdb.d')
3240subdir('units')
Zbigniew Jędrzejewski-Szmeke783f952017-11-23 13:23:42 +01003241subdir('presets')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003242subdir('network')
3243subdir('man')
3244subdir('shell-completion/bash')
3245subdir('shell-completion/zsh')
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003246subdir('docs/sysvinit')
3247subdir('docs/var-log')
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003248
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003249install_subdir('factory/etc',
3250 install_dir : factorydir)
3251
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003252install_data('xorg/50-systemd-user.sh',
3253 install_dir : xinitrcdir)
Dimitri John Ledkov582faeb2017-08-02 13:41:18 +01003254install_data('modprobe.d/systemd.conf',
3255 install_dir : modprobedir)
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003256install_data('LICENSE.GPL2',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003257 'LICENSE.LGPL2.1',
Lennart Poetteringf09eb762018-02-26 11:48:46 +01003258 'NEWS',
3259 'README',
Faheel Ahmadeea98402018-10-30 23:01:20 +05303260 'docs/CODING_STYLE.md',
Filipe Brandenburger1d1cb162018-09-07 01:22:34 -07003261 'docs/DISTRO_PORTING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003262 'docs/ENVIRONMENT.md',
Zbigniew Jędrzejewski-Szmek5425f8a2020-01-15 13:45:04 +01003263 'docs/HACKING.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003264 'docs/TRANSIENT-SETTINGS.md',
Filipe Brandenburgerb6dc0d72018-09-07 01:44:49 -07003265 'docs/TRANSLATORS.md',
Filipe Brandenburger9e825eb2018-09-07 01:02:42 -07003266 'docs/UIDS-GIDS.md',
Zbigniew Jędrzejewski-Szmek5c231282017-04-04 23:03:47 -04003267 'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
3268 install_dir : docdir)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003269
Zbigniew Jędrzejewski-Szmek94e75a52017-04-09 23:55:05 -04003270meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
3271meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
3272
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003273############################################################
3274
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003275meson_check_help = find_program('tools/meson-check-help.sh')
3276
3277foreach exec : public_programs
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003278 name = exec.full_path().split('/')[-1]
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003279 if want_tests != 'false'
3280 test('check-help-' + name,
3281 meson_check_help,
Zbigniew Jędrzejewski-Szmekc1cd6742018-09-12 16:57:06 +02003282 args : exec.full_path())
Zbigniew Jędrzejewski-Szmek938be082018-09-12 11:08:49 +02003283 endif
Zbigniew Jędrzejewski-Szmek005a29f2017-04-13 11:52:05 -04003284endforeach
3285
3286############################################################
3287
Zbigniew Jędrzejewski-Szmekc6448ee2019-05-07 20:46:36 +02003288check_directives_sh = find_program('tools/check-directives.sh')
3289
3290if want_tests != 'false'
3291 test('check-directives',
3292 check_directives_sh,
3293 args : project_source_root)
3294endif
3295
3296############################################################
3297
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003298# Enable tests for all supported sanitizers
3299foreach tuple : sanitizers
3300 sanitizer = tuple[0]
3301 build = tuple[1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003302
Yu Watanabe7a6397d2018-05-15 20:18:24 +09003303 if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003304 prev = ''
3305 foreach p : fuzz_regression_tests
3306 b = p.split('/')[-2]
3307 c = p.split('/')[-1]
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003308
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003309 name = '@0@:@1@'.format(b, sanitizer)
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003310
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003311 if name != prev
3312 if want_tests == 'false'
3313 message('Not compiling @0@ because tests is set to false'.format(name))
3314 elif slow_tests
3315 exe = custom_target(
3316 name,
3317 output : name,
3318 depends : build,
3319 command : [env, 'ln', '-fs',
3320 join_paths(build.full_path(), b),
3321 '@OUTPUT@'],
3322 build_by_default : true)
3323 else
3324 message('Not compiling @0@ because slow-tests is set to false'.format(name))
3325 endif
3326 endif
3327 prev = name
3328
3329 if want_tests != 'false' and slow_tests
3330 test('@0@:@1@:@2@'.format(b, c, sanitizer),
3331 env,
3332 args : [exe.full_path(),
Davide Cavalca1485aac2019-02-27 11:19:07 -05003333 join_paths(project_source_root, p)])
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003334 endif
3335 endforeach
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003336 endif
3337endforeach
3338
Zbigniew Jędrzejewski-Szmek52d4d1d2018-03-14 14:27:04 +01003339
Zbigniew Jędrzejewski-Szmekb68dfb92018-01-19 17:54:30 +11003340############################################################
3341
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003342if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003343 all_files = run_command(
3344 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003345 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003346 'ls-files',
3347 ':/*.[ch]'])
3348 all_files = files(all_files.stdout().split())
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003349
userwithuide85a6902017-08-09 13:41:44 +00003350 custom_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003351 'tags',
userwithuide85a6902017-08-09 13:41:44 +00003352 output : 'tags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003353 command : [env, 'etags', '-o', '@0@/TAGS'.format(project_source_root)] + all_files)
Evegeny Vereshchagin2f099742018-05-18 10:52:17 +00003354 run_target(
Zbigniew Jędrzejewski-Szmek0700e8b2017-07-03 12:42:29 -04003355 'ctags',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003356 command : [env, 'ctags', '-o', '@0@/tags'.format(project_source_root)] + all_files)
Zbigniew Jędrzejewski-Szmekd68b3422017-04-06 14:33:27 -04003357endif
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003358
3359if git.found()
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003360 meson_git_contrib_sh = find_program('tools/meson-git-contrib.sh')
Zbigniew Jędrzejewski-Szmeka923e082017-04-17 19:48:20 -04003361 run_target(
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003362 'git-contrib',
Zbigniew Jędrzejewski-Szmek37efbbd2017-04-17 19:25:00 -04003363 command : [meson_git_contrib_sh])
Zbigniew Jędrzejewski-Szmek177929c2017-04-15 00:16:23 -04003364endif
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003365
3366if git.found()
3367 git_head = run_command(
3368 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003369 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003370 'rev-parse', 'HEAD']).stdout().strip()
3371 git_head_short = run_command(
3372 git,
Davide Cavalca1485aac2019-02-27 11:19:07 -05003373 ['--git-dir=@0@/.git'.format(project_source_root),
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003374 'rev-parse', '--short=7', 'HEAD']).stdout().strip()
3375
3376 run_target(
3377 'git-snapshot',
3378 command : ['git', 'archive',
Davide Cavalca1485aac2019-02-27 11:19:07 -05003379 '-o', '@0@/systemd-@1@.tar.gz'.format(project_source_root,
Zbigniew Jędrzejewski-Szmekdd6ab3d2017-04-24 19:28:05 -04003380 git_head_short),
3381 '--prefix', 'systemd-@0@/'.format(git_head),
3382 'HEAD'])
3383endif
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003384
3385############################################################
3386
Lennart Poettering51b13862017-12-20 12:51:14 +01003387meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
3388run_target(
3389 'check-api-docs',
3390 depends : [man, libsystemd, libudev],
3391 command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
3392
3393############################################################
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003394watchdog_opt = service_watchdog == '' ? 'disabled' : service_watchdog
Lennart Poettering51b13862017-12-20 12:51:14 +01003395
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003396status = [
3397 '@0@ @1@'.format(meson.project_name(), meson.project_version()),
3398
Zbigniew Jędrzejewski-Szmek26754132018-03-01 11:49:42 +01003399 'split /usr: @0@'.format(split_usr),
Zbigniew Jędrzejewski-Szmek157baa82018-03-01 10:28:29 +01003400 'split bin-sbin: @0@'.format(split_bin),
Yu Watanabe359b4962017-11-25 20:35:24 +09003401 'prefix directory: @0@'.format(prefixdir),
3402 'rootprefix directory: @0@'.format(rootprefixdir),
3403 'sysconf directory: @0@'.format(sysconfdir),
3404 'include directory: @0@'.format(includedir),
3405 'lib directory: @0@'.format(libdir),
3406 'rootlib directory: @0@'.format(rootlibdir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003407 'SysV init scripts: @0@'.format(sysvinit_path),
3408 'SysV rc?.d directories: @0@'.format(sysvrcnd_path),
Yu Watanabe359b4962017-11-25 20:35:24 +09003409 'PAM modules directory: @0@'.format(pamlibdir),
3410 'PAM configuration directory: @0@'.format(pamconfdir),
3411 'RPM macros directory: @0@'.format(rpmmacrosdir),
3412 'modprobe.d directory: @0@'.format(modprobedir),
3413 'D-Bus policy directory: @0@'.format(dbuspolicydir),
3414 'D-Bus session directory: @0@'.format(dbussessionservicedir),
3415 'D-Bus system directory: @0@'.format(dbussystemservicedir),
3416 'bash completions directory: @0@'.format(bashcompletiondir),
3417 'zsh completions directory: @0@'.format(zshcompletiondir),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003418 'extra start script: @0@'.format(get_option('rc-local')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003419 'debug shell: @0@ @ @1@'.format(get_option('debug-shell'),
3420 get_option('debug-tty')),
3421 'TTY GID: @0@'.format(tty_gid),
Yu Watanabeac093402018-05-10 16:04:16 +09003422 'users GID: @0@'.format(substs.get('USERS_GID')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003423 'maximum system UID: @0@'.format(system_uid_max),
3424 'maximum system GID: @0@'.format(system_gid_max),
Lennart Poettering87d5e4f2017-12-02 12:48:31 +01003425 'minimum dynamic UID: @0@'.format(dynamic_uid_min),
3426 'maximum dynamic UID: @0@'.format(dynamic_uid_max),
3427 'minimum container UID base: @0@'.format(container_uid_base_min),
3428 'maximum container UID base: @0@'.format(container_uid_base_max),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003429 '/dev/kvm access mode: @0@'.format(get_option('dev-kvm-mode')),
Tom Stellard4e15a732017-10-31 08:46:24 -07003430 'render group access mode: @0@'.format(get_option('group-render-mode')),
Yu Watanabe359b4962017-11-25 20:35:24 +09003431 'certificate root directory: @0@'.format(get_option('certificate-root')),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003432 'support URL: @0@'.format(support_url),
Lennart Poetteringafde4572017-12-05 11:00:24 +01003433 'nobody user name: @0@'.format(nobody_user),
3434 'nobody group name: @0@'.format(nobody_group),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003435 'fallback hostname: @0@'.format(get_option('fallback-hostname')),
Zbigniew Jędrzejewski-Szmek5248e7e2017-07-11 02:15:08 -04003436 'symbolic gateway hostnames: @0@'.format(', '.join(gateway_hostnames)),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003437
3438 'default DNSSEC mode: @0@'.format(default_dnssec),
Iwan Timmerc9299be2018-06-13 20:26:24 +02003439 'default DNS-over-TLS mode: @0@'.format(default_dns_over_tls),
Zbigniew Jędrzejewski-Szmek3614df02020-04-14 22:18:18 +02003440 'default mDNS mode: @0@'.format(default_mdns),
3441 'default LLMNR mode: @0@'.format(default_llmnr),
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003442 'default cgroup hierarchy: @0@'.format(default_hierarchy),
Zbigniew Jędrzejewski-Szmek06da5c62018-12-11 23:28:29 +01003443 'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
Dave Reisner8ca9e922018-12-28 07:38:36 -05003444 'default KillUserProcesses setting: @0@'.format(kill_user_processes),
Zbigniew Jędrzejewski-Szmek21d0dd52019-10-25 12:17:24 +02003445 'default locale: @0@'.format(default_locale),
Zbigniew Jędrzejewski-Szmek5bc655c2019-11-13 22:22:58 +01003446 'default user $PATH: @0@'.format(default_user_path_display),
Anita Zhang7bc9ea52019-10-25 15:46:21 -07003447 'systemd service watchdog: @0@'.format(watchdog_opt)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003448
3449alt_dns_servers = '\n '.join(dns_servers.split(' '))
3450alt_ntp_servers = '\n '.join(ntp_servers.split(' '))
3451status += [
3452 'default DNS servers: @0@'.format(alt_dns_servers),
3453 'default NTP servers: @0@'.format(alt_ntp_servers)]
3454
3455alt_time_epoch = run_command('date', '-Is', '-u', '-d',
3456 '@@0@'.format(time_epoch)).stdout().strip()
3457status += [
3458 'time epoch: @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
3459
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003460status += [
Zbigniew Jędrzejewski-Szmekabc8caf2018-10-11 11:10:53 +02003461 'static libsystemd: @0@'.format(static_libsystemd),
3462 'static libudev: @0@'.format(static_libudev)]
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003463
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003464# TODO:
3465# CFLAGS: ${OUR_CFLAGS} ${CFLAGS}
3466# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
3467# LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS}
3468
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003469if conf.get('ENABLE_EFI') == 1
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003470 status += 'efi arch: @0@'.format(efi_arch)
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003471
3472 if have_gnu_efi
3473 status += [
3474 'EFI machine type: @0@'.format(EFI_MACHINE_TYPE_NAME),
Zbigniew Jędrzejewski-Szmekc512dfb2018-12-18 00:02:11 +01003475 'EFI CC @0@'.format(' '.join(efi_cc)),
Zbigniew Jędrzejewski-Szmekce4121c2020-02-03 20:38:54 +01003476 'EFI lds: @0@'.format(efi_lds),
3477 'EFI crt0: @0@'.format(efi_crt0),
Yu Watanabe359b4962017-11-25 20:35:24 +09003478 'EFI include directory: @0@'.format(efi_incdir)]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003479 endif
3480endif
3481
3482found = []
3483missing = []
3484
3485foreach tuple : [
3486 ['libcryptsetup'],
3487 ['PAM'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003488 ['pwquality'],
Yu Watanabec7575172020-01-31 00:03:38 +09003489 ['libfdisk'],
Lennart Poettering839fddb2019-11-05 11:49:27 +01003490 ['p11kit'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003491 ['AUDIT'],
3492 ['IMA'],
3493 ['AppArmor'],
3494 ['SELinux'],
3495 ['SECCOMP'],
3496 ['SMACK'],
3497 ['zlib'],
3498 ['xz'],
3499 ['lz4'],
3500 ['bzip2'],
3501 ['ACL'],
3502 ['gcrypt'],
3503 ['qrencode'],
3504 ['microhttpd'],
3505 ['gnutls'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003506 ['openssl'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003507 ['libcurl'],
Zbigniew Jędrzejewski-Szmekd1bf5672017-06-16 09:16:28 -04003508 ['idn'],
Zbigniew Jędrzejewski-Szmek87057e22017-05-09 21:56:34 -04003509 ['libidn2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003510 ['libidn'],
3511 ['libiptc'],
3512 ['elfutils'],
3513 ['binfmt'],
Lennart Poetteringe594a3b2019-12-10 21:31:41 +01003514 ['repart'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003515 ['vconsole'],
3516 ['quotacheck'],
3517 ['tmpfiles'],
3518 ['environment.d'],
3519 ['sysusers'],
3520 ['firstboot'],
3521 ['randomseed'],
3522 ['backlight'],
3523 ['rfkill'],
3524 ['logind'],
3525 ['machined'],
Lennart Poettering61d05782018-04-16 21:41:40 +02003526 ['portabled'],
Lennart Poetteringd093b622019-07-04 18:33:30 +02003527 ['userdb'],
Lennart Poettering70a5db52019-07-04 18:35:39 +02003528 ['homed'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003529 ['importd'],
3530 ['hostnamed'],
3531 ['timedated'],
3532 ['timesyncd'],
3533 ['localed'],
3534 ['networkd'],
Yu Watanabea7456af2017-10-06 16:33:21 +09003535 ['resolve'],
Iwan Timmer096cbdc2018-07-26 22:47:50 +01003536 ['DNS-over-TLS(gnutls)', conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
3537 ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003538 ['coredump'],
Eric DeVolder9b4abc62019-05-16 08:59:01 -05003539 ['pstore'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003540 ['polkit'],
3541 ['legacy pkla', install_polkit_pkla],
3542 ['efi'],
3543 ['gnu-efi', have_gnu_efi],
3544 ['kmod'],
3545 ['xkbcommon'],
Zbigniew Jędrzejewski-Szmekc4c978a2018-01-12 05:47:17 +01003546 ['pcre2'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003547 ['blkid'],
3548 ['dbus'],
3549 ['glib'],
Zbigniew Jędrzejewski-Szmek6bd2bc82018-08-07 18:10:53 +02003550 ['nss-myhostname'],
3551 ['nss-mymachines'],
3552 ['nss-resolve'],
3553 ['nss-systemd'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003554 ['hwdb'],
3555 ['tpm'],
3556 ['man pages', want_man],
3557 ['html pages', want_html],
3558 ['man page indices', want_man and have_lxml],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003559 ['SysV compat'],
3560 ['utmp'],
3561 ['ldconfig'],
3562 ['hibernate'],
3563 ['adm group', get_option('adm-group')],
3564 ['wheel group', get_option('wheel-group')],
Franck Buib14e1b42017-05-09 14:02:37 +02003565 ['gshadow'],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003566 ['debug hashmap'],
3567 ['debug mmap cache'],
Yu Watanabed6601492018-11-23 00:36:35 +09003568 ['debug siphash'],
Zbigniew Jędrzejewski-Szmekd18cb392018-05-13 22:28:24 +02003569 ['valgrind', conf.get('VALGRIND') == 1],
Zbigniew Jędrzejewski-Szmekfd5dec92018-08-07 17:34:47 +02003570 ['trace logging', conf.get('LOG_TRACE') == 1],
Zbigniew Jędrzejewski-Szmekb6261be2019-12-16 17:01:17 +01003571 ['install tests', install_tests],
Lennart Poettering19d8c9c2018-10-05 16:38:42 +02003572 ['link-udev-shared', get_option('link-udev-shared')],
3573 ['link-systemctl-shared', get_option('link-systemctl-shared')],
Robert Scheck5ac8b502020-01-08 02:36:07 +01003574 ['link-networkd-shared', get_option('link-networkd-shared')],
Robert Scheckfd74a132020-02-08 14:02:09 +01003575 ['link-timesyncd-shared', get_option('link-timesyncd-shared')],
Jakov Smolicf30bf4d2020-04-15 17:58:25 +02003576 ['kernel-install', get_option('kernel-install')],
3577 ['systemd-analyze', get_option('analyze')],
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003578]
3579
Zbigniew Jędrzejewski-Szmekaf4d7862018-03-09 14:21:08 +01003580 if tuple.length() >= 2
3581 cond = tuple[1]
3582 else
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003583 ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
3584 ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
Zbigniew Jędrzejewski-Szmek349cc4a2017-10-03 10:41:51 +02003585 cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003586 endif
3587 if cond
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003588 found += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003589 else
Zbigniew Jędrzejewski-Szmek5a8b1642018-07-31 09:44:11 +02003590 missing += tuple[0]
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003591 endif
3592endforeach
3593
3594status += [
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003595 '',
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003596 'enabled features: @0@'.format(', '.join(found)),
Zbigniew Jędrzejewski-Szmek9d39c1b2017-07-26 14:14:44 -04003597 '',
3598 'disabled features: @0@'.format(', '.join(missing)),
3599 '']
Zbigniew Jędrzejewski-Szmek829257d2017-04-27 20:54:52 -04003600message('\n '.join(status))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003601
3602if rootprefixdir != rootprefix_default
Yu Watanabe8ea9fad2018-05-10 14:50:52 +09003603 warning('\n' +
3604 'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
3605 'systemd used fixed names for unit file directories and other paths, so anything\n' +
3606 'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
Zbigniew Jędrzejewski-Szmek9a8e64b2017-11-28 21:46:53 +01003607endif