Add Android NDK Vulkan validation layers libraries

Fix #10094

Closes #10095.

PiperOrigin-RevId: 308180797
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
index dc33d59..afd0ea6 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/AndroidNdkRepositoryFunction.java
@@ -85,11 +85,14 @@
     String ccToolchainSuiteTemplate = getTemplate("android_ndk_cc_toolchain_suite_template.txt");
     String ccToolchainTemplate = getTemplate("android_ndk_cc_toolchain_template.txt");
     String stlFilegroupTemplate = getTemplate("android_ndk_stl_filegroup_template.txt");
+    String vulkanValidationLayersTemplate =
+        getTemplate("android_ndk_vulkan_validation_layers_template.txt");
     String miscLibrariesTemplate = getTemplate("android_ndk_misc_libraries_template.txt");
 
     StringBuilder ccToolchainSuites = new StringBuilder();
     StringBuilder ccToolchainRules = new StringBuilder();
     StringBuilder stlFilegroups = new StringBuilder();
+    StringBuilder vulkanValidationLayers = new StringBuilder();
     for (CrosstoolStlPair crosstoolStlPair : crosstools) {
 
       // Create the cc_toolchain_suite rule
@@ -131,6 +134,14 @@
                 .replace("%name%", entry.getKey())
                 .replace("%fileGlobPattern%", entry.getValue()));
       }
+
+      // Create the Vulkan validation layers libraries
+      for (CToolchain toolchain : crosstool.getToolchainList()) {
+        vulkanValidationLayers.append(
+            vulkanValidationLayersTemplate
+                .replace("%toolchainName%", toolchain.getToolchainIdentifier())
+                .replace("%cpu%", toolchain.getTargetCpu()));
+      }
     }
 
     return buildFileTemplate
@@ -139,6 +150,7 @@
         .replace("%ccToolchainSuites%", ccToolchainSuites)
         .replace("%ccToolchainRules%", ccToolchainRules)
         .replace("%stlFilegroups%", stlFilegroups)
+        .replace("%vulkanValidationLayers%", vulkanValidationLayers)
         .replace("%miscLibraries%", miscLibrariesTemplate);
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_build_file_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_build_file_template.txt
index 0d0fbb4..b8e58e5 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_build_file_template.txt
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_build_file_template.txt
@@ -53,6 +53,12 @@
 %stlFilegroups%
 
 ################################################################
+# Vulkan validation layers libraries
+################################################################
+
+%vulkanValidationLayers%
+
+################################################################
 # Miscellaneous runtime libraries
 ################################################################
 
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_vulkan_validation_layers_template.txt b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_vulkan_validation_layers_template.txt
new file mode 100644
index 0000000..dd32111
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/android_ndk_vulkan_validation_layers_template.txt
@@ -0,0 +1,4 @@
+cc_library(
+    name = "vulkan_validation_layers_%toolchainName%",
+    srcs = glob(["ndk/sources/third_party/vulkan/src/build-android/jniLibs/%cpu%/libVkLayer_*.so"]),
+)