Generate rules.mk for once_cell via cargo_embargo

Change-Id: Ifb68195fedfd6d7666ff2579657bd980598b4b89
diff --git a/crates/once_cell/Android.bp b/crates/once_cell/Android.bp
index 65861f0..9af78b8 100644
--- a/crates/once_cell/Android.bp
+++ b/crates/once_cell/Android.bp
@@ -109,3 +109,9 @@
     vendor_available: true,
     min_sdk_version: "29",
 }
+
+dirgroup {
+    name: "trusty_dirgroup_external_rust_crates_once_cell",
+    visibility: ["//trusty/vendor/google/aosp/scripts"],
+    dirs: ["."],
+}
diff --git a/crates/once_cell/cargo_embargo.json b/crates/once_cell/cargo_embargo.json
index d9268f7..e4588ba 100644
--- a/crates/once_cell/cargo_embargo.json
+++ b/crates/once_cell/cargo_embargo.json
@@ -4,7 +4,8 @@
     "once_cell": {
       "dep_blocklist": [
         "libcritical_section"
-      ]
+      ],
+      "rulesmk_patch": "patches/rules.mk.diff"
     }
   },
   "run_cargo": false,
@@ -28,6 +29,16 @@
           "no_std": true
         }
       }
+    },
+    {
+      "package": {
+        "once_cell": {
+          "alloc": true,
+          "no_std": true
+        }
+      },
+      "generate_androidbp": false,
+      "generate_rulesmk": true
     }
   ]
 }
diff --git a/crates/once_cell/patches/rules.mk.diff b/crates/once_cell/patches/rules.mk.diff
index 64cce41..b003833 100644
--- a/crates/once_cell/patches/rules.mk.diff
+++ b/crates/once_cell/patches/rules.mk.diff
@@ -1,14 +1,33 @@
-diff --git b/rules.mk a/rules.mk
-index abb2410..95c1743 100644
---- b/rules.mk
-+++ a/rules.mk
-@@ -13,9 +13,4 @@ MODULE_RUSTFLAGS += \
+diff --git a/rules.mk b/rules.mk
+index d9b6b71f..1bb39ffc 100644
+--- a/rules.mk
++++ b/rules.mk
+@@ -8,17 +8,26 @@ MODULE := $(LOCAL_DIR)
+ MODULE_CRATE_NAME := once_cell
+ MODULE_RUST_CRATE_TYPES := rlib
+ MODULE_SRCS := $(LOCAL_DIR)/src/lib.rs
+-MODULE_ADD_IMPLICIT_DEPS := false
+ MODULE_RUST_EDITION := 2021
+ MODULE_RUSTFLAGS += \
+ 	--cfg 'feature="alloc"' \
+ 	--cfg 'feature="default"' \
  	--cfg 'feature="race"' \
- 	--cfg 'feature="std"' \
- 
--MODULE_LIBRARY_DEPS := \
--	external/rust/crates/atomic_polyfill \
--	external/rust/crates/critical_section \
--	external/rust/crates/parking_lot_core \
--
+-	--cfg 'feature="std"'
++
++ifeq ($(call TOBOOL,$(TRUSTY_USERSPACE)),true)
++
++MODULE_RUSTFLAGS += \
++	--cfg 'feature="std"' \
++
++else
++
++MODULE_ADD_IMPLICIT_DEPS := false
+
+ MODULE_LIBRARY_DEPS := \
+ 	trusty/user/base/lib/liballoc-rust \
+ 	trusty/user/base/lib/libcompiler_builtins-rust \
+ 	trusty/user/base/lib/libcore-rust
+
++endif
++
  include make/library.mk
diff --git a/crates/once_cell/rules.mk b/crates/once_cell/rules.mk
index 95c1743..1bb39ff 100644
--- a/crates/once_cell/rules.mk
+++ b/crates/once_cell/rules.mk
@@ -1,16 +1,33 @@
-# This file is generated by cargo2rulesmk.py --run --config cargo2rulesmk.json.
-# Do not modify this file as changes will be overridden on upgrade.
+# This file is generated by cargo_embargo.
+# Do not modify this file after the LOCAL_DIR line
+# because the changes will be overridden on upgrade.
+# Content before the first line starting with LOCAL_DIR is preserved.
 
 LOCAL_DIR := $(GET_LOCAL_DIR)
 MODULE := $(LOCAL_DIR)
 MODULE_CRATE_NAME := once_cell
-MODULE_SRCS := \
-	$(LOCAL_DIR)/src/lib.rs \
-
+MODULE_RUST_CRATE_TYPES := rlib
+MODULE_SRCS := $(LOCAL_DIR)/src/lib.rs
 MODULE_RUST_EDITION := 2021
 MODULE_RUSTFLAGS += \
 	--cfg 'feature="alloc"' \
+	--cfg 'feature="default"' \
 	--cfg 'feature="race"' \
+
+ifeq ($(call TOBOOL,$(TRUSTY_USERSPACE)),true)
+
+MODULE_RUSTFLAGS += \
 	--cfg 'feature="std"' \
 
+else
+
+MODULE_ADD_IMPLICIT_DEPS := false
+
+MODULE_LIBRARY_DEPS := \
+	trusty/user/base/lib/liballoc-rust \
+	trusty/user/base/lib/libcompiler_builtins-rust \
+	trusty/user/base/lib/libcore-rust
+
+endif
+
 include make/library.mk