Draft
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt
index bc877e2..14fea79 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdeCommonizedNativePlatformDependencyResolver.kt
@@ -23,7 +23,7 @@
         val project = sourceSet.project
         val commonizerTarget = sourceSet.commonizerTarget.getOrThrow() as? SharedCommonizerTarget ?: return emptySet()
         val commonizerTask = project.commonizeNativeDistributionTask?.get() ?: return emptySet()
-        val outputDirectory = resolveCommonizedDirectory(commonizerTask.rootOutputDirectory, commonizerTarget)
+        val outputDirectory = resolveCommonizedDirectory(commonizerTask.rootOutputDirectoryProperty.get().asFile, commonizerTarget)
 
         return outputDirectory.listFiles().orEmpty()
             .filter { it.isDirectory || it.extension == KLIB_FILE_EXTENSION }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt
index 9317770..76828ea 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/CommonizerTasks.kt
@@ -165,7 +165,7 @@
                 group = "interop"
                 description = "Deletes all previously commonized klib's from the Kotlin/Native distribution"
 
-                commonizerDirectory.set(commonizeNativeDistributionTask.map { it.rootOutputDirectory })
+                commonizerDirectory.set(commonizeNativeDistributionTask.flatMap { it.rootOutputDirectoryProperty.asFile })
             }
         )
     }
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt
index 594af96..f030ae6 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/KotlinNativePlatformDependencies.kt
@@ -61,7 +61,19 @@
 internal fun Project.getNativeDistributionDependencies(target: CommonizerTarget): FileCollection {
     return when (target) {
         is LeafCommonizerTarget -> getOriginalPlatformLibrariesFor(target)
-        is SharedCommonizerTarget -> commonizeNativeDistributionTask?.get()?.getCommonizedPlatformLibrariesFor(target) ?: project.files()
+//        is SharedCommonizerTarget -> commonizeNativeDistributionTask?.get()?.getCommonizedPlatformLibrariesFor(target) ?: project.files()
+        is SharedCommonizerTarget -> {
+            val commonizerTaskProvider = commonizeNativeDistributionTask ?: return project.files()
+            val commonizedLibrariesProvider = commonizerTaskProvider.map { task ->
+                task.rootOutputDirectoryProperty.map {
+                    println("$it")
+                    println("Hi there!!")
+                    it.asFile
+                    // getCommonizedPlatformLibrariesFor(it.asFile, target)
+                }
+            }
+            project.files(commonizedLibrariesProvider)
+        }
     }
 }
 
@@ -79,9 +91,9 @@
     konanDistribution.platformLibsDir.resolve(target.konanTarget.name).listLibraryFiles().toSet()
 }
 
-private fun NativeDistributionCommonizerTask.getCommonizedPlatformLibrariesFor(target: SharedCommonizerTarget): FileCollection {
+private fun getCommonizedPlatformLibrariesFor(rootOutputDirectory: File, target: SharedCommonizerTarget): List<File> {
     val targetOutputDirectory = CommonizerOutputFileLayout.resolveCommonizedDirectory(rootOutputDirectory, target)
-    return project.filesProvider { targetOutputDirectory.listLibraryFiles() }.builtBy(this)
+    return targetOutputDirectory.listLibraryFiles()
 }
 
 private suspend fun Project.addDependencies(
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt
index 83efe01..a5bdbe6 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/NativeDistributionCommonizerTask.kt
@@ -8,6 +8,7 @@
 import org.gradle.api.DefaultTask
 import org.gradle.api.Project
 import org.gradle.api.file.ConfigurableFileCollection
+import org.gradle.api.file.RegularFileProperty
 import org.gradle.api.model.ObjectFactory
 import org.gradle.api.provider.ListProperty
 import org.gradle.api.provider.Property
@@ -80,15 +81,21 @@
     private val additionalSettings = project.additionalCommonizerSettings
 
     @get:Internal
-    internal val rootOutputDirectory: File = project.file {
-        project.file(project.konanHome)
-            .resolve(KONAN_DISTRIBUTION_KLIB_DIR)
-            .resolve(KONAN_DISTRIBUTION_COMMONIZED_LIBS_DIR)
-            .resolve(URLEncoder.encode(project.getKotlinPluginVersion(), Charsets.UTF_8.name()))
-    }
+    @Deprecated("Use lazy replacement", replaceWith = ReplaceWith("rootOutputDirectoryProperty.get().asFile"))
+    internal val rootOutputDirectory: File get() = rootOutputDirectoryProperty.asFile.get()
+
+    @get:Internal
+    internal val rootOutputDirectoryProperty: RegularFileProperty = objectFactory
+        .fileProperty()
+        .convention {
+            project.file(project.konanHome)
+                .resolve(KONAN_DISTRIBUTION_KLIB_DIR)
+                .resolve(KONAN_DISTRIBUTION_COMMONIZED_LIBS_DIR)
+                .resolve(URLEncoder.encode(project.getKotlinPluginVersion(), Charsets.UTF_8.name()))
+        }
 
     private val commonizerCache = NativeDistributionCommonizerCache(
-        outputDirectory = rootOutputDirectory,
+        outputDirectory = rootOutputDirectoryProperty.get().asFile,
         konanHome = konanHome,
         logger = logger,
         isCachingEnabled = project.kotlinPropertiesProvider.enableNativeDistributionCommonizationCache