| diff --git a/Android.bp b/Android.bp |
| index aced8a6..578cc68 100644 |
| --- a/Android.bp |
| +++ b/Android.bp |
| @@ -43,25 +43,38 @@ 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", |
| 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,52 +82,20 @@ rust_ffi_shared { |
| |
| rust_library { |
| name: "libquiche", |
| - host_supported: true, |
| - crate_name: "quiche", |
| - 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", |
| - 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", |
| ], |
| } |
| @@ -127,7 +108,7 @@ rust_defaults { |
| auto_gen_config: true, |
| edition: "2018", |
| features: [ |
| - "boringssl-vendored", |
| + "boringssl", |
| "default", |
| ], |
| rustlibs: [ |
| @@ -139,10 +120,6 @@ rust_defaults { |
| "libring", |
| "liburl", |
| ], |
| - static_libs: [ |
| - "libcrypto", |
| - "libssl", |
| - ], |
| data: [ |
| "examples/cert.crt", |
| "examples/cert.key", |
| @@ -151,11 +134,21 @@ rust_test_host { |
| 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", |
| + ], |
| } |
| |
| // dependent_library ["feature_list"] |