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 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) }
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -62,6 +62,8 @@ interface KonanCompileSpec: KonanBuildingSpec {
|
||||
fun enableOptimizations(flag: Boolean)
|
||||
fun enableAssertions(flag: Boolean)
|
||||
|
||||
fun entryPoint(entryPoint: String)
|
||||
|
||||
fun measureTime(flag: Boolean)
|
||||
}
|
||||
|
||||
|
||||
+9
-1
@@ -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
|
||||
}
|
||||
|
||||
+22
@@ -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 ->
|
||||
|
||||
Reference in New Issue
Block a user