blob: b0cfee0cc76e2d0f6f12a95911a163cc8ff69b47 [file] [log] [blame]
Bob Badour07160d82021-02-22 16:09:08 -08001package {
2 default_applicable_licenses: ["packages_modules_DnsResolver_license"],
3}
4
5// Added automatically by a large-scale-change that took the approach of
6// 'apply every license found to every target'. While this makes sure we respect
7// every license restriction, it may not be entirely correct.
8//
9// e.g. GPL in an MIT project might only apply to the contrib/ directory.
10//
11// Please consider splitting the single license below into multiple licenses,
12// taking care not to lose any license_kind information, and overriding the
13// default license using the 'licenses: [...]' property on targets as needed.
14//
15// For unused files, consider creating a 'fileGroup' with "//visibility:private"
16// to attach the license to, and including a comment whether the files may be
17// used in the current project.
18// See: http://go/android-license-faq
19license {
20 name: "packages_modules_DnsResolver_license",
21 visibility: [":__subpackages__"],
22 license_kinds: [
23 "SPDX-license-identifier-Apache-2.0",
24 "SPDX-license-identifier-BSD",
25 "SPDX-license-identifier-ISC",
26 "SPDX-license-identifier-MIT",
27 ],
28 license_text: [
29 "NOTICE",
30 ],
31}
32
Lorenzo Colitti84485a42018-12-18 19:16:12 +090033cc_library_headers {
34 name: "libnetd_resolv_headers",
35 export_include_dirs: ["include"],
36}
37
Bernie Innocenti86890c92020-01-08 21:00:39 +090038// Used only by dns_responder_client_ndk.cpp for ResolverStats.h
39// TODO: refactor stats to use a Parcel and eliminate this dependency
chenbruce2e2446c2019-06-28 16:37:36 +080040cc_library_headers {
41 name: "libnetd_resolv_internal_headers",
42 export_include_dirs: ["."],
43}
44
Luke Huang27616fe2020-05-26 17:31:15 +080045cc_library_headers {
46 name: "dnsproxyd_protocol_headers",
Remi NGUYEN VANb5fb4ca2021-03-23 11:18:05 +000047 sdk_version: "29",
48 min_sdk_version: "29",
Luke Huang27616fe2020-05-26 17:31:15 +080049 export_include_dirs: ["include/dnsproxyd_protocol"],
Remi NGUYEN VAN35e9af02020-11-27 18:59:19 +090050 apex_available: [
51 "//apex_available:platform",
52 "com.android.tethering",
53 ],
Luke Huang27616fe2020-05-26 17:31:15 +080054}
55
Mike Yu03e49032021-09-09 22:21:09 +080056dnsresolver_aidl_interface_lateststable_version = "V10"
Jeongik Chae8fe5a52021-03-05 21:18:33 +090057
58cc_library_static {
Jiyong Parkf5e650b2021-08-04 12:48:08 +090059 name: "dnsresolver_aidl_interface-lateststable-ndk",
Jeongik Chae8fe5a52021-03-05 21:18:33 +090060 whole_static_libs: [
Jiyong Parkf5e650b2021-08-04 12:48:08 +090061 "dnsresolver_aidl_interface-" + dnsresolver_aidl_interface_lateststable_version + "-ndk",
Jeongik Chae8fe5a52021-03-05 21:18:33 +090062 ],
63 apex_available: [
64 "com.android.resolv",
65 ],
66 min_sdk_version: "29",
67}
68
Luke Huang403c0442019-02-25 15:33:42 +080069aidl_interface {
70 name: "dnsresolver_aidl_interface",
71 local_include_dir: "binder",
72 srcs: [
73 "binder/android/net/IDnsResolver.aidl",
chenbrucefd837fa2019-10-29 18:35:36 +080074 "binder/android/net/ResolverHostsParcel.aidl",
Ken Chena6ac2a62020-04-07 17:25:56 +080075 "binder/android/net/ResolverOptionsParcel.aidl",
waynema37255182019-03-18 13:22:56 +080076 "binder/android/net/ResolverParamsParcel.aidl",
paulhub6d71b62020-11-17 00:29:29 +080077 // New AIDL classes should go into android.net.resolv.aidl so they can be clearly identified
78 "binder/android/net/resolv/aidl/**/*.aidl",
Luke Huang403c0442019-02-25 15:33:42 +080079 ],
Hungming Chena32c8c12019-01-25 10:47:40 +080080 imports: [
Steven Morelanddb823dd2021-08-31 18:21:32 -070081 "netd_event_listener_interface-V1",
Hungming Chena32c8c12019-01-25 10:47:40 +080082 ],
Luke Huang598daad2019-05-02 18:10:15 +080083 backend: {
chenbruce66ba90d2020-02-25 14:53:39 +080084 java: {
85 apex_available: [
Remi NGUYEN VANcbc998a2021-03-22 11:17:46 +000086 "com.android.tethering",
chenbruce66ba90d2020-02-25 14:53:39 +080087 "com.android.wifi",
88 ],
Remi NGUYEN VANb5fb4ca2021-03-23 11:18:05 +000089 min_sdk_version: "30",
chenbruce66ba90d2020-02-25 14:53:39 +080090 },
Luke Huang598daad2019-05-02 18:10:15 +080091 ndk: {
92 gen_log: true,
Jiyong Parkf29f09b2020-04-08 23:39:45 +090093 apex_available: [
94 "com.android.resolv",
95 ],
Jooyung Han105a9bc2020-04-16 18:48:33 +090096 min_sdk_version: "29",
Luke Huang598daad2019-05-02 18:10:15 +080097 },
98 },
Luke Huang5aa6a992019-04-29 22:02:11 +080099 versions: [
100 "1",
101 "2",
Luke Huang0fc985f2019-11-14 19:18:14 +0800102 "3",
Luke Huange1ddf092020-04-08 01:41:02 +0800103 "4",
Lorenzo Colittia126c242020-05-21 18:07:40 +0900104 "5",
Ken Chenb52a7812020-06-19 17:19:07 +0800105 "6",
paulhub6d71b62020-11-17 00:29:29 +0800106 "7",
lucasline7c54de2021-03-25 16:33:21 +0800107 "8",
Luke Huangb87af052021-08-06 17:57:29 +0800108 "9",
Mike Yuf34e87c2021-09-09 15:28:36 +0800109 "10",
Luke Huang5aa6a992019-04-29 22:02:11 +0800110 ],
lucaslinc6615602021-03-25 16:27:02 +0800111 dumpapi: {
112 no_license: true,
113 },
Luke Huang403c0442019-02-25 15:33:42 +0800114}
115
Luke Huang45b761c2020-03-20 22:30:43 +0800116cc_defaults {
117 name: "resolv_test_defaults",
Ken Chen0c422ff2021-06-23 12:10:20 +0800118 cflags: [
119 // networkCreatePhysical and networkCreateVpn were deprecated from netd_aidl_interface v6.
120 "-Wno-error=deprecated-declarations",
121 ],
Luke Huang45b761c2020-03-20 22:30:43 +0800122 // Note that, static link liblog and libbase is a hard requirement for resolv related tests
123 // because libbase is not compatible between Q and R for general platform build due
124 // to its log revelant functions changing. And most of resolv related tests must be able to run
125 // in Q.
126 static_libs: [
127 "libbase",
128 "liblog",
129 ],
Luke Huang5b6e3ec2021-05-19 18:59:05 +0800130 // This field is required to make test compatible with Q devices.
131 min_sdk_version: "29",
Luke Huang45b761c2020-03-20 22:30:43 +0800132}
133
Luke Huang0b6c4932020-03-27 17:40:07 +0800134cc_defaults {
135 // This is necessary to have the coverage tests run on cf_x86_phone.
136 // Because the test_suite target is 64 bit and the test infra is running the 64 bit test
137 // suite on cf_x86_phone (32-bit) for coverage.
138 // See b/147785146 for details.
139 // TODO: Remove this target after coverage test switched to 64-bit device.
140 name: "resolv_test_mts_coverage_defaults",
141 test_config_template: ":resolv_test_config_template",
142 compile_multilib: "both",
143 multilib: {
144 lib32: {
145 suffix: "32",
146 },
147 lib64: {
148 suffix: "64",
149 },
150 },
151}
152
Lorenzo Colitti8505af42018-12-19 20:30:41 +0900153cc_library {
Bernie Innocentiafaacf72018-08-30 07:34:37 +0900154 name: "libnetd_resolv",
Bernie Innocenti1e886742018-10-25 18:41:47 +0900155 version_script: "libnetd_resolv.map.txt",
Jooyung Han41fa73d2019-11-27 15:41:44 +0900156 stubs: {
157 versions: [
158 "1",
159 ],
160 symbol_file: "libnetd_resolv.map.txt",
161 },
Bernie Innocentiafaacf72018-08-30 07:34:37 +0900162 defaults: ["netd_defaults"],
163 srcs: [
Bernie Innocenti9c575932018-09-07 21:10:25 +0900164 "getaddrinfo.cpp",
165 "gethnamaddr.cpp",
166 "sethostent.cpp",
167 "res_cache.cpp",
168 "res_comp.cpp",
Bernie Innocenti9c575932018-09-07 21:10:25 +0900169 "res_debug.cpp",
Bernie Innocenti9c575932018-09-07 21:10:25 +0900170 "res_mkquery.cpp",
171 "res_query.cpp",
172 "res_send.cpp",
Bernie Innocenti9c575932018-09-07 21:10:25 +0900173 "res_stats.cpp",
Mike Yu021c3e12019-10-08 17:29:34 +0800174 "util.cpp",
Luke Huang7b26b202019-03-28 14:09:24 +0800175 "Dns64Configuration.cpp",
Mike Yu19108d52018-11-15 21:58:19 +0800176 "DnsProxyListener.cpp",
Mike Yu939e3692019-10-29 17:28:34 +0800177 "DnsQueryLog.cpp",
Luke Huang36796f32019-03-13 02:54:45 +0800178 "DnsResolver.cpp",
Luke Huang403c0442019-02-25 15:33:42 +0800179 "DnsResolverService.cpp",
Mike Yue655b1d2019-08-28 17:49:59 +0800180 "DnsStats.cpp",
Mike Yubab3daa2018-10-19 22:11:43 +0800181 "DnsTlsDispatcher.cpp",
182 "DnsTlsQueryMap.cpp",
183 "DnsTlsTransport.cpp",
184 "DnsTlsServer.cpp",
185 "DnsTlsSessionCache.cpp",
186 "DnsTlsSocket.cpp",
Luke Huangf40df9c2020-04-21 08:51:48 +0800187 "Experiments.cpp",
Mike Yub601ff72018-11-01 20:07:00 +0800188 "PrivateDnsConfiguration.cpp",
Luke Huang7b26b202019-03-28 14:09:24 +0800189 "ResolverController.cpp",
Mike Yu39cc6892018-12-14 16:18:27 +0800190 "ResolverEventReporter.cpp",
Bernie Innocentiafaacf72018-08-30 07:34:37 +0900191 ],
Tobias Thierer469b6332019-08-28 20:25:33 +0100192 // Link most things statically to minimize our dependence on system ABIs.
Bernie Innocenti2a9244c2018-09-13 16:12:56 +0900193 stl: "libc++_static",
Bernie Innocenti9f05f5e2018-09-12 23:20:10 +0900194 static_libs: [
Jiyong Parkf5e650b2021-08-04 12:48:08 +0900195 "dnsresolver_aidl_interface-lateststable-ndk",
Bernie Innocenti9f05f5e2018-09-12 23:20:10 +0900196 "libbase",
Mike Yu19108d52018-11-15 21:58:19 +0800197 "libcutils",
Mike Yubab3daa2018-10-19 22:11:43 +0800198 "libnetdutils",
Luke Huang2fe9c732021-07-06 01:48:02 +0800199 "libdoh_ffi",
Luke Huangb39686b2021-09-22 17:31:13 +0800200 "libmodules-utils-build",
Bernie Innocenti83a968f2019-06-27 14:35:53 +0900201 "libprotobuf-cpp-lite",
lifr9b87e362019-05-08 13:00:14 +0800202 "libstatslog_resolv",
Muhammad Qureshi10b3d272019-12-03 15:25:19 -0800203 "libstatspush_compat",
Mike Yu19108d52018-11-15 21:58:19 +0800204 "libsysutils",
Jiyong Parkf5e650b2021-08-04 12:48:08 +0900205 "netd_event_listener_interface-lateststable-ndk",
Ken Chen8e1561f2023-06-15 17:46:16 +0800206 "libutils",
waynemaa74195e2019-01-18 14:02:31 +0800207 "server_configurable_flags",
lifr9b87e362019-05-08 13:00:14 +0800208 "stats_proto",
Mike Yu39cc6892018-12-14 16:18:27 +0800209 ],
Tobias Thierer469b6332019-08-28 20:25:33 +0100210 // libcrypto needs to be used as a shared library because it performs an
211 // integrity check (against a checksum) that is not supported for static
212 // libs. See http://b/141248879
213 // We're also adding libssl here to treat it consistently.
Jiyong Parkdd938dd2020-03-09 14:35:37 +0900214 // liblog is added as a shared library because it provides stable C API
215 // from the platform; we don't need to include it in this module by
216 // statically linking to it. Doing so is even dangerous because the socket
217 // protocol to logd implemented in the library isn't guaranteed to be
218 // stable. See b/151051671
Mike Yu39cc6892018-12-14 16:18:27 +0800219 shared_libs: [
220 "libbinder_ndk",
Tobias Thierer469b6332019-08-28 20:25:33 +0100221 "libcrypto",
Jiyong Parkdd938dd2020-03-09 14:35:37 +0900222 "liblog", //Used by libstatslog_resolv
Tobias Thierer469b6332019-08-28 20:25:33 +0100223 "libssl",
Mike Yu19108d52018-11-15 21:58:19 +0800224 ],
Luke Huangf4c98f22019-06-14 01:57:00 +0800225 header_libs: [
Luke Huang27616fe2020-05-26 17:31:15 +0800226 "libnetdbinder_utils_headers",
Mike Yubab3daa2018-10-19 22:11:43 +0800227 ],
Ruchir Rastogicf96e8b2020-02-26 10:36:18 -0800228 runtime_libs: [
229 // Causes the linkerconfig to create a namespace link from resolv to the
230 // libstatssocket library within the statsd apex
231 "libstatssocket",
232 ],
Bernie Innocentiac18b122018-10-01 23:10:18 +0900233 export_include_dirs: ["include"],
chenbruce99cbfd82019-09-05 15:08:13 +0800234
Bernie Innocenti9f05f5e2018-09-12 23:20:10 +0900235 product_variables: {
236 debuggable: {
237 cppflags: [
238 "-DRESOLV_ALLOW_VERBOSE_LOGGING=1",
239 ],
240 },
241 },
Ken Chen4961dfe2019-11-15 09:03:29 +0800242 header_abi_checker: {
243 enabled: true,
244 symbol_file: "libnetd_resolv.map.txt",
245 },
Ken Chenf5573fd2020-01-14 01:51:05 +0800246 sanitize: {
247 cfi: true,
Ken Chenf5573fd2020-01-14 01:51:05 +0800248 },
Jiyong Parkf29f09b2020-04-08 23:39:45 +0900249 apex_available: ["com.android.resolv"],
Jooyung Han105a9bc2020-04-16 18:48:33 +0900250 min_sdk_version: "29",
Bernie Innocentiafaacf72018-08-30 07:34:37 +0900251}
Mike Yuc52739e2018-10-19 21:06:32 +0800252
lifr9b87e362019-05-08 13:00:14 +0800253cc_library_static {
254 name: "stats_proto",
255 defaults: ["netd_defaults"],
256 proto: {
257 export_proto_headers: true,
258 type: "lite",
259 },
260 srcs: [
261 "stats.proto",
262 ],
Jiyong Parkf29f09b2020-04-08 23:39:45 +0900263 apex_available: ["com.android.resolv"],
Jooyung Han105a9bc2020-04-16 18:48:33 +0900264 min_sdk_version: "29",
lifr9b87e362019-05-08 13:00:14 +0800265}
266
267genrule {
268 name: "statslog_resolv.h",
269 tools: ["stats-log-api-gen"],
Muhammad Qureshibf66b112020-12-10 10:24:18 -0800270 cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_resolv.h --module resolv" +
Mike Yuf34e87c2021-09-09 15:28:36 +0800271 " --namespace android,net,stats --minApiLevel 29",
lifr9b87e362019-05-08 13:00:14 +0800272 out: [
273 "statslog_resolv.h",
274 ],
275}
276
277genrule {
278 name: "statslog_resolv.cpp",
279 tools: ["stats-log-api-gen"],
Muhammad Qureshibf66b112020-12-10 10:24:18 -0800280 cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_resolv.cpp --module resolv" +
Mike Yuf34e87c2021-09-09 15:28:36 +0800281 " --namespace android,net,stats --importHeader statslog_resolv.h --minApiLevel 29",
lifr9b87e362019-05-08 13:00:14 +0800282 out: [
283 "statslog_resolv.cpp",
284 ],
285}
286
287cc_library_static {
288 name: "libstatslog_resolv",
289 generated_sources: ["statslog_resolv.cpp"],
290 generated_headers: ["statslog_resolv.h"],
291 defaults: ["netd_defaults"],
292 export_generated_headers: ["statslog_resolv.h"],
293 static_libs: [
294 "libcutils",
Muhammad Qureshi10b3d272019-12-03 15:25:19 -0800295 "libstatspush_compat",
lifr9b87e362019-05-08 13:00:14 +0800296 ],
Yifan Hong028d2d62021-04-26 16:24:34 -0700297 header_libs: [
298 "libgtest_prod_headers", // Used by libstatspush_compat
299 ],
Jiyong Parkf29f09b2020-04-08 23:39:45 +0900300 apex_available: ["com.android.resolv"],
Jooyung Han105a9bc2020-04-16 18:48:33 +0900301 min_sdk_version: "29",
lifr9b87e362019-05-08 13:00:14 +0800302}
303
Luke Huang6b7ff612020-03-25 15:23:41 +0800304filegroup {
Luke Huangac1ce2f2021-04-25 17:45:55 +0000305 name: "resolv_rust_test_config_template",
306 srcs: [
307 "resolv_rust_test_config_template.xml",
308 ],
309}
310
311filegroup {
Luke Huang6b7ff612020-03-25 15:23:41 +0800312 name: "resolv_test_config_template",
313 srcs: [
314 "resolv_test_config_template.xml",
315 ],
316}
317
Pirama Arumuga Nainar6d14bb32021-03-09 14:11:05 -0800318filegroup {
319 name: "resolv_unit_test_files",
Mike Yuc52739e2018-10-19 21:06:32 +0800320 srcs: [
Mike Yu39df0b12019-10-31 16:12:23 +0800321 "DnsQueryLogTest.cpp",
Luke Huangf40df9c2020-04-21 08:51:48 +0800322 "DnsStatsTest.cpp",
323 "ExperimentsTest.cpp",
Bernie Innocentiac6c9a42020-11-27 21:57:41 +0900324 "OperationLimiterTest.cpp",
Mike Yu0ee1dc92020-11-09 14:56:54 +0800325 "PrivateDnsConfigurationTest.cpp",
Mike Yuc52739e2018-10-19 21:06:32 +0800326 ],
Mike Yuc52739e2018-10-19 21:06:32 +0800327}
Luke Huangfd17c542021-03-17 14:27:28 +0800328
Matthew Maurer020120f2021-09-21 13:24:55 -0700329doh_rust_deps = [
330 "libandroid_logger",
331 "libanyhow",
332 "libbase64_rust",
333 "libfutures",
334 "liblibc",
335 "liblog_rust",
336 "libring",
Matthew Maurered78fda2021-10-25 13:04:44 -0700337 "libthiserror",
Matthew Maurer020120f2021-09-21 13:24:55 -0700338 "libtokio",
339 "liburl",
340]
341
Luke Huangfd17c542021-03-17 14:27:28 +0800342rust_ffi_static {
343 name: "libdoh_ffi",
Luke Huangfd17c542021-03-17 14:27:28 +0800344 crate_name: "doh",
Matthew Maureraa0dac62021-09-16 16:16:58 -0700345 srcs: ["doh/doh.rs"],
Luke Huangfd17c542021-03-17 14:27:28 +0800346 edition: "2018",
347
Matthew Maurer020120f2021-09-21 13:24:55 -0700348 rlibs: doh_rust_deps + ["libquiche"],
Luke Huangfd17c542021-03-17 14:27:28 +0800349 prefer_rlib: true,
350
351 shared_libs: [
352 "libcrypto",
353 "libssl",
354 ],
355
356 apex_available: [
Mike Yuf34e87c2021-09-09 15:28:36 +0800357 "//apex_available:platform", // Needed by doh_ffi_test
358 "com.android.resolv",
Luke Huangfd17c542021-03-17 14:27:28 +0800359 ],
360 min_sdk_version: "29",
361}
362
Luke Huang744f7c22021-04-15 04:15:43 +0000363rust_test {
364 name: "doh_unit_test",
Luke Huang744f7c22021-04-15 04:15:43 +0000365 crate_name: "doh",
Matthew Maureraa0dac62021-09-16 16:16:58 -0700366 srcs: ["doh/doh.rs"],
Luke Huang744f7c22021-04-15 04:15:43 +0000367 edition: "2018",
368 test_suites: ["general-tests"],
369 auto_gen_config: true,
Luke Huangac1ce2f2021-04-25 17:45:55 +0000370 // Used to enable root permission for the test.
371 // TODO: remove after 'require_root' is supported in rust_test.
372 test_config_template: ":resolv_rust_test_config_template",
Matthew Maurer020120f2021-09-21 13:24:55 -0700373 rustlibs: doh_rust_deps + ["libquiche_static"],
Luke Huang744f7c22021-04-15 04:15:43 +0000374 min_sdk_version: "29",
375}
Luke Huange912c762021-06-24 02:38:40 +0800376
377// It's required by unit tests.
378rust_ffi_static {
379 name: "libdoh_ffi_for_test",
380 crate_name: "doh",
Matthew Maureraa0dac62021-09-16 16:16:58 -0700381 srcs: ["doh/doh.rs"],
Luke Huange912c762021-06-24 02:38:40 +0800382 edition: "2018",
383
Matthew Maurer020120f2021-09-21 13:24:55 -0700384 rlibs: doh_rust_deps + ["libquiche_static"],
Luke Huange912c762021-06-24 02:38:40 +0800385 prefer_rlib: true,
Luke Huang53d3eb22021-07-19 15:08:56 +0800386 // TODO(b/194022174), for unit tests to run on the Android 10 platform,
387 // libunwind must be statically linked.
Luke Huang84f81012021-07-16 16:59:14 +0800388 whole_static_libs: ["libunwind"],
Luke Huange912c762021-06-24 02:38:40 +0800389 apex_available: [
Mike Yuf34e87c2021-09-09 15:28:36 +0800390 "//apex_available:platform", // Needed by doh_ffi_test
391 "com.android.resolv",
Luke Huange912c762021-06-24 02:38:40 +0800392 ],
393 min_sdk_version: "29",
394}