Fix regression in LtoArtifacts when using action templates

The code now matches previous native implementation. declare_shared_directory takes absolute path as an input (declare_directory takes package-relative path <- that was the first problem).

Code now also respects specific configuration that can be encoded in actions object. Same way as declare_shared_artifact. This is needed for Android and Apple builds, that are using split configurations to create fat binaries.

PiperOrigin-RevId: 817128081
Change-Id: I3bd1e34feec94e792d233fdc2de96894c12edd27
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java
index 8befa91..387eca1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java
@@ -415,6 +415,14 @@
         String path, Object artifactRoot, StarlarkThread thread) {
       return construction.create(PathFragment.create(path));
     }
+
+    @StarlarkMethod(
+        name = "declare_shareable_directory",
+        parameters = {@Param(name = "path")},
+        documented = false)
+    public FileApi createShareableDirectory(String path) {
+      return construction.createTreeArtifact(PathFragment.create(path));
+    }
   }
 
   @StarlarkMethod(
diff --git a/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl b/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl
index 462b710..ccaac00 100644
--- a/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl
@@ -284,9 +284,10 @@
 
     imports, index, dwo_file = None, None, None
     if bitcode_file.is_directory:
-        object_file = actions.declare_directory(obj)
+        # declare_shareable_directory is needed to create TreeArtifact in a different configuration (for Android split configurations)
+        object_file = actions.declare_shareable_directory(obj)
         if not create_shared_non_lto:
-            imports = actions.declare_directory(index_obj)
+            imports = actions.declare_shareable_directory(index_obj)
             index = imports
 
         # No support for dwo files for tree artifacts at the moment. This should not throw an