Snap for 11598262 from 65742c01dd3a6f879fe0f0617e4720a869a16aba to sdk-release

Change-Id: I17b4c16b9cf59095ea5bd00bb5c037b06ed6e74e
diff --git a/Android.bp b/Android.bp
index f66e07c..e4761c1 100644
--- a/Android.bp
+++ b/Android.bp
@@ -163,7 +163,7 @@
         android: {
             shared_libs: [
                 "libcutils",
-                "liblog"
+                "liblog",
             ],
             static_libs: [
                 "libdrm",
@@ -172,13 +172,40 @@
     },
     apex_available: [
         "//apex_available:platform",
-        "com.android.virt",
+        "//apex_available:anyapex",
     ],
     vendor_available: true,
+    product_available: true,
 
     export_include_dirs: ["."],
 }
 
+// Rust bindings to minigbm, generated in a way compatible with gbm crate.
+rust_bindgen {
+    name: "libgbm_sys",
+    crate_name: "gbm_sys",
+    wrapper_src: "rust/gbm_wrapper.h",
+    source_stem: "bindings",
+    bindgen_flags: [
+        "--blocklist-type=__BINDGEN_TMP_.*",
+        "--allowlist-type=^gbm_.*$",
+        "--allowlist-function=^gbm_.*$",
+        "--allowlist-var=GBM_.*|gbm_.*$",
+        "--constified-enum-module=^gbm_.*$",
+    ],
+    shared_libs: ["libgbm"],
+    host_supported: true,
+    vendor_available: true,
+    product_available: true,
+    apex_available: [
+        "//apex_available:anyapex",
+        "//apex_available:platform",
+    ],
+    visibility: [
+        "//external/rust/crates/gbm",
+    ],
+}
+
 // Generic
 cc_library_shared {
     name: "libminigbm_gralloc",
diff --git a/rust/gbm_wrapper.h b/rust/gbm_wrapper.h
new file mode 100644
index 0000000..abcf3af
--- /dev/null
+++ b/rust/gbm_wrapper.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2024 Google LLC
+ */
+
+#include <gbm.h>
+
+// bindgen doesn't create constants for macros that expand to other macros
+// https://github.com/Smithay/gbm.rs/blob/606c4260e0147256fb5c2901bbe837c0dc7d9f2d/gbm-sys/build.rs#L16
+
+const unsigned int __BINDGEN_TMP_GBM_BO_IMPORT_WL_BUFFER = GBM_BO_IMPORT_WL_BUFFER;
+#undef GBM_BO_IMPORT_WL_BUFFER
+const unsigned int GBM_BO_IMPORT_WL_BUFFER = __BINDGEN_TMP_GBM_BO_IMPORT_WL_BUFFER;
+#define GBM_BO_IMPORT_WL_BUFFER GBM_BO_IMPORT_WL_BUFFER
+
+const unsigned int __BINDGEN_TMP_GBM_BO_IMPORT_EGL_IMAGE = GBM_BO_IMPORT_EGL_IMAGE;
+#undef GBM_BO_IMPORT_EGL_IMAGE
+const unsigned int GBM_BO_IMPORT_EGL_IMAGE = __BINDGEN_TMP_GBM_BO_IMPORT_EGL_IMAGE;
+#define GBM_BO_IMPORT_EGL_IMAGE GBM_BO_IMPORT_EGL_IMAGE
+
+const unsigned int __BINDGEN_TMP_GBM_BO_IMPORT_FD = GBM_BO_IMPORT_FD;
+#undef GBM_BO_IMPORT_FD
+const unsigned int GBM_BO_IMPORT_FD = __BINDGEN_TMP_GBM_BO_IMPORT_FD;
+#define GBM_BO_IMPORT_FD GBM_BO_IMPORT_FD
+
+const unsigned int __BINDGEN_TMP_GBM_BO_IMPORT_FD_MODIFIER = GBM_BO_IMPORT_FD_MODIFIER;
+#undef GBM_BO_IMPORT_FD_MODIFIER
+const unsigned int GBM_BO_IMPORT_FD_MODIFIER = __BINDGEN_TMP_GBM_BO_IMPORT_FD_MODIFIER;
+#define GBM_BO_IMPORT_FD_MODIFIER GBM_BO_IMPORT_FD_MODIFIER