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( publishedMetadataJar.checkAllEntryNamesArePresent(
"META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME", "META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME",
"commonMain/META-INF/my-lib-foo_commonMain.kotlin_module", "commonMain/manifest",
"commonMain/com/example/foo/FooKt.kotlin_metadata", "commonMain/linkdata/package_com.example/",
"jvmAndJsMain/META-INF/my-lib-foo_jvmAndJsMain.kotlin_module", "jvmAndJsMain/manifest",
"jvmAndJsMain/com/example/foo/FooJvmAndJsKt.kotlin_metadata", "jvmAndJsMain/linkdata/package_com.example/",
"linuxAndJsMain/META-INF/my-lib-foo_linuxAndJsMain.kotlin_module", "linuxAndJsMain/manifest",
"linuxAndJsMain/com/example/foo/FooLinuxAndJsKt.kotlin_metadata" "linuxAndJsMain/linkdata/package_com.example/"
) )
val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata() val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata()
@@ -205,14 +205,14 @@ class HierarchicalMppIT : BaseGradleIT() {
publishedMetadataJar.checkAllEntryNamesArePresent( publishedMetadataJar.checkAllEntryNamesArePresent(
"META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME", "META-INF/$MULTIPLATFORM_PROJECT_METADATA_FILE_NAME",
"commonMain/META-INF/my-lib-bar_commonMain.kotlin_module", "commonMain/manifest",
"commonMain/com/example/bar/BarKt.kotlin_metadata", "commonMain/linkdata/package_com.example.bar/",
"jvmAndJsMain/META-INF/my-lib-bar_jvmAndJsMain.kotlin_module", "jvmAndJsMain/manifest",
"jvmAndJsMain/com/example/bar/BarJvmAndJsKt.kotlin_metadata", "jvmAndJsMain/linkdata/package_com.example.bar/",
"linuxAndJsMain/META-INF/my-lib-bar_linuxAndJsMain.kotlin_module", "linuxAndJsMain/manifest",
"linuxAndJsMain/com/example/bar/BarLinuxAndJsKt.kotlin_metadata" "linuxAndJsMain/linkdata/package_com.example.bar/"
) )
val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata() val parsedProjectStructureMetadata: KotlinProjectStructureMetadata = publishedMetadataJar.getProjectStructureMetadata()
@@ -376,7 +376,7 @@ class HierarchicalMppIT : BaseGradleIT() {
ModuleDependencyIdentifier(it.first, it.second) ModuleDependencyIdentifier(it.first, it.second)
}.toSet() }.toSet()
}, },
sourceSetBinaryLayout = sourceSetModuleDependencies.mapValues { SourceSetMetadataLayout.METADATA } sourceSetBinaryLayout = sourceSetModuleDependencies.mapValues { SourceSetMetadataLayout.KLIB }
) )
} }
@@ -1,2 +1 @@
kotlin.mpp.enableGranularSourceSetsMetadata=true kotlin.mpp.enableGranularSourceSetsMetadata=true
kotlin.mpp.enableCommonKlibs=true
@@ -94,9 +94,6 @@ internal class PropertiesProvider private constructor(private val project: Proje
val enableGranularSourceSetsMetadata: Boolean? val enableGranularSourceSetsMetadata: Boolean?
get() = booleanProperty("kotlin.mpp.enableGranularSourceSetsMetadata") get() = booleanProperty("kotlin.mpp.enableGranularSourceSetsMetadata")
val enableCommonKlibs: Boolean?
get() = booleanProperty("kotlin.mpp.enableCommonKlibs")
val enableCompatibilityMetadataVariant: Boolean? val enableCompatibilityMetadataVariant: Boolean?
get() = booleanProperty("kotlin.mpp.enableCompatibilityMetadataVariant") get() = booleanProperty("kotlin.mpp.enableCompatibilityMetadataVariant")
@@ -24,7 +24,7 @@ class KotlinCommonCompilation(
get() = super.compileKotlinTask as KotlinCompileCommon get() = super.compileKotlinTask as KotlinCompileCommon
internal val isKlibCompilation: Boolean internal val isKlibCompilation: Boolean
get() = PropertiesProvider(target.project).enableCommonKlibs == true && !forceCompilationToKotlinMetadata get() = PropertiesProvider(target.project).enableGranularSourceSetsMetadata == true && !forceCompilationToKotlinMetadata
internal var forceCompilationToKotlinMetadata: Boolean = false internal var forceCompilationToKotlinMetadata: Boolean = false
} }
@@ -41,10 +41,8 @@ sealed class SourceSetMetadataLayout(
fun byName(name: String): SourceSetMetadataLayout? = values.firstOrNull { it.name == name } fun byName(name: String): SourceSetMetadataLayout? = values.firstOrNull { it.name == name }
fun chooseForProducingProject(project: Project) = fun chooseForProducingProject(project: Project) =
if (PropertiesProvider(project.rootProject).enableCommonKlibs == true) /** A producing project will now only generate Granular source sets metadata as a KLIB */
KLIB KLIB
else
METADATA
} }
} }