[K/N][build] Add noPack option to Konan plugin

Make plugin aware of -nopack compiler option to correctly set outputs
without .klib suffix.
This commit is contained in:
Pavel Punegov
2021-11-16 14:06:54 +03:00
committed by Space
parent 060074a9d6
commit f7e2572ccc
4 changed files with 23 additions and 2 deletions
@@ -66,6 +66,7 @@ abstract class KonanCompileConfig<T: KonanCompileTask>(name: String,
override fun enableDebug(flag: Boolean) = tasks().forEach { it.configure { enableDebug(flag) } }
override fun noStdLib(flag: Boolean) = tasks().forEach { it.configure { noStdLib(flag) } }
override fun noMain(flag: Boolean) = tasks().forEach { it.configure { noMain(flag) } }
override fun noPack(flag: Boolean) = tasks().forEach { it.configure { noPack(flag) } }
override fun enableOptimizations(flag: Boolean) = tasks().forEach { it.configure { enableOptimizations(flag) } }
override fun enableAssertions(flag: Boolean) = tasks().forEach { it.configure { enableAssertions(flag) } }
@@ -74,6 +74,7 @@ interface KonanCompileSpec: KonanBuildingSpec {
fun enableDebug(flag: Boolean)
fun noStdLib(flag: Boolean)
fun noMain(flag: Boolean)
fun noPack(flag: Boolean)
fun enableOptimizations(flag: Boolean)
fun enableAssertions(flag: Boolean)
@@ -82,6 +82,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
@Input var noStdLib = false
@Input var noMain = false
@Input var noPack: Boolean = false
@Input var enableOptimizations = project.environmentVariables.enableOptimizations
@Input var enableAssertions = false
@@ -187,7 +188,7 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
}
/** Args passed to the compiler at both stages of the two-stage compilation and during the singe-stage compilation. */
protected fun buildCommonArgs() = mutableListOf<String>().apply {
protected open fun buildCommonArgs() = mutableListOf<String>().apply {
addArgs("-repo", libraries.repos.map { it.canonicalPath })
if (platformConfiguration.files.isNotEmpty()) {
@@ -312,6 +313,10 @@ abstract class KonanCompileTask: KonanBuildingTask(), KonanCompileSpec {
noMain = flag
}
override fun noPack(flag: Boolean) {
noPack = flag
}
override fun enableOptimizations(flag: Boolean) {
enableOptimizations = flag
}
@@ -386,6 +391,13 @@ open class KonanCompileFrameworkTask: KonanCompileNativeBinary() {
}
open class KonanCompileLibraryTask: KonanCompileTask() {
override val artifactSuffix: String
@Internal get() = if (!noPack) produce.suffix(konanTarget) else ""
override fun buildCommonArgs() = super.buildCommonArgs().apply {
addKey("-nopack", noPack)
}
override val produce: CompilerOutputKind get() = CompilerOutputKind.LIBRARY
override val enableTwoStageCompilation: Boolean = false
}