Fix config and re-run cargo2android.py.

Test: Compared Android.bp
Change-Id: I3e392e80ca1d9c684757b048660a372d286a201c
diff --git a/.cargo/config.toml b/.cargo/config.toml
index e2b197d..278afcd 100644
--- a/.cargo/config.toml
+++ b/.cargo/config.toml
@@ -1,2 +1,2 @@
 [patch.crates-io]
-bssl-ffi = { package = "bssl-sys", version = "0.1.0", path = "../../../boringssl/build/rust", optional=true }
+bssl-ffi = { package = "bssl-sys", version = "0.1.0", path = "../../../boringssl/src/rust/bssl-sys", optional=true }
diff --git a/Android.bp b/Android.bp
index 7d2407d..3f312fb 100644
--- a/Android.bp
+++ b/Android.bp
@@ -1,4 +1,4 @@
-// This file is generated by cargo2android.py --config ./cargo2android.json.
+// This file is generated by cargo2android.py --config cargo2android.json.
 // Do not modify this file as changes will be overridden on upgrade.
 
 // WARNING! This crate has a change in dependency structure that is not yet
@@ -45,12 +45,38 @@
     ],
 }
 
-rust_defaults {
-    name: "libopenssl_defaults",
+rust_library {
+    name: "libopenssl",
     host_supported: true,
     crate_name: "openssl",
     cargo_env_compat: true,
-    cargo_pkg_version: "0.10.43",
+    cargo_pkg_version: "0.10.45",
+    srcs: ["src/lib.rs"],
+    edition: "2018",
+    features: ["unstable_boringssl"],
+    cfgs: ["boringssl", "soong"],
+    rustlibs: [
+        "libbitflags-1.3.2",
+        "libcfg_if",
+        "libbssl_ffi",
+        "libforeign_types",
+        "liblibc",
+        "libonce_cell",
+    ],
+    proc_macros: ["libopenssl_macros"],
+    apex_available: [
+        "//apex_available:platform",
+        "com.android.virt",
+    ],
+    product_available: true,
+    vendor_available: true,
+}
+
+rust_library_host_rlib {
+    name: "libopenssl_static",
+    crate_name: "openssl",
+    cargo_env_compat: true,
+    cargo_pkg_version: "0.10.45",
     srcs: ["src/lib.rs"],
     edition: "2018",
     features: ["unstable_boringssl"],
@@ -62,23 +88,8 @@
         "liblibc",
         "libonce_cell",
     ],
-    proc_macros: ["libopenssl_macros"],
-    apex_available: [
-        "//apex_available:platform",
-        "com.android.virt",
+    rlibs: [
+        "libbssl_ffi_static",
     ],
-    vendor_available: true,
-    product_available: true,
-}
-
-rust_library {
-    name: "libopenssl",
-    defaults: ["libopenssl_defaults"],
-    rustlibs: ["libbssl_ffi"],
-}
-
-rust_library_host_rlib {
-    name: "libopenssl_static",
-    defaults: ["libopenssl_defaults"],
-    rlibs: ["libbssl_ffi_static"],
+    proc_macros: ["libopenssl_macros"],
 }
diff --git a/README.android b/README.android
index 1957c30..02da029 100644
--- a/README.android
+++ b/README.android
@@ -4,16 +4,15 @@
     built. Copy `googletest` to `boringssl`, which is needed to build the rust bindings
 
     ```
-    $ cp -r external/googletest/googletest external/boringssl/src/third_party/
+    $ cp -r external/googletest external/boringssl/src/third_party/
     ```
 2.  Build the rust bindings (More information at
     https://boringssl.googlesource.com/boringssl/+/HEAD/BUILDING.md)
 
     ```
-    $ cd external/boringssl
-    $ mkdir build && cd build
-    $ cmake .. -DRUST_BINDINGS=x86_64-unknown-linux-gnu
-    $ make
+    $ cd external/boringssl/src
+    $ cmake -DRUST_BINDINGS=x86_64-unknown-linux-gnu -B build
+    $ make -C build
     ```
 3.  Run `tools/external_updater/updater.sh update rust/crates/openssl`. Cargo errors causing the
     command to fail are expected (since the boringSSL crate is outside of the `openssl` directory,
diff --git a/cargo2android.json b/cargo2android.json
index 4caae30..7c9a127 100644
--- a/cargo2android.json
+++ b/cargo2android.json
@@ -3,9 +3,20 @@
     "//apex_available:platform",
     "com.android.virt"
   ],
-  "device": true,
+  "dep-suffixes": {
+    "bitflags": "-1.3.2"
+  },
   "features": "unstable_boringssl",
   "run": true,
   "vendor-available": true,
-  "patch": "patches/Android.bp.diff"
+  "patch": "patches/Android.bp.diff",
+  "variants": [
+    {
+      "device": true
+    },
+    {
+      "suffix": "_static",
+      "force-rlib": true
+    }
+  ]
 }
diff --git a/patches/0001-cfgs.diff b/patches/0001-cfgs.diff
index f118c41..ae6ba11 100644
--- a/patches/0001-cfgs.diff
+++ b/patches/0001-cfgs.diff
@@ -5,7 +5,7 @@
 +++ b/.cargo/config.toml
 @@ -0,0 +1,2 @@
 +[patch.crates-io]
-+bssl-ffi = { package = "bssl-sys", version = "0.1.0", path = "../../../boringssl/build/rust", optional=true }
++bssl-ffi = { package = "bssl-sys", version = "0.1.0", path = "../../../boringssl/src/rust/bssl-sys", optional=true }
 diff --git a/src/cipher.rs b/src/cipher.rs
 index ab5f49d..84a8265 100644
 --- a/src/cipher.rs
diff --git a/patches/Android.bp.diff b/patches/Android.bp.diff
index ef0ab4f..56d2015 100644
--- a/patches/Android.bp.diff
+++ b/patches/Android.bp.diff
@@ -1,5 +1,5 @@
 diff --git a/Android.bp b/Android.bp
-index 6628b2a..0ece701 100644
+index b10f5b0..5214daa 100644
 --- a/Android.bp
 +++ b/Android.bp
 @@ -54,11 +54,11 @@ rust_library {
@@ -9,11 +9,30 @@
 -    cfgs: ["boringssl"],
 +    cfgs: ["boringssl", "soong"],
      rustlibs: [
--        "libbitflags",
-+        "libbitflags-1.3.2",
+         "libbitflags-1.3.2",
          "libcfg_if",
 -        "libopenssl_sys",
 +        "libbssl_ffi",
          "libforeign_types",
          "liblibc",
          "libonce_cell",
+@@ -81,15 +81,17 @@ rust_library {
+     srcs: ["src/lib.rs"],
+     edition: "2018",
+     features: ["unstable_boringssl"],
+-    cfgs: ["boringssl"],
++    cfgs: ["boringssl", "soong"],
+     rustlibs: [
+         "libbitflags-1.3.2",
+         "libcfg_if",
+-        "libopenssl_sys",
+         "libforeign_types",
+         "liblibc",
+         "libonce_cell",
+     ],
++    rlibs: [
++        "libbssl_ffi_static",
++    ],
+     proc_macros: ["libopenssl_macros"],
+     apex_available: [
+         "//apex_available:platform",