1 # SPDX-License-Identifier: LGPL-2.1-or-later
3 resolve_includes = [includes, include_directories('.')]
5 basic_dns_sources = files(
6 'resolved-dns-dnssec.c',
7 'resolved-dns-packet.c',
9 'resolved-dns-answer.c',
10 'resolved-dns-question.c',
15 systemd_resolved_sources = files(
18 'resolved-dns-cache.c',
19 'resolved-dns-query.c',
20 'resolved-dns-scope.c',
21 'resolved-dns-search-domain.c',
22 'resolved-dns-server.c',
23 'resolved-dns-stream.c',
24 'resolved-dns-stub.c',
25 'resolved-dns-synthesize.c',
26 'resolved-dns-transaction.c',
27 'resolved-dns-trust-anchor.c',
28 'resolved-dns-zone.c',
29 'resolved-dnssd-bus.c',
31 'resolved-etc-hosts.c',
32 'resolved-link-bus.c',
37 'resolved-resolv-conf.c',
38 'resolved-socket-graveyard.c',
42 resolvectl_sources = files(
43 'resolvconf-compat.c',
47 ############################################################
49 dns_type_list_txt = custom_target(
51 input : ['generate-dns_type-list.sed', 'dns-type.h'],
52 output : 'dns_type-list.txt',
53 command : [sed, '-n', '-r', '-f', '@INPUT0@', '@INPUT1@'],
56 generate_dns_type_gperf = find_program('generate-dns_type-gperf.py')
58 gperf_file = custom_target(
59 'dns_type-from-name.gperf',
60 input : dns_type_list_txt,
61 output : 'dns_type-from-name.gperf',
62 command : [generate_dns_type_gperf, 'dns_type', 'DNS_TYPE_', '@INPUT@'],
65 basic_dns_sources += custom_target(
66 'dns_type-from-name.h',
68 output : 'dns_type-from-name.h',
70 '-L', 'ANSI-C', '-t', '--ignore-case',
71 '-N', 'lookup_dns_type',
72 '-H', 'hash_dns_type_name',
77 basic_dns_sources += custom_target(
79 input : ['dns_type-to-name.awk', dns_type_list_txt],
80 output : 'dns_type-to-name.h',
81 command : [awk, '-f', '@INPUT0@', '@INPUT1@'],
84 libsystemd_resolve_core = static_library(
85 'systemd-resolve-core',
87 include_directories : includes,
88 dependencies : userspace,
89 build_by_default : false)
91 systemd_resolved_sources += custom_target(
93 input : 'resolved-gperf.gperf',
94 output : 'resolved-gperf.c',
95 command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
97 systemd_resolved_sources += custom_target(
98 'resolved_dnssd_gperf.c',
99 input : 'resolved-dnssd-gperf.gperf',
100 output : 'resolved-dnssd-gperf.c',
101 command : [gperf, '@INPUT@', '--output-file', '@OUTPUT@'])
103 systemd_resolved_dependencies = [threads, libm] + [lib_openssl_or_gcrypt]
104 if conf.get('ENABLE_DNS_OVER_TLS') == 1
105 if conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1
106 systemd_resolved_sources += files(
107 'resolved-dnstls-gnutls.c',
109 systemd_resolved_dependencies += libgnutls
110 elif conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1
111 systemd_resolved_sources += files(
112 'resolved-dnstls-openssl.c',
114 systemd_resolved_dependencies += libopenssl
116 error('unknown dependency for supporting DNS-over-TLS')
123 libsystemd_resolve_core,
126 resolve_common_template = {
129 libsystemd_resolve_core,
132 lib_openssl_or_gcrypt,
136 resolve_test_template = test_template + resolve_common_template
137 resolve_fuzz_template = fuzz_template + resolve_common_template
141 'name' : 'systemd-resolved',
143 'conditions' : ['ENABLE_RESOLVE'],
144 'sources' : systemd_resolved_sources +
146 'include_directories' : resolve_includes,
147 'link_with' : link_with,
148 'dependencies' : systemd_resolved_dependencies,
150 executable_template + {
151 'name' : 'resolvectl',
153 'conditions' : ['ENABLE_RESOLVE'],
154 'sources' : resolvectl_sources,
155 'link_with' : link_with,
157 lib_openssl_or_gcrypt,
163 resolve_test_template + {
164 'sources' : files('test-resolve-tables.c'),
166 resolve_test_template + {
167 'sources' : files('test-dns-packet.c'),
169 resolve_test_template + {
171 'test-resolved-etc-hosts.c',
172 'resolved-etc-hosts.c',
175 resolve_test_template + {
176 'sources' : files('test-resolved-packet.c'),
178 resolve_test_template + {
179 'sources' : files('test-dnssec.c'),
180 'conditions' : ['HAVE_OPENSSL_OR_GCRYPT'],
182 resolve_test_template + {
183 'sources' : files('test-dnssec-complex.c'),
188 files('test-resolved-stream.c'),
190 systemd_resolved_sources,
193 lib_openssl_or_gcrypt,
195 systemd_resolved_dependencies,
197 'include_directories' : resolve_includes,
201 files('test-resolved-dummy-server.c'),
203 systemd_resolved_sources,
206 lib_openssl_or_gcrypt,
208 systemd_resolved_dependencies,
210 'include_directories' : resolve_includes,
213 resolve_fuzz_template + {
214 'sources' : files('fuzz-dns-packet.c'),
216 resolve_fuzz_template + {
219 'resolved-etc-hosts.c',
222 resolve_fuzz_template + {
223 'sources' : files('fuzz-resource-record.c'),
227 if conf.get('ENABLE_RESOLVE') == 1
228 install_data('org.freedesktop.resolve1.conf',
229 install_dir : dbuspolicydir)
230 install_data('org.freedesktop.resolve1.service',
231 install_dir : dbussystemservicedir)
232 install_data('org.freedesktop.resolve1.policy',
233 install_dir : polkitpolicydir)
234 install_data('resolv.conf',
235 install_dir : libexecdir)
237 install_emptydir(sbindir)
238 meson.add_install_script(sh, '-c',
239 ln_s.format(bindir / 'resolvectl',
240 sbindir / 'resolvconf'))
242 # symlink for backwards compatibility after rename
243 meson.add_install_script(sh, '-c',
244 ln_s.format(bindir / 'resolvectl',
245 bindir / 'systemd-resolve'))
250 input : 'resolved.conf.in',
251 output : 'resolved.conf',
252 command : [jinja2_cmdline, '@INPUT@', '@OUTPUT@'],
253 install : conf.get('ENABLE_RESOLVE') == 1 and install_sysconfdir_samples,
254 install_dir : pkgconfigfiledir)