| package { |
| default_team: "trendy_team_fwk_core_networking", |
| default_applicable_licenses: ["packages_modules_DnsResolver_license"], |
| } |
| |
| // Added automatically by a large-scale-change that took the approach of |
| // 'apply every license found to every target'. While this makes sure we respect |
| // every license restriction, it may not be entirely correct. |
| // |
| // e.g. GPL in an MIT project might only apply to the contrib/ directory. |
| // |
| // Please consider splitting the single license below into multiple licenses, |
| // taking care not to lose any license_kind information, and overriding the |
| // default license using the 'licenses: [...]' property on targets as needed. |
| // |
| // For unused files, consider creating a 'fileGroup' with "//visibility:private" |
| // to attach the license to, and including a comment whether the files may be |
| // used in the current project. |
| // See: http://go/android-license-faq |
| license { |
| name: "packages_modules_DnsResolver_license", |
| visibility: [":__subpackages__"], |
| license_kinds: [ |
| "SPDX-license-identifier-Apache-2.0", |
| "SPDX-license-identifier-BSD", |
| "SPDX-license-identifier-ISC", |
| "SPDX-license-identifier-MIT", |
| ], |
| license_text: [ |
| "NOTICE", |
| ], |
| } |
| |
| cc_library_headers { |
| name: "libnetd_resolv_headers", |
| export_include_dirs: ["include"], |
| } |
| |
| // Used only by dns_responder_client_ndk.cpp for ResolverStats.h |
| // TODO: refactor stats to use a Parcel and eliminate this dependency |
| cc_library_headers { |
| name: "libnetd_resolv_internal_headers", |
| export_include_dirs: ["."], |
| } |
| |
| cc_library_headers { |
| name: "dnsproxyd_protocol_headers", |
| sdk_version: "30", |
| min_sdk_version: "30", |
| export_include_dirs: ["include/dnsproxyd_protocol"], |
| apex_available: [ |
| "//apex_available:platform", |
| "com.android.tethering", |
| ], |
| } |
| |
| dnsresolver_aidl_interface_lateststable_version = "V16" |
| |
| cc_library_static { |
| name: "dnsresolver_aidl_interface-lateststable-ndk", |
| whole_static_libs: [ |
| "dnsresolver_aidl_interface-" + dnsresolver_aidl_interface_lateststable_version + "-ndk", |
| ], |
| apex_available: [ |
| "com.android.resolv", |
| ], |
| min_sdk_version: "30", |
| } |
| |
| aidl_interface { |
| name: "dnsresolver_aidl_interface", |
| local_include_dir: "binder", |
| srcs: [ |
| "binder/android/net/IDnsResolver.aidl", |
| "binder/android/net/ResolverHostsParcel.aidl", |
| "binder/android/net/ResolverOptionsParcel.aidl", |
| "binder/android/net/ResolverParamsParcel.aidl", |
| // New AIDL classes should go into android.net.resolv.aidl so they can be clearly identified |
| "binder/android/net/resolv/aidl/**/*.aidl", |
| ], |
| imports: [ |
| "netd_event_listener_interface-V1", |
| ], |
| backend: { |
| java: { |
| apex_available: [ |
| "com.android.tethering", |
| "com.android.wifi", |
| ], |
| min_sdk_version: "30", |
| }, |
| ndk: { |
| gen_log: true, |
| apex_available: [ |
| "com.android.resolv", |
| ], |
| min_sdk_version: "30", |
| }, |
| }, |
| |
| dumpapi: { |
| no_license: true, |
| }, |
| versions_with_info: [ |
| { |
| version: "1", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "2", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "3", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "4", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "5", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "6", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "7", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "8", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "9", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "10", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "11", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "12", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "13", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "14", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "15", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| { |
| version: "16", |
| imports: ["netd_event_listener_interface-V1"], |
| }, |
| |
| ], |
| frozen: true, |
| |
| } |
| |
| filegroup { |
| name: "resolv_test_default_map", |
| srcs: ["resolv_test_default.map"], |
| } |
| |
| cc_defaults { |
| name: "resolv_test_defaults", |
| cflags: [ |
| // networkCreatePhysical and networkCreateVpn were deprecated from netd_aidl_interface v6. |
| "-Wno-error=deprecated-declarations", |
| ], |
| // The resolv-related tests run on older platform versions, so many libraries (such as |
| // libbase and libc++) need to be linked statically. The tests also need to be linked with a |
| // version script to ensure that the statically-linked library isn't exported from the |
| // executable, where it would override the shared libraries that the platform itself uses. See |
| // b/333438055 for an example of what goes wrong when libc++ is partially exported from an |
| // executable. |
| version_script: ":resolv_test_default_map", |
| stl: "libc++_static", |
| static_libs: [ |
| "libbase", |
| ], |
| shared_libs: [ |
| "liblog", |
| ], |
| min_sdk_version: "30", |
| } |
| |
| cc_defaults { |
| // This is necessary to have the coverage tests run on cf_x86_phone. |
| // Because the test_suite target is 64 bit and the test infra is running the 64 bit test |
| // suite on cf_x86_phone (32-bit) for coverage. |
| // See b/147785146 for details. |
| // TODO: Remove this target after coverage test switched to 64-bit device. |
| name: "resolv_test_mts_coverage_defaults", |
| test_config_template: ":resolv_test_config_template", |
| compile_multilib: "both", |
| multilib: { |
| lib32: { |
| suffix: "32", |
| }, |
| lib64: { |
| suffix: "64", |
| }, |
| }, |
| // 'resolv_test_config_template' used DisableConfigSyncTargetPreparer provided |
| // by net-tests-utils-host-common; adding it to make the host jar available |
| // after the build process. |
| host_required: [ |
| "net-tests-utils-host-common", |
| ], |
| } |
| |
| cc_defaults { |
| // Similar to resolv_test_mts_coverage_defaults, but it's for the tests that don't need |
| // root access. |
| name: "resolv_test_mts_coverage_without_root_defaults", |
| test_config_template: ":resolv_test_config_without_root_template", |
| compile_multilib: "both", |
| multilib: { |
| lib32: { |
| suffix: "32", |
| }, |
| lib64: { |
| suffix: "64", |
| }, |
| }, |
| // 'resolv_test_config_without_root_template' used DisableConfigSyncTargetPreparer |
| // provided by net-tests-utils-host-common; adding it to make the host jar available |
| // after the build process. |
| host_required: [ |
| "net-tests-utils-host-common", |
| ], |
| } |
| |
| cc_library { |
| name: "libnetd_resolv", |
| version_script: "libnetd_resolv.map.txt", |
| stubs: { |
| versions: [ |
| "1", |
| ], |
| symbol_file: "libnetd_resolv.map.txt", |
| }, |
| defaults: ["netd_defaults"], |
| srcs: [ |
| "getaddrinfo.cpp", |
| "gethnamaddr.cpp", |
| "sethostent.cpp", |
| "res_cache.cpp", |
| "res_comp.cpp", |
| "res_debug.cpp", |
| "res_mkquery.cpp", |
| "res_query.cpp", |
| "res_send.cpp", |
| "res_stats.cpp", |
| "util.cpp", |
| "Dns64Configuration.cpp", |
| "DnsProxyListener.cpp", |
| "DnsQueryLog.cpp", |
| "DnsResolver.cpp", |
| "DnsResolverService.cpp", |
| "DnsStats.cpp", |
| "DnsTlsDispatcher.cpp", |
| "DnsTlsQueryMap.cpp", |
| "DnsTlsTransport.cpp", |
| "DnsTlsServer.cpp", |
| "DnsTlsSessionCache.cpp", |
| "DnsTlsSocket.cpp", |
| "Experiments.cpp", |
| "PrivateDnsConfiguration.cpp", |
| "ResolverController.cpp", |
| "ResolverEventReporter.cpp", |
| ], |
| // Link most things statically to minimize our dependence on system ABIs. |
| stl: "libc++_static", |
| static_libs: [ |
| "dnsresolver_aidl_interface-lateststable-ndk", |
| "libbase", |
| "libcutils", |
| "libnetdutils", |
| "libdoh_ffi", |
| "libmodules-utils-build", |
| "libprotobuf-cpp-lite", |
| "libstatslog_resolv", |
| "libsysutils", |
| "netd_event_listener_interface-lateststable-ndk", |
| "server_configurable_flags", |
| "stats_proto", |
| ], |
| // libcrypto needs to be used as a shared library because it performs an |
| // integrity check (against a checksum) that is not supported for static |
| // libs. See http://b/141248879 |
| // We're also adding libssl here to treat it consistently. |
| // liblog is added as a shared library because it provides stable C API |
| // from the platform; we don't need to include it in this module by |
| // statically linking to it. Doing so is even dangerous because the socket |
| // protocol to logd implemented in the library isn't guaranteed to be |
| // stable. See b/151051671 |
| shared_libs: [ |
| "libbinder_ndk", |
| "libcrypto", |
| "liblog", //Used by libstatslog_resolv |
| "libssl", |
| "libstatssocket", |
| ], |
| runtime_libs: [ |
| "libcom.android.tethering.dns_helper", |
| ], |
| header_libs: [ |
| "libnetdbinder_utils_headers", |
| ], |
| export_include_dirs: ["include"], |
| |
| product_variables: { |
| debuggable: { |
| cppflags: [ |
| "-DRESOLV_ALLOW_VERBOSE_LOGGING=1", |
| ], |
| }, |
| }, |
| header_abi_checker: { |
| enabled: true, |
| symbol_file: "libnetd_resolv.map.txt", |
| }, |
| sanitize: { |
| cfi: true, |
| }, |
| apex_available: ["com.android.resolv"], |
| min_sdk_version: "30", |
| } |
| |
| cc_library_static { |
| name: "stats_proto", |
| defaults: ["netd_defaults"], |
| proto: { |
| export_proto_headers: true, |
| type: "lite", |
| }, |
| srcs: [ |
| "stats.proto", |
| ], |
| apex_available: ["com.android.resolv"], |
| min_sdk_version: "30", |
| } |
| |
| genrule { |
| name: "statslog_resolv.h", |
| tools: ["stats-log-api-gen"], |
| cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_resolv.h --module resolv" + |
| " --namespace android,net,stats --minApiLevel 30", |
| out: [ |
| "statslog_resolv.h", |
| ], |
| } |
| |
| genrule { |
| name: "statslog_resolv.cpp", |
| tools: ["stats-log-api-gen"], |
| cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_resolv.cpp --module resolv" + |
| " --namespace android,net,stats --importHeader statslog_resolv.h --minApiLevel 30", |
| out: [ |
| "statslog_resolv.cpp", |
| ], |
| } |
| |
| cc_library_static { |
| name: "libstatslog_resolv", |
| generated_sources: ["statslog_resolv.cpp"], |
| generated_headers: ["statslog_resolv.h"], |
| defaults: ["netd_defaults"], |
| export_generated_headers: ["statslog_resolv.h"], |
| static_libs: [ |
| "libcutils", |
| ], |
| shared_libs: [ |
| "libstatssocket", |
| ], |
| apex_available: ["com.android.resolv"], |
| min_sdk_version: "30", |
| } |
| |
| filegroup { |
| name: "resolv_test_config_template", |
| srcs: [ |
| "resolv_test_config_template.xml", |
| ], |
| } |
| |
| filegroup { |
| name: "resolv_test_config_without_root_template", |
| srcs: [ |
| "resolv_test_config_without_root_template.xml", |
| ], |
| } |
| |
| filegroup { |
| name: "resolv_unit_test_files", |
| srcs: [ |
| "DnsQueryLogTest.cpp", |
| "DnsStatsTest.cpp", |
| "ExperimentsTest.cpp", |
| "OperationLimiterTest.cpp", |
| "PrivateDnsConfigurationTest.cpp", |
| ], |
| } |
| |
| doh_rust_deps = [ |
| "libandroid_logger", |
| "libanyhow", |
| "libbase64_rust", |
| "libfutures", |
| "liblibc", |
| "liblog_rust", |
| "libring", |
| "libstatslog_dns_resolver_rust", |
| "libthiserror", |
| "libtokio", |
| "liburl", |
| ] |
| |
| rust_ffi_static { |
| name: "libdoh_ffi", |
| crate_name: "doh", |
| srcs: ["doh/doh.rs"], |
| edition: "2018", |
| |
| rlibs: doh_rust_deps + ["libquiche"], |
| prefer_rlib: true, |
| |
| shared_libs: [ |
| "libcrypto", |
| "libssl", |
| ], |
| |
| apex_available: [ |
| "//apex_available:platform", // Needed by doh_ffi_test |
| "com.android.resolv", |
| ], |
| min_sdk_version: "30", |
| } |
| |
| rust_test { |
| name: "doh_unit_test", |
| crate_name: "doh", |
| srcs: ["doh/doh.rs"], |
| edition: "2018", |
| test_suites: ["general-tests"], |
| auto_gen_config: true, |
| rustlibs: doh_rust_deps + ["libquiche_static"], |
| min_sdk_version: "30", |
| shared_libs: ["libc++"], |
| } |
| |
| // It's required by unit tests. |
| rust_ffi_static { |
| name: "libdoh_ffi_for_test", |
| crate_name: "doh", |
| srcs: ["doh/doh.rs"], |
| edition: "2018", |
| |
| rlibs: doh_rust_deps + ["libquiche_static"], |
| prefer_rlib: true, |
| |
| shared_libs: [ |
| "libstatssocket", |
| ], |
| |
| // TODO(b/194022174), for unit tests to run on the Android 10 platform, |
| // libunwind must be statically linked. |
| whole_static_libs: ["libunwind"], |
| apex_available: [ |
| "//apex_available:platform", // Needed by doh_ffi_test |
| "com.android.resolv", |
| ], |
| min_sdk_version: "30", |
| } |
| |
| rust_ffi_static { |
| // Combines libdoh_frontend_ffi and libdoh_ffi for fuzzing test. |
| // Includes multiple static rust libraries will cause duplicate symbol error. |
| name: "libdoh_fuzz_ffi", |
| crate_name: "doh_fuzz_ffi", |
| srcs: [ |
| "doh/doh_test_superset_for_fuzzer.rs", |
| ], |
| edition: "2018", |
| |
| rlibs: [ |
| "libandroid_logger", |
| "libanyhow", |
| "libbase64_rust", |
| "libfutures", |
| "liblibc", |
| "liblog_rust", |
| "libquiche_static", |
| "libring", |
| "libstatslog_dns_resolver_rust", |
| "libthiserror", |
| "libtokio", |
| "liburl", |
| ], |
| |
| whole_static_libs: ["libunwind"], |
| } |