[Commonizer] Introduce commonizer settings
Add settings for a more fine-grained control over commonizer features that will be added in the future Add setting and KGP flag for optimistic number commonization KT-51011
This commit is contained in:
+5
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLI
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_GRANULAR_SOURCE_SETS_METADATA
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_HIERARCHICAL_STRUCTURE_BY_DEFAULT
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_HIERARCHICAL_STRUCTURE_SUPPORT
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider.PropertyNames.KOTLIN_NATIVE_DEPENDENCY_PROPAGATION
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinMultiplatformPlugin
|
||||
import org.jetbrains.kotlin.gradle.plugin.statistics.KotlinBuildStatsService
|
||||
@@ -213,6 +214,9 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
val mppStabilityNoWarn: Boolean?
|
||||
get() = booleanProperty(KotlinMultiplatformPlugin.STABILITY_NOWARN_FLAG)
|
||||
|
||||
val mppEnableOptimisticNumberCommonization: Boolean
|
||||
get() = booleanProperty(KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION) ?: false
|
||||
|
||||
val wasmStabilityNoWarn: Boolean
|
||||
get() = booleanProperty("kotlin.wasm.stability.nowarn") ?: false
|
||||
|
||||
@@ -468,6 +472,7 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
const val KOTLIN_MPP_HIERARCHICAL_STRUCTURE_BY_DEFAULT = "kotlin.internal.mpp.hierarchicalStructureByDefault"
|
||||
const val KOTLIN_MPP_HIERARCHICAL_STRUCTURE_SUPPORT = "kotlin.mpp.hierarchicalStructureSupport"
|
||||
const val KOTLIN_NATIVE_DEPENDENCY_PROPAGATION = "kotlin.native.enableDependencyPropagation"
|
||||
const val KOTLIN_MPP_ENABLE_OPTIMISTIC_NUMBER_COMMONIZATION = "kotlin.mpp.enableOptimisticNumberCommonization"
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
+4
-1
@@ -6,13 +6,16 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||
|
||||
import org.gradle.api.DefaultTask
|
||||
import org.gradle.api.Project
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.tasks.OutputDirectory
|
||||
import org.jetbrains.kotlin.commonizer.CommonizerOutputFileLayout
|
||||
import org.jetbrains.kotlin.commonizer.CommonizerOutputFileLayout.base64Hash
|
||||
import org.jetbrains.kotlin.commonizer.CommonizerOutputFileLayout.ensureMaxFileNameLength
|
||||
import org.jetbrains.kotlin.commonizer.AdditionalCommonizerSetting
|
||||
import org.jetbrains.kotlin.commonizer.cli.OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_OPTION_ALIAS
|
||||
import org.jetbrains.kotlin.commonizer.identityString
|
||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||
import org.jetbrains.kotlin.commonizer.setTo
|
||||
import org.jetbrains.kotlin.gradle.utils.outputFilesProvider
|
||||
import java.io.File
|
||||
|
||||
|
||||
+2
-1
@@ -84,7 +84,8 @@ internal open class CInteropCommonizerTask : AbstractCInteropCommonizerTask() {
|
||||
inputLibraries = cinteropsForTarget.map { it.libraryFile.get() }.filter { it.exists() }.toSet(),
|
||||
dependencyLibraries = getNativeDistributionDependencies(group),
|
||||
outputDirectory = outputDirectory(group),
|
||||
logLevel = project.commonizerLogLevel
|
||||
logLevel = project.commonizerLogLevel,
|
||||
additionalSettings = project.additionalCommonizerSettings,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+8
@@ -6,7 +6,10 @@
|
||||
package org.jetbrains.kotlin.gradle.targets.native.internal
|
||||
|
||||
import org.gradle.api.Project
|
||||
import org.jetbrains.kotlin.commonizer.AdditionalCommonizerSetting
|
||||
import org.jetbrains.kotlin.commonizer.CommonizerLogLevel
|
||||
import org.jetbrains.kotlin.commonizer.cli.OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_OPTION_ALIAS
|
||||
import org.jetbrains.kotlin.commonizer.setTo
|
||||
import org.jetbrains.kotlin.gradle.plugin.PropertiesProvider
|
||||
|
||||
internal val Project.commonizerLogLevel: CommonizerLogLevel
|
||||
@@ -18,3 +21,8 @@ internal val Project.commonizerLogLevel: CommonizerLogLevel
|
||||
|
||||
return if (logger.isInfoEnabled) CommonizerLogLevel.Info else CommonizerLogLevel.Quiet
|
||||
}
|
||||
|
||||
internal val Project.additionalCommonizerSettings: List<AdditionalCommonizerSetting>
|
||||
get() = listOf(
|
||||
OPTIMISTIC_NUMBER_COMMONIZATION_ENABLED_OPTION_ALIAS setTo isOptimisticNumberCommonizationEnabled
|
||||
)
|
||||
+3
@@ -20,6 +20,9 @@ internal val Project.isCInteropCommonizationEnabled: Boolean get() = PropertiesP
|
||||
internal val Project.isIntransitiveMetadataConfigurationEnabled: Boolean
|
||||
get() = PropertiesProvider(this).enableIntransitiveMetadataConfiguration
|
||||
|
||||
internal val Project.isOptimisticNumberCommonizationEnabled: Boolean
|
||||
get() = PropertiesProvider(this).mppEnableOptimisticNumberCommonization
|
||||
|
||||
internal val Project.commonizeTask: TaskProvider<Task>
|
||||
get() = locateOrRegisterTask(
|
||||
"commonize",
|
||||
|
||||
+3
-3
@@ -22,12 +22,12 @@ internal class NativeDistributionCommonizationCache(
|
||||
private val commonizer: NativeDistributionCommonizer
|
||||
) : NativeDistributionCommonizer {
|
||||
|
||||
|
||||
override fun commonizeNativeDistribution(
|
||||
konanHome: File,
|
||||
outputDirectory: File,
|
||||
outputTargets: Set<SharedCommonizerTarget>,
|
||||
logLevel: CommonizerLogLevel
|
||||
logLevel: CommonizerLogLevel,
|
||||
additionalSettings: List<AdditionalCommonizerSetting>,
|
||||
) {
|
||||
if (!project.isNativeDistributionCommonizationCacheEnabled) {
|
||||
logInfo("Cache disabled")
|
||||
@@ -52,7 +52,7 @@ internal class NativeDistributionCommonizationCache(
|
||||
.forEach { commonizedDirectory -> if (commonizedDirectory.exists()) commonizedDirectory.deleteRecursively() }
|
||||
|
||||
commonizer.commonizeNativeDistribution(
|
||||
konanHome, outputDirectory, enqueuedOutputTargets, logLevel
|
||||
konanHome, outputDirectory, enqueuedOutputTargets, logLevel, additionalSettings
|
||||
)
|
||||
|
||||
enqueuedOutputTargets
|
||||
|
||||
+2
-1
@@ -54,7 +54,8 @@ internal open class NativeDistributionCommonizerTask : DefaultTask() {
|
||||
konanHome = konanHome,
|
||||
outputDirectory = getRootOutputDirectory(),
|
||||
outputTargets = project.collectAllSharedCommonizerTargetsFromBuild(),
|
||||
logLevel = project.commonizerLogLevel
|
||||
logLevel = project.commonizerLogLevel,
|
||||
additionalSettings = project.additionalCommonizerSettings,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user