All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.co.touchlab.skie.plugin.shim.impl.ActualKotlinNativeCompilationShim.kt Maven / Gradle / Ivy

package co.touchlab.skie.plugin.shim.impl

import co.touchlab.skie.plugin.shim.KotlinNativeCompilationShim
import co.touchlab.skie.plugin.shim.KotlinNativeTargetShim
import co.touchlab.skie.plugin.shim.KotlinSourceSetShim
import co.touchlab.skie.util.directory.SkieCompilationDirectory
import org.gradle.api.DomainObjectSet
import org.gradle.api.Named
import org.gradle.api.Task
import org.gradle.api.provider.Provider
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation
import java.io.File

class ActualKotlinNativeCompilationShim(
    val kotlinNativeCompilation: KotlinNativeCompilation,
    override val target: KotlinNativeTargetShim,
) : KotlinNativeCompilationShim, Named by kotlinNativeCompilation {

    override val compileTaskProvider: TaskProvider = kotlinNativeCompilation.compileTaskProvider

    override val compileTaskOutputFileProvider: Provider = kotlinNativeCompilation.compileTaskProvider.flatMap { it.outputFile }

    override val allKotlinSourceSets: DomainObjectSet =
        kotlinNativeCompilation.project.objects.domainObjectSet(KotlinSourceSetShim::class.java)

    override val skieCompilationDirectory: Provider =
        kotlinNativeCompilation.project.layout.buildDirectory
            .dir("skie/compilation/${target.name}/${kotlinNativeCompilation.name}")
            .map { SkieCompilationDirectory(it.asFile) }

    init {
        kotlinNativeCompilation.allKotlinSourceSets.forAll {
            allKotlinSourceSets.add(ActualKotlinSourceSetShim(it))
        }
    }

    override fun toString(): String =
        kotlinNativeCompilation.toString()

    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (other !is ActualKotlinNativeCompilationShim) return false

        if (kotlinNativeCompilation != other.kotlinNativeCompilation) return false

        return true
    }

    override fun hashCode(): Int =
        kotlinNativeCompilation.hashCode()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy