fuchsia-build: Update Fuchsia SDK and deps, API level 30

Added update steps to README.md

Bug:512999679
Change-Id: I4155787d46d76911e16b7e93f4d17638677fdaac
Reviewed-on: https://fuchsia-review.googlesource.com/c/third_party/mesa/+/1611276
Commit-Queue: Craig Stout <cstout@google.com>
Reviewed-by: David Gilhooley <dgilhooley@google.com>
diff --git a/WORKSPACE.bazel b/WORKSPACE.bazel
index 91baf21..f900ab1 100644
--- a/WORKSPACE.bazel
+++ b/WORKSPACE.bazel
@@ -29,6 +29,16 @@
     path = "fuchsia-build/third_party/platforms",
 )
 
+local_repository(
+    name = "rules_cc",
+    path = "fuchsia-build/third_party/rules_cc",
+)
+
+local_repository(
+    name = "com_google_protobuf",
+    path = "fuchsia-build/third_party/protobuf",
+)
+
 load("@platforms//host:extension.bzl", "host_platform_repo")
 
 host_platform_repo(
diff --git a/fuchsia-build/README.md b/fuchsia-build/README.md
index 443688e..2899383 100644
--- a/fuchsia-build/README.md
+++ b/fuchsia-build/README.md
@@ -1,3 +1,18 @@
+# Reference
+
+This build structure is mirrored from:
+
+https://fuchsia.googlesource.com/sdk-samples/drivers
+
+To incorporate updates:
+
+- check out the reference repo
+- in WORKSPACE.bazel, check instances of 'local_repository' match (NOTE, our version includes fuchsia-build in the path)
+- for each local_repository, build.sh clones each repo into fuchsia-build (with SETUP_BAZEL=true)
+- run `git submodule` in the reference reop to see the hashes to be used in build.sh
+- for cipd based dependencies (bazel_sdk, rules_fuchsia, clang), sync manifests/* to fuchsia-build/manifests
+- update fuchsia_api_level in fuchsia-build/sdk/package_utils.bzl
+
 # Build
 
 Run the following command:
diff --git a/fuchsia-build/build.sh b/fuchsia-build/build.sh
index f117509..0982982 100755
--- a/fuchsia-build/build.sh
+++ b/fuchsia-build/build.sh
@@ -8,10 +8,16 @@
 CIPD_PACKAGE_ROOT="fuchsia_internal/lib/vulkan/libvulkan_freedreno"
 
 BAZEL_RULES_DIR="fuchsia-build/third_party/fuchsia-infra-bazel-rules"
-BAZEL_RULES_HASH="5adae7bad9561e81c9858727b87196327e7621c0"
+BAZEL_RULES_HASH="6dba3051f6d2f9c7d80b920e0abb3c41ad873d9b"
 
 PLATFORMS_DIR="fuchsia-build/third_party/platforms"
-PLATFORMS_HASH="d5fcb55bf8201539d0c3cb3a882c475330983156"
+PLATFORMS_HASH="5cf94563e35494b0dab15435868dd7f9e3cab2c8"
+
+PROTOBUF_DIR="fuchsia-build/third_party/protobuf"
+PROTOBUF_HASH="a978b75794a6ce4547c9db08a115c458d9190934"
+
+RULESCC_DIR="fuchsia-build/third_party/rules_cc"
+RULESCC_HASH="a1162270a0bb680190e8b4f3dab066f15a1ede6c"
 
 SETUP_BAZEL=true
 EXECUTE_BUILD=true
@@ -110,6 +116,12 @@
     git clone https://fuchsia.googlesource.com/third_party/github.com/bazelbuild/platforms "${PLATFORMS_DIR}"
     git -C "${PLATFORMS_DIR}" checkout "${PLATFORMS_HASH}"
 
+    git clone https://fuchsia.googlesource.com/third_party/protobuf "${PROTOBUF_DIR}"
+    git -C "${PROTOBUF_DIR}" checkout "${PROTOBUF_HASH}"
+
+    git clone https://fuchsia.googlesource.com/third_party/github.com/bazelbuild/rules_cc "${RULESCC_DIR}"
+    git -C "${RULESCC_DIR}" checkout "${RULESCC_HASH}"
+
     "${BAZEL_RULES_DIR}/scripts/bootstrap.sh"
     # If bootstrap installed a local cipd client use that.
     if [ -f ".cipd_client" ]; then
diff --git a/fuchsia-build/manifests/bazel_sdk.ensure b/fuchsia-build/manifests/bazel_sdk.ensure
index 6f1129f..225393f 100644
--- a/fuchsia-build/manifests/bazel_sdk.ensure
+++ b/fuchsia-build/manifests/bazel_sdk.ensure
@@ -1,3 +1,4 @@
 $ResolvedVersions bazel_sdk.resolved
-$VerifiedPlatform linux-amd64
-fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:28.20250728.5.1
+$VerifiedPlatform linux-amd64 mac-amd64
+fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:31.20260417.4.1
+
diff --git a/fuchsia-build/manifests/bazel_sdk.resolved b/fuchsia-build/manifests/bazel_sdk.resolved
index b49dd01..9e8d19d 100644
--- a/fuchsia-build/manifests/bazel_sdk.resolved
+++ b/fuchsia-build/manifests/bazel_sdk.resolved
@@ -2,5 +2,5 @@
 # Do not modify manually. All changes will be overwritten.
 
 fuchsia/sdk/core/fuchsia-bazel-rules/linux-amd64
-	version:28.20250728.5.1
-	-t-DuOBdHfsBGYExjpEp6OeeXeDR6OiiP-8RQBXP9sUC
+	version:31.20260417.4.1
+	kht19s5m9Nmv1PFmDjYtvuFw6v03wnMuMiWKNqvzqw0C
diff --git a/fuchsia-build/manifests/clang.ensure b/fuchsia-build/manifests/clang.ensure
index 9d6130c..f5c6bd5 100644
--- a/fuchsia-build/manifests/clang.ensure
+++ b/fuchsia-build/manifests/clang.ensure
@@ -1,3 +1,4 @@
 $ResolvedVersions clang.resolved
-$VerifiedPlatform linux-amd64
-fuchsia/third_party/clang/${os=linux}-${arch} git_revision:d4d4a04771e183e6385919b72ba8206da87e1f9c
+$VerifiedPlatform linux-amd64 linux-arm64 mac-amd64 windows-amd64
+fuchsia/third_party/clang/${os=linux}-${arch} git_revision:26697f4d07eb921aebabdaa7d064c5165c70717e
+fuchsia/third_party/clang/${os=mac,windows}-amd64 git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
diff --git a/fuchsia-build/manifests/clang.resolved b/fuchsia-build/manifests/clang.resolved
index 57e2407..6df5e28 100644
--- a/fuchsia-build/manifests/clang.resolved
+++ b/fuchsia-build/manifests/clang.resolved
@@ -2,5 +2,17 @@
 # Do not modify manually. All changes will be overwritten.
 
 fuchsia/third_party/clang/linux-amd64
-	git_revision:d4d4a04771e183e6385919b72ba8206da87e1f9c
-	XpjEupIDzbgolnlEYyjrW3lpcgzrsu8lP17_gpt-dbIC
+	git_revision:26697f4d07eb921aebabdaa7d064c5165c70717e
+	ZLOpsdY31bmpJYfVc-WhNa-SfaeK9srNsvm8oGq-A-MC
+
+fuchsia/third_party/clang/linux-arm64
+	git_revision:26697f4d07eb921aebabdaa7d064c5165c70717e
+	Lg93-J_Q_I14wyAA3fiMBcSja8ee3jOBPjNA1bTT0cUC
+
+fuchsia/third_party/clang/mac-amd64
+	git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
+	gLn6tUye8_hs9KK3XOUYt8BocmKasRMSsWMBU0veDoYC
+
+fuchsia/third_party/clang/windows-amd64
+	git_revision:3809e20afc68d7d03821f0ec59b928dcf9befbf4
+	ya_VuD_G47f8eICbJSOQ0Jnx9bOMsNO0FhqqG-mz034C
diff --git a/fuchsia-build/manifests/fuchsia_bazel_rules.ensure b/fuchsia-build/manifests/fuchsia_bazel_rules.ensure
deleted file mode 100644
index 6f1129f..0000000
--- a/fuchsia-build/manifests/fuchsia_bazel_rules.ensure
+++ /dev/null
@@ -1,3 +0,0 @@
-$ResolvedVersions bazel_sdk.resolved
-$VerifiedPlatform linux-amd64
-fuchsia/sdk/core/fuchsia-bazel-rules/${os=linux}-${arch} version:28.20250728.5.1
diff --git a/fuchsia-build/manifests/rules_fuchsia.ensure b/fuchsia-build/manifests/rules_fuchsia.ensure
index c26eff6..a208f11 100644
--- a/fuchsia-build/manifests/rules_fuchsia.ensure
+++ b/fuchsia-build/manifests/rules_fuchsia.ensure
@@ -1,3 +1,4 @@
 $ResolvedVersions rules_fuchsia.resolved
 $VerifiedPlatform linux-amd64
-fuchsia/development/rules_fuchsia version:28.20250728.5.1
+fuchsia/development/rules_fuchsia version:31.20260417.4.1
+
diff --git a/fuchsia-build/manifests/rules_fuchsia.resolved b/fuchsia-build/manifests/rules_fuchsia.resolved
index 61145e3..39b7c01 100644
--- a/fuchsia-build/manifests/rules_fuchsia.resolved
+++ b/fuchsia-build/manifests/rules_fuchsia.resolved
@@ -2,5 +2,5 @@
 # Do not modify manually. All changes will be overwritten.
 
 fuchsia/development/rules_fuchsia
-	version:28.20250728.5.1
-	XZgfHbDazVlpouvyScCeFrEPGCJjZ6kYliSbLWFIYdEC
+	version:31.20260417.4.1
+	3RG-xxX-HKnuDPnaW5FAJMue8V8QxIeA5YZAb3SByAAC
diff --git a/fuchsia-build/sdk/package_utils.bzl b/fuchsia-build/sdk/package_utils.bzl
index 5b79b70..303dc3d 100644
--- a/fuchsia-build/sdk/package_utils.bzl
+++ b/fuchsia-build/sdk/package_utils.bzl
@@ -85,5 +85,5 @@
     fuchsia_package(
         name = name,
         components = [":_%s_component" % name],
-        fuchsia_api_level = "28",
+        fuchsia_api_level = "30",
     )