gradle-plugin: Support custom entry point

This commit is contained in:
Ilya Matveev
2017-11-03 17:06:33 +03:00
committed by ilmat192
parent 9c0a583801
commit 59b91cf906
4 changed files with 35 additions and 1 deletions
@@ -61,6 +61,8 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
override fun enableOptimizations(flag: Boolean) = forEach { it.enableOptimizations(flag) }
override fun enableAssertions(flag: Boolean) = forEach { it.enableAssertions(flag) }
override fun entryPoint(entryPoint: String) = forEach { it.entryPoint(entryPoint) }
override fun measureTime(flag: Boolean) = forEach { it.measureTime(flag) }
}
@@ -62,6 +62,8 @@ interface KonanCompileSpec: KonanBuildingSpec {
fun enableOptimizations(flag: Boolean)
fun enableAssertions(flag: Boolean)
fun entryPoint(entryPoint: String)
fun measureTime(flag: Boolean)
}
@@ -61,6 +61,9 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
@Input var noMain = false
@Input var enableOptimizations = false
@Input var enableAssertions = false
@Optional @Input var entryPoint: String? = null
@Console var measureTime = false
val languageVersion : String?
@@ -87,6 +90,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
addArgIfNotNull("-target", konanTarget.userName)
addArgIfNotNull("-language-version", languageVersion)
addArgIfNotNull("-api-version", apiVersion)
addArgIfNotNull("-entry", entryPoint)
addKey("-g", enableDebug)
addKey("-nostdlib", noStdLib)
@@ -146,13 +150,17 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
}
override fun enableOptimizations(flag: Boolean) {
enableOptimizations = true
enableOptimizations = flag
}
override fun enableAssertions(flag: Boolean) {
enableAssertions = flag
}
override fun entryPoint(entryPoint: String) {
this.entryPoint = entryPoint
}
override fun measureTime(flag: Boolean) {
measureTime = flag
}
@@ -97,6 +97,28 @@ class IncrementalSpecification extends BaseKonanSpecification {
"noDefaultLibs" | "true"
}
def 'Plugin should support custom entry points and recompile an artifact if it changes'() {
when:
def project = KonanProject.createEmpty(projectDirectory) { KonanProject it ->
it.addCompilerArtifact("main", """
|fun main(args: Array<String>) { println("default main") }
|
""".stripMargin())
}
def results = buildTwice(project) { KonanProject it ->
it.srcFiles[0].write("""
|package foo
|
|fun bar(args: Array<String>) { println("changed main") }
|
""".stripMargin())
it.addSetting("main", "entryPoint", "'foo.bar'")
}
then:
onlyRecompilationHappened(*results)
}
def 'srcFiles change for a compilation task should cause only recompilation'() {
when:
def project = KonanProject.createWithInterop(projectDirectory, ArtifactType.LIBRARY) { KonanProject it ->