diff --git a/Android.bp b/Android.bp index 45707bc..d0369e6 100644 --- a/Android.bp +++ b/Android.bp @@ -40,7 +40,10 @@ host_supported: true, crate_name: "grpcio_sys", cargo_env_compat: true, - srcs: ["src/lib.rs"], + srcs: [ + "src/lib.rs", + ":libgrpc_bindgen", + ], edition: "2018", features: [ "bindgen", @@ -55,52 +55,75 @@ "liblibc", "liblibz_sys", ], - static_libs: [ - "libabsl_bad_optional_access", - "libabsl_bad_variant_access", - "libabsl_base", - "libabsl_city", - "libabsl_civil_time", - "libabsl_cord", - "libabsl_debugging_internal", - "libabsl_demangle_internal", - "libabsl_exponential_biased", - "libabsl_graphcycles_internal", - "libabsl_hash", - "libabsl_hashtablez_sampler", - "libabsl_int128", - "libabsl_log_severity", - "libabsl_malloc_internal", - "libabsl_raw_hash_set", - "libabsl_raw_logging_internal", - "libabsl_spinlock_wait", - "libabsl_stacktrace", - "libabsl_status", - "libabsl_statusor", - "libabsl_str_format_internal", - "libabsl_strings", - "libabsl_strings_internal", - "libabsl_symbolize", - "libabsl_synchronization", - "libabsl_throw_delegate", - "libabsl_time", - "libabsl_time_zone", - "libabsl_wyhash", - "libaddress_sorting", - "libcares", - "libcrypto", - "libgpr", - "libgrpc", - "libgrpc_wrap", - "libre2", - "libssl", - "libupb", - "libz", + shared_libs: [ + "libgrpc++", + "libgrpc_wrap" ], - shared_libs: ["libstdc++"], apex_available: [ "//apex_available:platform", "com.android.bluetooth", ], min_sdk_version: "29", } + +cc_defaults { + name: "libgrpcio_sys_defaults", + cflags: [ + "-DGRPC_SYS_SECURE", + ], + cpp_std: "c++11", + shared_libs: ["libgrpc++"], + apex_available: [ + "//apex_available:platform", + "com.android.bluetooth", + ], + min_sdk_version: "29", +} + +cc_library { + name: "libgrpc_wrap", + defaults: ["libgrpcio_sys_defaults"], + host_supported: true, + srcs: ["grpc_wrap.cc"], +} + +rust_bindgen { + name: "libgrpc_bindgen", + defaults: ["libgrpcio_sys_defaults"], + host_supported: true, + wrapper_src: "android/bindgen_wrapper.hpp", + source_stem: "grpc-bindings", + crate_name: "grpc_bindgen", + bindgen_flags: [ + "--size_t-is-usize", + "--constified-enum-module grpc_status_code", + "--default-enum-style rust", + "--allowlist-function=\\bgrpc_.*", + "--allowlist-function=\\bgpr_.*", + "--allowlist-function=\\bgrpcwrap_.*", + "--allowlist-var=\\bGRPC_.*", + "--allowlist-type=\\bgrpc_.*", + "--allowlist-type=\\bgpr_.*", + "--allowlist-type=\\bgrpcwrap_.*", + "--allowlist-type=\\bcensus_context.*", + "--allowlist-type=\\bverify_peer_options.*", + "--blocklist-type=(__)?pthread.*", + "--blocklist-function=\\bgpr_mu_.*", + "--blocklist-function=\\bgpr_cv_.*", + "--blocklist-function=\\bgpr_once_.*", + "--blocklist-type=gpr_mu", + "--blocklist-type=gpr_cv", + "--blocklist-type=gpr_once", + ], + min_sdk_version: "29", +} + +rust_test { + name: "libgrpc_bindgen_test", + srcs: [":libgrpc_bindgen"], + crate_name: "grpc_bindgen_test", + test_suites: ["general-tests"], + auto_gen_config: true, + clippy_lints: "none", + lints: "none", +}