1diff --git a/Android.bp b/Android.bp 2index 884af0e..ecbb83f 100644 3--- a/Android.bp 4+++ b/Android.bp 5@@ -43,8 +43,8 @@ cc_library_headers { 6 min_sdk_version: "29", 7 } 8 9-rust_ffi_shared { 10- name: "libquiche_shared", 11+rust_defaults { 12+ name: "libquiche_defaults", 13 stem: "libquiche", 14 host_supported: true, 15 crate_name: "quiche", 16@@ -52,10 +52,11 @@ rust_ffi_shared { 17 srcs: ["src/lib.rs"], 18 edition: "2018", 19 features: [ 20- "boringssl-vendored", 21+ "boringssl", 22 "default", 23 ], 24- rustlibs: [ 25+ // Link all crates statically to create a self-contained .so library. 26+ rlibs: [ 27 "liblazy_static", 28 "liblibc", 29 "liblibm", 30@@ -65,41 +66,19 @@ rust_ffi_shared { 31 "libslab", 32 "libsmallvec", 33 ], 34- static_libs: [ 35- "libcrypto", 36- "libssl", 37- ], 38+ prefer_rlib: true, 39+ // For DnsResolver (Mainline module introduced in Q). 40 apex_available: [ 41 "//apex_available:platform", 42 "com.android.resolv", 43 ], 44- product_available: true, 45- vendor_available: true, 46 min_sdk_version: "29", 47 } 48 49-rust_library { 50- name: "libquiche", 51- host_supported: true, 52- crate_name: "quiche", 53- cargo_env_compat: true, 54- srcs: ["src/lib.rs"], 55- edition: "2018", 56- features: [ 57- "boringssl-vendored", 58- "default", 59- ], 60- rustlibs: [ 61- "liblazy_static", 62- "liblibc", 63- "liblibm", 64- "liblog_rust", 65- "liboctets", 66- "libring", 67- "libslab", 68- "libsmallvec", 69- ], 70- static_libs: [ 71+rust_ffi { 72+ name: "libquiche_ffi", 73+ defaults: ["libquiche_defaults"], 74+ shared_libs: [ 75 "libcrypto", 76 "libssl", 77 ], 78@@ -107,57 +86,41 @@ rust_library { 79 "//apex_available:platform", 80 "com.android.resolv", 81 ], 82- product_available: true, 83- vendor_available: true, 84 min_sdk_version: "29", 85 } 86 87-rust_ffi_static { 88- name: "libquiche_static", 89- stem: "libquiche", 90- host_supported: true, 91- crate_name: "quiche", 92- cargo_env_compat: true, 93- srcs: ["src/lib.rs"], 94- edition: "2018", 95- features: [ 96- "boringssl-vendored", 97- "default", 98- ], 99- rustlibs: [ 100- "liblazy_static", 101- "liblibc", 102- "liblibm", 103- "liblog_rust", 104- "liboctets", 105- "libring", 106- "libslab", 107- "libsmallvec", 108+rust_library { 109+ name: "libquiche", 110+ defaults: ["libquiche_defaults"], 111+ shared_libs: [ 112+ "libcrypto", 113+ "libssl", 114 ], 115+} 116+ 117+// This target is used by doh_unit_test to prevent compatibility issues 118+// because doh_unit_test needs to be run on the R platform. 119+rust_library_rlib { 120+ name: "libquiche_static", 121+ defaults: ["libquiche_defaults"], 122 static_libs: [ 123- "libcrypto", 124+ "libcrypto_static", 125 "libssl", 126 ], 127 apex_available: [ 128 "//apex_available:platform", 129 "com.android.resolv", 130 ], 131- product_available: true, 132- vendor_available: true, 133 min_sdk_version: "29", 134 } 135 136-rust_test { 137- name: "quiche_test_src_lib", 138- host_supported: true, 139+rust_defaults { 140+ name: "quiche_test_defaults", 141 crate_name: "quiche", 142 cargo_env_compat: true, 143 srcs: ["src/lib.rs"], 144 test_suites: ["general-tests"], 145 auto_gen_config: true, 146- test_options: { 147- unit_test: true, 148- }, 149 edition: "2018", 150 features: [ 151 "boringssl-vendored", 152@@ -175,10 +138,6 @@ rust_test { 153 "libsmallvec", 154 "liburl", 155 ], 156- static_libs: [ 157- "libcrypto", 158- "libssl", 159- ], 160 data: [ 161 "examples/cert.crt", 162 "examples/cert.key", 163@@ -186,3 +145,26 @@ rust_test { 164 "examples/rootca.crt", 165 ], 166 } 167+ 168+rust_test_host { 169+ name: "quiche_host_test_src_lib", 170+ defaults: ["quiche_test_defaults"], 171+ test_options: { 172+ unit_test: true, 173+ }, 174+ shared_libs: [ 175+ "libcrypto", 176+ "libssl", 177+ ], 178+} 179+ 180+rust_test { 181+ name: "quiche_device_test_src_lib", 182+ defaults: ["quiche_test_defaults"], 183+ // To run this test in R platform, it's required to statically link 184+ // libcrypto and libssl. 185+ static_libs: [ 186+ "libcrypto_static", 187+ "libssl", 188+ ], 189+} 190