[K/N] Make NativeDependenciesDownloader compatible with CC ^KTI-1553
diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt
index 3d09abc..6418749 100644
--- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt
+++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloader.kt
@@ -6,10 +6,16 @@
 package org.jetbrains.kotlin.dependencies
 
 import org.gradle.api.DefaultTask
+import org.gradle.api.file.DirectoryProperty
+import org.gradle.api.logging.LogLevel
 import org.gradle.api.provider.Property
 import org.gradle.api.tasks.Internal
 import org.gradle.api.tasks.TaskAction
 import org.gradle.api.tasks.UntrackedTask
+import org.gradle.kotlin.dsl.getByType
+import org.jetbrains.kotlin.konan.properties.KonanPropertiesLoader
+import org.jetbrains.kotlin.konan.target.KonanTarget
+import org.jetbrains.kotlin.konan.target.PlatformManager
 import org.jetbrains.kotlin.konan.util.DependencyProcessor
 
 /**
@@ -20,13 +26,39 @@
 @UntrackedTask(because = "Output is large and work avoidance is performed in DependencyProcessor anyway")
 abstract class NativeDependenciesDownloader : DefaultTask() {
     /**
-     * [DependencyProcessor] that will perform downloading
+     * Target for which to download dependency.
      */
     @get:Internal
-    abstract val dependencyProcessor: Property<DependencyProcessor>
+    abstract val target: Property<KonanTarget>
+
+    /**
+     * Root directory where to place all dependencies.
+     */
+    @get:Internal
+    abstract val dependenciesDirectory: DirectoryProperty
+
+    /**
+     * Dependency repository.
+     */
+    @get:Internal
+    abstract val repositoryURL: Property<String>
+
+    private val platformManager = project.extensions.getByType<PlatformManager>()
 
     @TaskAction
     fun downloadAndExtract() {
-        dependencyProcessor.get().run()
+        val loader = platformManager.loader(target.get())
+        check(loader is KonanPropertiesLoader)
+        val dependencyProcessor =
+                DependencyProcessor(
+                        dependenciesDirectory.asFile.get(),
+                        loader,
+                        repositoryURL.get(),
+                        keepUnstable = false) { url, currentBytes, totalBytes ->
+                    // TODO: Consider using logger.
+                    print("\nDownloading dependency for ${target.get()}: $url (${currentBytes}/${totalBytes}). ")
+                }
+        dependencyProcessor.showInfo = logger.isEnabled(LogLevel.INFO)
+        dependencyProcessor.run()
     }
 }
\ No newline at end of file
diff --git a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt
index ffd4733..03079a2 100644
--- a/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt
+++ b/kotlin-native/build-tools/src/main/kotlin/org/jetbrains/kotlin/dependencies/NativeDependenciesDownloaderPlugin.kt
@@ -103,11 +103,8 @@
                     owner.dependenciesDirectory.apply { finalizeValue() }.asFile.get(),
                     loader,
                     owner.repositoryURL.apply { finalizeValue() }.get(),
-                    keepUnstable = false) { url, currentBytes, totalBytes ->
-                // TODO: Consider using logger.
-                print("\nDownloading dependency for $_target: $url (${currentBytes}/${totalBytes}). ")
-            }.apply {
-                showInfo = project.logger.isEnabled(LogLevel.INFO)
+                    keepUnstable = false) { _, _, _ ->
+                error("This is used as dependency resolver only, downloading cannot be performed")
             }
         }
 
@@ -116,7 +113,9 @@
         val task = project.tasks.register<NativeDependenciesDownloader>("nativeDependencies${_target.name.capitalized}") {
             description = "Download dependencies for $_target"
             group = "native dependencies"
-            dependencyProcessor.set(this@Target.dependencyProcessor)
+            target.set(this@Target.target)
+            dependenciesDirectory.set(owner.dependenciesDirectory)
+            repositoryURL.set(owner.repositoryURL)
         }
 
         init {