[Commonizer] Implement :native:kotlin-klib-commonizer:api with support for library commonization

- Implement new Gradle module ':native:kotlin-klib-commonizer'
- Implement new NativeKlibCommonize task
- Implement CommonizerTarget.identityString
This commit is contained in:
sebastian.sellmair
2021-02-17 09:33:03 +01:00
committed by Space
parent 6d019d9544
commit 4500b6ce74
59 changed files with 1646 additions and 565 deletions
@@ -42,6 +42,7 @@ dependencies {
implementation(kotlinStdlib())
implementation(project(":kotlin-util-klib"))
implementation(project(":native:kotlin-klib-commonizer-api"))
compileOnly(project(":kotlin-reflect-api"))
compileOnly(project(":kotlin-android-extensions"))
compileOnly(project(":kotlin-build-common"))
@@ -0,0 +1,21 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@file:Suppress("FunctionName")
package org.jetbrains.kotlin.compilerRunner
import org.gradle.api.Project
import org.jetbrains.kotlin.descriptors.commonizer.CliCommonizer
/**
* Creates an instance of [CliCommonizer] that is backed by [KotlinNativeCommonizerToolRunner] to adhere to user defined settings
* when executing the commonizer (like jvm arguments, running in separate process, etc)
*/
internal fun GradleCliCommonizer(project: Project): CliCommonizer {
return CliCommonizer(CliCommonizer.Executor { arguments ->
KotlinNativeCommonizerToolRunner(project).run(arguments)
})
}
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
import java.io.File
internal class KotlinNativeKlibCommonizerToolRunner(project: Project) : KotlinToolRunner(project) {
internal class KotlinNativeCommonizerToolRunner(project: Project) : KotlinToolRunner(project) {
override val displayName get() = "Kotlin/Native KLIB commonizer"
override val mainClass: String get() = "org.jetbrains.kotlin.descriptors.commonizer.cli.CommonizerCLI"
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.targets.native.internal
import org.gradle.api.DefaultTask
import org.gradle.api.Project
import org.gradle.api.tasks.*
import org.jetbrains.kotlin.compilerRunner.KotlinNativeKlibCommonizerToolRunner
import org.jetbrains.kotlin.compilerRunner.KotlinNativeCommonizerToolRunner
import org.jetbrains.kotlin.compilerRunner.konanHome
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
import org.jetbrains.kotlin.gradle.targets.native.internal.SuccessMarker.Companion.getSuccessMarker
@@ -24,7 +24,6 @@ import java.nio.file.*
import java.nio.file.attribute.*
import java.time.*
import java.util.*
import javax.inject.Inject
internal const val COMMONIZER_TASK_NAME = "runCommonizer"
@@ -190,7 +189,7 @@ internal fun Project.createTempNativeDistributionCommonizerOutputDirectory(targe
fun callCommonizerCLI(project: Project, commandLineArguments: List<String>) {
if (commandLineArguments.isEmpty()) return
KotlinNativeKlibCommonizerToolRunner(project).run(commandLineArguments)
KotlinNativeCommonizerToolRunner(project).run(commandLineArguments)
}
private fun renameDirectory(source: File, destination: File) {