| 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", | |
| min_sdk_version: "apex_inherit", | |
| export_include_dirs: ["include/dnsproxyd_protocol"], | |
| apex_available: [ | |
| "//apex_available:platform", | |
| "com.android.tethering", | |
| ], | |
| } | |
| dnsresolver_aidl_interface_lateststable_version = "V17" | |
| 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.tethering"], | |
| min_sdk_version: "apex_inherit", | |
| } | |
| 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: "31", | |
| }, | |
| ndk: { | |
| gen_log: true, | |
| apex_available: ["com.android.tethering"], | |
| min_sdk_version: "31", | |
| }, | |
| }, | |
| 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"], | |
| }, | |
| { | |
| version: "17", | |
| 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: "apex_inherit", | |
| } | |
| 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: [ | |
| "libresolvrs_ffi_defaults", | |
| "netd_defaults", | |
| ], | |
| srcs: [ | |
| "addrlabel.cpp", | |
| "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", | |
| "DnsProxy.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", | |
| "rust/src/dns_proxy/net_context_client.cpp", | |
| ], | |
| stl: "libc++", | |
| // Link most things statically to minimize our dependence on system ABIs. | |
| static_libs: [ | |
| "dnsresolver_aidl_interface-lateststable-ndk", | |
| "libdns_helper", | |
| "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: [ | |
| "libbase", | |
| "libbinder_ndk", | |
| "libcrypto", | |
| "libcutils", | |
| "liblog", //Used by libstatslog_resolv | |
| "libnetdutils", | |
| "libssl", | |
| "libstatssocket", | |
| ], | |
| header_libs: [ | |
| "bpf_headers", | |
| "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.tethering"], | |
| min_sdk_version: "apex_inherit", | |
| } | |
| cc_library_static { | |
| name: "stats_proto", | |
| defaults: ["netd_defaults"], | |
| proto: { | |
| export_proto_headers: true, | |
| type: "lite", | |
| }, | |
| srcs: [ | |
| "stats.proto", | |
| ], | |
| apex_available: ["com.android.tethering"], | |
| min_sdk_version: "apex_inherit", | |
| } | |
| 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 31", | |
| 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 31", | |
| 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"], | |
| shared_libs: [ | |
| "libcutils", | |
| "libstatssocket", | |
| ], | |
| apex_available: ["com.android.tethering"], | |
| min_sdk_version: "apex_inherit", | |
| } | |
| 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", | |
| ], | |
| } |