| diff --git a/Android.bp b/Android.bp |
| index aced8a6..578cc68 100644 |
| --- a/Android.bp |
| +++ b/Android.bp |
| @@ -43,26 +43,39 @@ cc_library_headers { |
| min_sdk_version: "29", |
| } |
| |
| -rust_ffi_shared { |
| - name: "libquiche_shared", |
| +rust_defaults { |
| + name: "libquiche_defaults", |
| stem: "libquiche", |
| host_supported: true, |
| crate_name: "quiche", |
| cargo_env_compat: true, |
| srcs: ["src/lib.rs"], |
| edition: "2018", |
| features: [ |
| - "boringssl-vendored", |
| + "boringssl", |
| "default", |
| ], |
| - rustlibs: [ |
| + // Link all crates statically to create a self-contained .so library. |
| + rlibs: [ |
| "liblazy_static", |
| "liblibc", |
| "liblibm", |
| "liblog_rust", |
| "libring", |
| ], |
| - static_libs: [ |
| + prefer_rlib: true, |
| + // For DnsResolver (Mainline module introduced in Q). |
| + apex_available: [ |
| + "//apex_available:platform", |
| + "com.android.resolv", |
| + ], |
| + min_sdk_version: "29", |
| +} |
| + |
| +rust_ffi { |
| + name: "libquiche_ffi", |
| + defaults: ["libquiche_defaults"], |
| + shared_libs: [ |
| "libcrypto", |
| "libssl", |
| ], |
| @@ -69,54 +82,20 @@ rust_ffi_shared { |
| |
| rust_library { |
| name: "libquiche", |
| - host_supported: true, |
| - crate_name: "quiche", |
| - cargo_env_compat: true, |
| - srcs: ["src/lib.rs"], |
| - edition: "2018", |
| - features: [ |
| - "boringssl-vendored", |
| - "default", |
| - ], |
| - rustlibs: [ |
| - "liblazy_static", |
| - "liblibc", |
| - "liblibm", |
| - "liblog_rust", |
| - "libring", |
| - ], |
| - static_libs: [ |
| + defaults: ["libquiche_defaults"], |
| + shared_libs: [ |
| "libcrypto", |
| "libssl", |
| ], |
| - apex_available: [ |
| - "//apex_available:platform", |
| - "com.android.resolv", |
| - ], |
| - min_sdk_version: "29", |
| } |
| |
| -rust_ffi_static { |
| +// This target is used by doh_unit_test to prevent compatibility issues |
| +// because doh_unit_test needs to be run on the R platform. |
| +rust_library_rlib { |
| name: "libquiche_static", |
| - stem: "libquiche", |
| - host_supported: true, |
| - crate_name: "quiche", |
| - cargo_env_compat: true, |
| - srcs: ["src/lib.rs"], |
| - edition: "2018", |
| - features: [ |
| - "boringssl-vendored", |
| - "default", |
| - ], |
| - rustlibs: [ |
| - "liblazy_static", |
| - "liblibc", |
| - "liblibm", |
| - "liblog_rust", |
| - "libring", |
| - ], |
| + defaults: ["libquiche_defaults"], |
| static_libs: [ |
| - "libcrypto", |
| + "libcrypto_static", |
| "libssl", |
| ], |
| apex_available: [ |
| @@ -111,17 +90,13 @@ rust_library_rlib { |
| min_sdk_version: "29", |
| } |
| |
| -rust_test { |
| - name: "quiche_test_src_lib", |
| - host_supported: true, |
| +rust_defaults { |
| + name: "quiche_test_defaults", |
| crate_name: "quiche", |
| cargo_env_compat: true, |
| srcs: ["src/lib.rs"], |
| test_suites: ["general-tests"], |
| auto_gen_config: true, |
| - test_options: { |
| - unit_test: true, |
| - }, |
| edition: "2018", |
| features: [ |
| "boringssl", |
| @@ -136,10 +132,6 @@ rust_test { |
| "libring", |
| "liburl", |
| ], |
| - static_libs: [ |
| - "libcrypto", |
| - "libssl", |
| - ], |
| data: [ |
| "examples/cert.crt", |
| "examples/cert.key", |
| @@ -149,3 +118,26 @@ rust_test { |
| "examples/rootca.crt", |
| ], |
| } |
| + |
| +rust_test_host { |
| + name: "quiche_host_test_src_lib", |
| + defaults: ["quiche_test_defaults"], |
| + test_options: { |
| + unit_test: true, |
| + }, |
| + shared_libs: [ |
| + "libcrypto", |
| + "libssl", |
| + ], |
| +} |
| + |
| +rust_test { |
| + name: "quiche_device_test_src_lib", |
| + defaults: ["quiche_test_defaults"], |
| + // To run this test in R platform, it's required to statically link |
| + // libcrypto and libssl. |
| + static_libs: [ |
| + "libcrypto_static", |
| + "libssl", |
| + ], |
| +} |