|  | package { | 
|  | // See: http://go/android-license-faq | 
|  | // A large-scale-change added 'default_applicable_licenses' to import | 
|  | // all of the 'license_kinds' from "frameworks_native_license" | 
|  | // to get the below license kinds: | 
|  | //   SPDX-license-identifier-Apache-2.0 | 
|  | default_applicable_licenses: ["frameworks_native_license"], | 
|  | } | 
|  |  | 
|  | rust_library { | 
|  | name: "libbinder_rs", | 
|  | crate_name: "binder", | 
|  | srcs: ["src/lib.rs"], | 
|  | shared_libs: [ | 
|  | "libutils", | 
|  | ], | 
|  | rustlibs: [ | 
|  | "liblibc", | 
|  | "libbinder_ndk_sys", | 
|  | ], | 
|  | host_supported: true, | 
|  | target: { | 
|  | darwin: { | 
|  | enabled: false, | 
|  | } | 
|  | }, | 
|  | apex_available: [ | 
|  | "//apex_available:platform", | 
|  | "com.android.compos", | 
|  | "com.android.virt", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_library { | 
|  | name: "libbinder_ndk_sys", | 
|  | crate_name: "binder_ndk_sys", | 
|  | srcs: [ | 
|  | "sys/lib.rs", | 
|  | ":libbinder_ndk_bindgen", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "libbinder_ndk", | 
|  | ], | 
|  | host_supported: true, | 
|  | target: { | 
|  | darwin: { | 
|  | enabled: false, | 
|  | } | 
|  | }, | 
|  | apex_available: [ | 
|  | "//apex_available:platform", | 
|  | "com.android.compos", | 
|  | "com.android.virt", | 
|  | ], | 
|  | lints: "none", | 
|  | clippy_lints: "none", | 
|  | } | 
|  |  | 
|  | rust_bindgen { | 
|  | name: "libbinder_ndk_bindgen", | 
|  | crate_name: "binder_ndk_bindgen", | 
|  | wrapper_src: "sys/BinderBindings.hpp", | 
|  | source_stem: "bindings", | 
|  | bindgen_flags: [ | 
|  | // Unfortunately the only way to specify the rust_non_exhaustive enum | 
|  | // style for a type is to make it the default | 
|  | "--default-enum-style", "rust_non_exhaustive", | 
|  | // and then specify constified enums for the enums we don't want | 
|  | // rustified | 
|  | "--constified-enum", "android::c_interface::consts::.*", | 
|  |  | 
|  | "--allowlist-type", "android::c_interface::.*", | 
|  | "--allowlist-type", "AStatus", | 
|  | "--allowlist-type", "AIBinder_Class", | 
|  | "--allowlist-type", "AIBinder", | 
|  | "--allowlist-type", "AIBinder_Weak", | 
|  | "--allowlist-type", "AIBinder_DeathRecipient", | 
|  | "--allowlist-type", "AParcel", | 
|  | "--allowlist-type", "binder_status_t", | 
|  | "--allowlist-function", ".*", | 
|  | ], | 
|  | shared_libs: [ | 
|  | "libbinder_ndk", | 
|  | ], | 
|  | host_supported: true, | 
|  |  | 
|  | // Currently necessary for host builds | 
|  | // TODO(b/31559095): bionic on host should define this | 
|  | target: { | 
|  | host: { | 
|  | cflags: [ | 
|  | "-D__INTRODUCED_IN(n)=", | 
|  | "-D__assert(a,b,c)=", | 
|  | // We want all the APIs to be available on the host. | 
|  | "-D__ANDROID_API__=10000", | 
|  | ], | 
|  | }, | 
|  | darwin: { | 
|  | enabled: false, | 
|  | }, | 
|  | }, | 
|  | apex_available: [ | 
|  | "//apex_available:platform", | 
|  | "com.android.compos", | 
|  | "com.android.virt", | 
|  | ], | 
|  | } | 
|  |  | 
|  | // TODO(b/184872979): remove once the Rust API is created. | 
|  | rust_bindgen { | 
|  | name: "libbinder_rpc_unstable_bindgen", | 
|  | wrapper_src: "src/binder_rpc_unstable.hpp", | 
|  | crate_name: "binder_rpc_unstable_bindgen", | 
|  | source_stem: "bindings", | 
|  | shared_libs: [ | 
|  | "libutils", | 
|  | ], | 
|  | apex_available: [ | 
|  | "com.android.compos", | 
|  | "com.android.virt", | 
|  | ], | 
|  | } | 
|  |  | 
|  | rust_test { | 
|  | name: "libbinder_rs-internal_test", | 
|  | crate_name: "binder", | 
|  | srcs: ["src/lib.rs"], | 
|  | test_suites: ["general-tests"], | 
|  | auto_gen_config: true, | 
|  | shared_libs: [ | 
|  | "libbinder_ndk", | 
|  | ], | 
|  | rustlibs: [ | 
|  | "liblibc", | 
|  | "libbinder_ndk_sys", | 
|  | ], | 
|  | } |