Add support for producing dynamic/framework from Gradle (#1105)
This commit is contained in:
committed by
GitHub
parent
391d15df2e
commit
b51d029a33
+22
@@ -34,6 +34,12 @@ open class KonanArtifactContainer(val project: ProjectInternal)
|
||||
registerFactory(KonanProgram::class.java) { name ->
|
||||
instantiator.newInstance(KonanProgram::class.java, name, project, instantiator)
|
||||
}
|
||||
registerFactory(KonanDynamic::class.java) { name ->
|
||||
instantiator.newInstance(KonanDynamic::class.java, name, project, instantiator)
|
||||
}
|
||||
registerFactory(KonanFramework::class.java) { name ->
|
||||
instantiator.newInstance(KonanFramework::class.java, name, project, instantiator)
|
||||
}
|
||||
registerFactory(KonanLibrary::class.java) { name ->
|
||||
instantiator.newInstance(KonanLibrary::class.java, name, project, instantiator)
|
||||
}
|
||||
@@ -58,6 +64,22 @@ open class KonanArtifactContainer(val project: ProjectInternal)
|
||||
fun program(name: String, configureAction: Closure<*>) =
|
||||
program(name, ConfigureUtil.configureUsing(configureAction))
|
||||
|
||||
fun dynamic(name: String) = create(name, KonanDynamic::class.java)
|
||||
fun dynamic(name: String, configureAction: Action<KonanDynamic>) =
|
||||
create(name, KonanDynamic::class.java, configureAction)
|
||||
fun dynamic(name: String, configureAction: KonanDynamic.() -> Unit) =
|
||||
create(name, KonanDynamic::class.java, configureAction)
|
||||
fun dynamic(name: String, configureAction: Closure<*>) =
|
||||
dynamic(name, ConfigureUtil.configureUsing(configureAction))
|
||||
|
||||
fun framework(name: String) = create(name, KonanFramework::class.java)
|
||||
fun framework(name: String, configureAction: Action<KonanFramework>) =
|
||||
create(name, KonanFramework::class.java, configureAction)
|
||||
fun framework(name: String, configureAction: KonanFramework.() -> Unit) =
|
||||
create(name, KonanFramework::class.java, configureAction)
|
||||
fun framework(name: String, configureAction: Closure<*>) =
|
||||
framework(name, ConfigureUtil.configureUsing(configureAction))
|
||||
|
||||
fun library(name: String) = create(name, KonanLibrary::class.java)
|
||||
fun library(name: String, configureAction: Action<KonanLibrary>) =
|
||||
create(name, KonanLibrary::class.java, configureAction)
|
||||
|
||||
+21
-4
@@ -20,10 +20,7 @@ import org.gradle.api.Task
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.internal.project.ProjectInternal
|
||||
import org.gradle.internal.reflect.Instantiator
|
||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileBitcodeTask
|
||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileLibraryTask
|
||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileProgramTask
|
||||
import org.jetbrains.kotlin.gradle.plugin.tasks.KonanCompileTask
|
||||
import org.jetbrains.kotlin.gradle.plugin.tasks.*
|
||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||
import java.io.File
|
||||
|
||||
@@ -76,6 +73,26 @@ open class KonanProgram(name: String, project: ProjectInternal, instantiator: In
|
||||
get() = project.konanBinBaseDir
|
||||
}
|
||||
|
||||
open class KonanDynamic(name: String, project: ProjectInternal, instantiator: Instantiator)
|
||||
: KonanCompileConfig<KonanCompileDynamicTask>(name, KonanCompileDynamicTask::class.java, project, instantiator) {
|
||||
|
||||
override val typeForDescription: String
|
||||
get() = "dynamic library"
|
||||
|
||||
override val defaultBaseDir: File
|
||||
get() = project.konanBinBaseDir
|
||||
}
|
||||
|
||||
open class KonanFramework(name: String, project: ProjectInternal, instantiator: Instantiator)
|
||||
: KonanCompileConfig<KonanCompileFrameworkTask>(name, KonanCompileFrameworkTask::class.java, project, instantiator) {
|
||||
|
||||
override val typeForDescription: String
|
||||
get() = "framework"
|
||||
|
||||
override val defaultBaseDir: File
|
||||
get() = project.konanBinBaseDir
|
||||
}
|
||||
|
||||
open class KonanLibrary(name: String, project: ProjectInternal, instantiator: Instantiator)
|
||||
: KonanCompileConfig<KonanCompileLibraryTask>(name, KonanCompileLibraryTask::class.java, project, instantiator) {
|
||||
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ abstract class KonanTargetableTask: DefaultTask() {
|
||||
/** A task building an artifact. */
|
||||
abstract class KonanArtifactTask: KonanTargetableTask(), KonanArtifactSpec {
|
||||
|
||||
val artifact: File
|
||||
open val artifact: File
|
||||
@OutputFile get() = destinationDir.resolve(artifactNameWithSuffix)
|
||||
|
||||
@Internal lateinit var destinationDir: File
|
||||
|
||||
+13
@@ -23,6 +23,8 @@ import org.jetbrains.kotlin.konan.target.CompilerOutputKind
|
||||
|
||||
enum class Produce(val cliOption: String, val kind: CompilerOutputKind) {
|
||||
PROGRAM("program", CompilerOutputKind.PROGRAM),
|
||||
DYNAMIC("dynamic", CompilerOutputKind.DYNAMIC),
|
||||
FRAMEWORK("framework", CompilerOutputKind.FRAMEWORK),
|
||||
LIBRARY("library", CompilerOutputKind.LIBRARY),
|
||||
BITCODE("bitcode", CompilerOutputKind.BITCODE)
|
||||
}
|
||||
@@ -171,6 +173,17 @@ open class KonanCompileProgramTask: KonanCompileTask() {
|
||||
override val produce: Produce get() = Produce.PROGRAM
|
||||
}
|
||||
|
||||
open class KonanCompileDynamicTask: KonanCompileTask() {
|
||||
override val produce: Produce get() = Produce.DYNAMIC
|
||||
}
|
||||
|
||||
open class KonanCompileFrameworkTask: KonanCompileTask() {
|
||||
override val produce: Produce get() = Produce.FRAMEWORK
|
||||
|
||||
override val artifact
|
||||
@OutputDirectory get() = super.artifact
|
||||
}
|
||||
|
||||
open class KonanCompileLibraryTask: KonanCompileTask() {
|
||||
override val produce: Produce get() = Produce.LIBRARY
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user