gradle-plugin: Support custom entry point
This commit is contained in:
+2
@@ -61,6 +61,8 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
|
|||||||
override fun enableOptimizations(flag: Boolean) = forEach { it.enableOptimizations(flag) }
|
override fun enableOptimizations(flag: Boolean) = forEach { it.enableOptimizations(flag) }
|
||||||
override fun enableAssertions(flag: Boolean) = forEach { it.enableAssertions(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) }
|
override fun measureTime(flag: Boolean) = forEach { it.measureTime(flag) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
@@ -62,6 +62,8 @@ interface KonanCompileSpec: KonanBuildingSpec {
|
|||||||
fun enableOptimizations(flag: Boolean)
|
fun enableOptimizations(flag: Boolean)
|
||||||
fun enableAssertions(flag: Boolean)
|
fun enableAssertions(flag: Boolean)
|
||||||
|
|
||||||
|
fun entryPoint(entryPoint: String)
|
||||||
|
|
||||||
fun measureTime(flag: Boolean)
|
fun measureTime(flag: Boolean)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
-1
@@ -61,6 +61,9 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
@Input var noMain = false
|
@Input var noMain = false
|
||||||
@Input var enableOptimizations = false
|
@Input var enableOptimizations = false
|
||||||
@Input var enableAssertions = false
|
@Input var enableAssertions = false
|
||||||
|
|
||||||
|
@Optional @Input var entryPoint: String? = null
|
||||||
|
|
||||||
@Console var measureTime = false
|
@Console var measureTime = false
|
||||||
|
|
||||||
val languageVersion : String?
|
val languageVersion : String?
|
||||||
@@ -87,6 +90,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
addArgIfNotNull("-target", konanTarget.userName)
|
addArgIfNotNull("-target", konanTarget.userName)
|
||||||
addArgIfNotNull("-language-version", languageVersion)
|
addArgIfNotNull("-language-version", languageVersion)
|
||||||
addArgIfNotNull("-api-version", apiVersion)
|
addArgIfNotNull("-api-version", apiVersion)
|
||||||
|
addArgIfNotNull("-entry", entryPoint)
|
||||||
|
|
||||||
addKey("-g", enableDebug)
|
addKey("-g", enableDebug)
|
||||||
addKey("-nostdlib", noStdLib)
|
addKey("-nostdlib", noStdLib)
|
||||||
@@ -146,13 +150,17 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun enableOptimizations(flag: Boolean) {
|
override fun enableOptimizations(flag: Boolean) {
|
||||||
enableOptimizations = true
|
enableOptimizations = flag
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun enableAssertions(flag: Boolean) {
|
override fun enableAssertions(flag: Boolean) {
|
||||||
enableAssertions = flag
|
enableAssertions = flag
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun entryPoint(entryPoint: String) {
|
||||||
|
this.entryPoint = entryPoint
|
||||||
|
}
|
||||||
|
|
||||||
override fun measureTime(flag: Boolean) {
|
override fun measureTime(flag: Boolean) {
|
||||||
measureTime = flag
|
measureTime = flag
|
||||||
}
|
}
|
||||||
|
|||||||
+22
@@ -97,6 +97,28 @@ class IncrementalSpecification extends BaseKonanSpecification {
|
|||||||
"noDefaultLibs" | "true"
|
"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'() {
|
def 'srcFiles change for a compilation task should cause only recompilation'() {
|
||||||
when:
|
when:
|
||||||
def project = KonanProject.createWithInterop(projectDirectory, ArtifactType.LIBRARY) { KonanProject it ->
|
def project = KonanProject.createWithInterop(projectDirectory, ArtifactType.LIBRARY) { KonanProject it ->
|
||||||
|
|||||||
Reference in New Issue
Block a user