Compile common code to klib whenever HMPP is enabled

As the HMPP with *.kotlin_metadata was never widespread, we can
immediately move to *.klib compilations whenever a build author
enables HMPP.
This commit is contained in:
Sergey Igushkin
2020-01-29 20:01:15 +03:00
parent 0ef8d23f57
commit 5cc8dfb2a3
5 changed files with 17 additions and 23 deletions
@@ -167,14 +167,14 @@ class HierarchicalMppIT : BaseGradleIT() {
publishedMetadataJar.checkAllEntryNamesArePresent(
"META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME",
"commonMain/META-INF/my-lib-foo_commonMain.kotlin_module",
"commonMain/com/example/foo/FooKt.kotlin_metadata",
"commonMain/manifest",
"commonMain/linkdata/package_com.example/",
"jvmAndJsMain/META-INF/my-lib-foo_jvmAndJsMain.kotlin_module",
"jvmAndJsMain/com/example/foo/FooJvmAndJsKt.kotlin_metadata",
"jvmAndJsMain/manifest",
"jvmAndJsMain/linkdata/package_com.example/",
"linuxAndJsMain/META-INF/my-lib-foo_linuxAndJsMain.kotlin_module",
"linuxAndJsMain/com/example/foo/FooLinuxAndJsKt.kotlin_metadata"
"linuxAndJsMain/manifest",
"linuxAndJsMain/linkdata/package_com.example/"
)
val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata()
@@ -205,14 +205,14 @@ class HierarchicalMppIT : BaseGradleIT() {
publishedMetadataJar.checkAllEntryNamesArePresent(
"META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME",
"commonMain/META-INF/my-lib-bar_commonMain.kotlin_module",
"commonMain/com/example/bar/BarKt.kotlin_metadata",
"commonMain/manifest",
"commonMain/linkdata/package_com.example.bar/",
"jvmAndJsMain/META-INF/my-lib-bar_jvmAndJsMain.kotlin_module",
"jvmAndJsMain/com/example/bar/BarJvmAndJsKt.kotlin_metadata",
"jvmAndJsMain/manifest",
"jvmAndJsMain/linkdata/package_com.example.bar/",
"linuxAndJsMain/META-INF/my-lib-bar_linuxAndJsMain.kotlin_module",
"linuxAndJsMain/com/example/bar/BarLinuxAndJsKt.kotlin_metadata"
"linuxAndJsMain/manifest",
"linuxAndJsMain/linkdata/package_com.example.bar/"
)
val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata()
@@ -376,7 +376,7 @@ class HierarchicalMppIT : BaseGradleIT() {
ModuleDependencyIdentifier(it.first, it.second)
}.toSet()
},
sourceSetBinaryLayout = sourceSetModuleDependencies.mapValues { SourceSetMetadataLayout.METADATA }
sourceSetBinaryLayout = sourceSetModuleDependencies.mapValues { SourceSetMetadataLayout.KLIB }
)
}
@@ -1,2 +1 @@
kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.mpp.enableCommonKlibs=true
kotlin.mpp.enableGranularSourceSetsMetadata=true
@@ -94,9 +94,6 @@ internal class PropertiesProvider private constructor(private val project: Proje
val enableGranularSourceSetsMetadata: Boolean?
get() = booleanProperty("kotlin.mpp.enableGranularSourceSetsMetadata")
val enableCommonKlibs: Boolean?
get() = booleanProperty("kotlin.mpp.enableCommonKlibs")
val enableCompatibilityMetadataVariant: Boolean?
get() = booleanProperty("kotlin.mpp.enableCompatibilityMetadataVariant")
@@ -24,7 +24,7 @@ class KotlinCommonCompilation(
get() = super.compileKotlinTask as KotlinCompileCommon
internal val isKlibCompilation: Boolean
get() = PropertiesProvider(target.project).enableCommonKlibs == true && !forceCompilationToKotlinMetadata
get() = PropertiesProvider(target.project).enableGranularSourceSetsMetadata == true && !forceCompilationToKotlinMetadata
internal var forceCompilationToKotlinMetadata: Boolean = false
}
@@ -41,10 +41,8 @@ sealed class SourceSetMetadataLayout(
fun byName(name: String): SourceSetMetadataLayout? = values.firstOrNull { it.name == name }
fun chooseForProducingProject(project: Project) =
if (PropertiesProvider(project.rootProject).enableCommonKlibs == true)
KLIB
else
METADATA
/** A producing project will now only generate Granular source sets metadata as a KLIB */
KLIB
}
}