MPP: Support Android platform in new model import
This commit is contained in:
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType
|
|||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
@@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
|
|||||||
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
||||||
val rootModel = modelsProvider.getModifiableRootModel(module)
|
val rootModel = modelsProvider.getModifiableRootModel(module)
|
||||||
for (sourceSet in compilation.sourceSets) {
|
for (sourceSet in compilation.sourceSets) {
|
||||||
if (sourceSet.isAndroid) {
|
if (sourceSet.platform == KotlinPlatform.ANDROID) {
|
||||||
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
||||||
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
||||||
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
||||||
|
|||||||
+2
-1
@@ -20,6 +20,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType
|
|||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
@@ -41,7 +42,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
|
|||||||
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
||||||
val rootModel = modelsProvider.getModifiableRootModel(module)
|
val rootModel = modelsProvider.getModifiableRootModel(module)
|
||||||
for (sourceSet in compilation.sourceSets) {
|
for (sourceSet in compilation.sourceSets) {
|
||||||
if (sourceSet.isAndroid) {
|
if (sourceSet.platform == KotlinPlatform.ANDROID) {
|
||||||
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
||||||
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
||||||
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType
|
|||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
@@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
|
|||||||
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
||||||
val rootModel = modelsProvider.getModifiableRootModel(module)
|
val rootModel = modelsProvider.getModifiableRootModel(module)
|
||||||
for (sourceSet in compilation.sourceSets) {
|
for (sourceSet in compilation.sourceSets) {
|
||||||
if (sourceSet.isAndroid) {
|
if (sourceSet.platform == KotlinPlatform.ANDROID) {
|
||||||
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
||||||
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
||||||
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType
|
|||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
@@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
|
|||||||
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
||||||
val rootModel = modelsProvider.getModifiableRootModel(module)
|
val rootModel = modelsProvider.getModifiableRootModel(module)
|
||||||
for (sourceSet in compilation.sourceSets) {
|
for (sourceSet in compilation.sourceSets) {
|
||||||
if (sourceSet.isAndroid) {
|
if (sourceSet.platform == KotlinPlatform.ANDROID) {
|
||||||
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
||||||
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
||||||
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
||||||
|
|||||||
+2
-1
@@ -22,6 +22,7 @@ import org.jetbrains.jps.model.java.JavaResourceRootType
|
|||||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||||
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
|
||||||
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
import org.jetbrains.kotlin.gradle.KotlinCompilation
|
||||||
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<ModuleData, Void>() {
|
||||||
@@ -43,7 +44,7 @@ class KotlinAndroidGradleMPPModuleDataService : AbstractProjectDataService<Modul
|
|||||||
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
val compilation = sourceSetInfo.kotlinModule as? KotlinCompilation ?: continue
|
||||||
val rootModel = modelsProvider.getModifiableRootModel(module)
|
val rootModel = modelsProvider.getModifiableRootModel(module)
|
||||||
for (sourceSet in compilation.sourceSets) {
|
for (sourceSet in compilation.sourceSets) {
|
||||||
if (sourceSet.isAndroid) {
|
if (sourceSet.platform == KotlinPlatform.ANDROID) {
|
||||||
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
val sourceType = if (sourceSet.isTestModule) JavaSourceRootType.TEST_SOURCE else JavaSourceRootType.SOURCE
|
||||||
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
val resourceType = if (sourceSet.isTestModule) JavaResourceRootType.TEST_RESOURCE else JavaResourceRootType.RESOURCE
|
||||||
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
sourceSet.sourceDirs.forEach { addSourceRoot(it, sourceType, rootModel) }
|
||||||
|
|||||||
+2
-1
@@ -19,6 +19,7 @@ import com.intellij.openapi.util.Key
|
|||||||
import org.gradle.tooling.model.idea.IdeaModule
|
import org.gradle.tooling.model.idea.IdeaModule
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel
|
||||||
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder
|
||||||
|
import org.jetbrains.kotlin.gradle.KotlinPlatform
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
import org.jetbrains.kotlin.idea.configuration.KotlinMPPGradleProjectResolver
|
||||||
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetInfo
|
import org.jetbrains.kotlin.idea.configuration.KotlinSourceSetInfo
|
||||||
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
import org.jetbrains.kotlin.idea.configuration.kotlinSourceSet
|
||||||
@@ -88,7 +89,7 @@ class KotlinAndroidMPPGradleProjectResolver : AbstractProjectResolverExtension()
|
|||||||
.targets
|
.targets
|
||||||
.asSequence()
|
.asSequence()
|
||||||
.flatMap { it.compilations.asSequence() }
|
.flatMap { it.compilations.asSequence() }
|
||||||
.filter { it.isAndroid }
|
.filter { it.platform == KotlinPlatform.ANDROID }
|
||||||
.map { KotlinMPPGradleProjectResolver.createSourceSetInfo(it, gradleModule, resolverCtx) }
|
.map { KotlinMPPGradleProjectResolver.createSourceSetInfo(it, gradleModule, resolverCtx) }
|
||||||
.toList()
|
.toList()
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -166,7 +166,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
|
|
||||||
val sourceSetToCompilationData = LinkedHashMap<KotlinSourceSet, MutableSet<GradleSourceSetData>>()
|
val sourceSetToCompilationData = LinkedHashMap<KotlinSourceSet, MutableSet<GradleSourceSetData>>()
|
||||||
for (target in mppModel.targets) {
|
for (target in mppModel.targets) {
|
||||||
if (target.isAndroid) continue
|
if (target.platform == KotlinPlatform.ANDROID) continue
|
||||||
val targetData = KotlinTargetData(target.name).also {
|
val targetData = KotlinTargetData(target.name).also {
|
||||||
it.archiveFile = target.jar?.archiveFile
|
it.archiveFile = target.jar?.archiveFile
|
||||||
}
|
}
|
||||||
@@ -210,7 +210,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
|
|
||||||
val kotlinSourceSet = createSourceSetInfo(compilation, gradleModule, resolverCtx)
|
val kotlinSourceSet = createSourceSetInfo(compilation, gradleModule, resolverCtx)
|
||||||
|
|
||||||
if (compilation.platform == KotlinPlatform.JVM) {
|
if (compilation.platform == KotlinPlatform.JVM || compilation.platform == KotlinPlatform.ANDROID) {
|
||||||
compilationData.targetCompatibility = (kotlinSourceSet.compilerArguments as? K2JVMCompilerArguments)?.jvmTarget
|
compilationData.targetCompatibility = (kotlinSourceSet.compilerArguments as? K2JVMCompilerArguments)?.jvmTarget
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -232,7 +232,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (sourceSet in mppModel.sourceSets.values) {
|
for (sourceSet in mppModel.sourceSets.values) {
|
||||||
if (sourceSet.isAndroid) continue
|
if (sourceSet.platform == KotlinPlatform.ANDROID) continue
|
||||||
val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx)
|
val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx)
|
||||||
val existingSourceSetDataNode = sourceSetMap[moduleId]?.first
|
val existingSourceSetDataNode = sourceSetMap[moduleId]?.first
|
||||||
if (existingSourceSetDataNode?.kotlinSourceSet != null) continue
|
if (existingSourceSetDataNode?.kotlinSourceSet != null) continue
|
||||||
@@ -455,7 +455,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (sourceSet in mppModel.sourceSets.values) {
|
for (sourceSet in mppModel.sourceSets.values) {
|
||||||
if (sourceSet.isAndroid) continue
|
if (sourceSet.platform == KotlinPlatform.ANDROID) continue
|
||||||
val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx)
|
val moduleId = getKotlinModuleId(gradleModule, sourceSet, resolverCtx)
|
||||||
val moduleDataNode = sourceSetsMap[moduleId] ?: continue
|
val moduleDataNode = sourceSetsMap[moduleId] ?: continue
|
||||||
processor(moduleDataNode, sourceSet)
|
processor(moduleDataNode, sourceSet)
|
||||||
@@ -476,7 +476,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (target in mppModel.targets) {
|
for (target in mppModel.targets) {
|
||||||
if (target.isAndroid) continue
|
if (target.platform == KotlinPlatform.ANDROID) continue
|
||||||
for (compilation in target.compilations) {
|
for (compilation in target.compilations) {
|
||||||
val moduleId = getKotlinModuleId(gradleModule, compilation, resolverCtx)
|
val moduleId = getKotlinModuleId(gradleModule, compilation, resolverCtx)
|
||||||
val moduleDataNode = sourceSetsMap[moduleId] ?: continue
|
val moduleDataNode = sourceSetsMap[moduleId] ?: continue
|
||||||
@@ -610,7 +610,7 @@ open class KotlinMPPGradleProjectResolver : AbstractProjectResolverExtension() {
|
|||||||
private fun createCompilerArguments(args: List<String>, platform: KotlinPlatform): CommonCompilerArguments {
|
private fun createCompilerArguments(args: List<String>, platform: KotlinPlatform): CommonCompilerArguments {
|
||||||
return when (platform) {
|
return when (platform) {
|
||||||
KotlinPlatform.COMMON -> K2MetadataCompilerArguments()
|
KotlinPlatform.COMMON -> K2MetadataCompilerArguments()
|
||||||
KotlinPlatform.JVM -> K2JVMCompilerArguments()
|
KotlinPlatform.JVM, KotlinPlatform.ANDROID -> K2JVMCompilerArguments()
|
||||||
KotlinPlatform.JS -> K2JSCompilerArguments()
|
KotlinPlatform.JS -> K2JSCompilerArguments()
|
||||||
}.also {
|
}.also {
|
||||||
parseCommandLineArguments(args, it)
|
parseCommandLineArguments(args, it)
|
||||||
|
|||||||
+2
-2
@@ -53,7 +53,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
|
|||||||
val platform = kotlinSourceSet.platform
|
val platform = kotlinSourceSet.platform
|
||||||
val rootModel = modelsProvider.getModifiableRootModel(ideModule)
|
val rootModel = modelsProvider.getModifiableRootModel(ideModule)
|
||||||
|
|
||||||
if (platform != KotlinPlatform.JVM) {
|
if (platform != KotlinPlatform.JVM && platform != KotlinPlatform.ANDROID) {
|
||||||
migrateNonJvmSourceFolders(rootModel)
|
migrateNonJvmSourceFolders(rootModel)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ class KotlinSourceSetDataService : AbstractProjectDataService<GradleSourceSetDat
|
|||||||
?.data
|
?.data
|
||||||
?.let { findKotlinPluginVersion(it) } ?: return
|
?.let { findKotlinPluginVersion(it) } ?: return
|
||||||
val platformKind = when (kotlinSourceSet.platform) {
|
val platformKind = when (kotlinSourceSet.platform) {
|
||||||
KotlinPlatform.JVM -> TargetPlatformKind.Jvm[JvmTarget.fromString(
|
KotlinPlatform.JVM, KotlinPlatform.ANDROID -> TargetPlatformKind.Jvm[JvmTarget.fromString(
|
||||||
sourceSetData.targetCompatibility ?: ""
|
sourceSetData.targetCompatibility ?: ""
|
||||||
) ?: JvmTarget.DEFAULT]
|
) ?: JvmTarget.DEFAULT]
|
||||||
KotlinPlatform.JS -> TargetPlatformKind.JavaScript
|
KotlinPlatform.JS -> TargetPlatformKind.JavaScript
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import java.io.Serializable
|
|||||||
typealias KotlinDependency = ExternalDependency
|
typealias KotlinDependency = ExternalDependency
|
||||||
|
|
||||||
interface KotlinModule : Serializable {
|
interface KotlinModule : Serializable {
|
||||||
val isAndroid: Boolean
|
|
||||||
val name: String
|
val name: String
|
||||||
val platform: KotlinPlatform
|
val platform: KotlinPlatform
|
||||||
val dependencies: Set<KotlinDependency>
|
val dependencies: Set<KotlinDependency>
|
||||||
@@ -52,7 +51,8 @@ interface KotlinCompilation : KotlinModule {
|
|||||||
enum class KotlinPlatform(val id: String) {
|
enum class KotlinPlatform(val id: String) {
|
||||||
COMMON("common"),
|
COMMON("common"),
|
||||||
JVM("jvm"),
|
JVM("jvm"),
|
||||||
JS("js");
|
JS("js"),
|
||||||
|
ANDROID("androidJvm");
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun byId(id: String) = values().firstOrNull { it.id == id }
|
fun byId(id: String) = values().firstOrNull { it.id == id }
|
||||||
@@ -64,7 +64,6 @@ interface KotlinTargetJar : Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface KotlinTarget : Serializable {
|
interface KotlinTarget : Serializable {
|
||||||
val isAndroid: Boolean
|
|
||||||
val name: String
|
val name: String
|
||||||
val disambiguationClassifier: String?
|
val disambiguationClassifier: String?
|
||||||
val platform: KotlinPlatform
|
val platform: KotlinPlatform
|
||||||
|
|||||||
@@ -144,13 +144,12 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null
|
val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null
|
||||||
val platform = KotlinPlatform.byId(platformId) ?: return null
|
val platform = KotlinPlatform.byId(platformId) ?: return null
|
||||||
val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String
|
val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String
|
||||||
val isAndroid = targetClass.name == KOTLIN_ANDROID_TARGET_CLASS_NAME
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val gradleCompilations =
|
val gradleCompilations =
|
||||||
(getCompilations.invoke(gradleTarget) as? NamedDomainObjectContainer<Named>)?.asMap?.values ?: emptyList<Named>()
|
(getCompilations.invoke(gradleTarget) as? NamedDomainObjectContainer<Named>)?.asMap?.values ?: emptyList<Named>()
|
||||||
val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, isAndroid, project) }
|
val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, project) }
|
||||||
val jar = buildTargetJar(gradleTarget, project)
|
val jar = buildTargetJar(gradleTarget, project)
|
||||||
val target = KotlinTargetImpl(isAndroid, gradleTarget.name, disambiguationClassifier, platform, compilations, jar)
|
val target = KotlinTargetImpl(gradleTarget.name, disambiguationClassifier, platform, compilations, jar)
|
||||||
compilations.forEach { it.target = target }
|
compilations.forEach { it.target = target }
|
||||||
return target
|
return target
|
||||||
}
|
}
|
||||||
@@ -170,7 +169,6 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
gradleCompilation: Named,
|
gradleCompilation: Named,
|
||||||
sourceSetMap: Map<String, KotlinSourceSet>,
|
sourceSetMap: Map<String, KotlinSourceSet>,
|
||||||
dependencyResolver: DependencyResolver,
|
dependencyResolver: DependencyResolver,
|
||||||
isAndroid: Boolean,
|
|
||||||
project: Project
|
project: Project
|
||||||
): KotlinCompilationImpl? {
|
): KotlinCompilationImpl? {
|
||||||
val compilationClass = gradleCompilation.javaClass
|
val compilationClass = gradleCompilation.javaClass
|
||||||
@@ -186,7 +184,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
val arguments = buildCompilationArguments(compileKotlinTask) ?: return null
|
val arguments = buildCompilationArguments(compileKotlinTask) ?: return null
|
||||||
val dependencyClasspath = buildDependencyClasspath(compileKotlinTask)
|
val dependencyClasspath = buildDependencyClasspath(compileKotlinTask)
|
||||||
val dependencies = buildCompilationDependencies(gradleCompilation, dependencyResolver, project)
|
val dependencies = buildCompilationDependencies(gradleCompilation, dependencyResolver, project)
|
||||||
return KotlinCompilationImpl(isAndroid, gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath)
|
return KotlinCompilationImpl(gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildCompilationDependencies(
|
private fun buildCompilationDependencies(
|
||||||
@@ -280,15 +278,10 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
if (compilations != null) {
|
if (compilations != null) {
|
||||||
sourceSet.platform = compilations.map { it.platform }.distinct().singleOrNull() ?: KotlinPlatform.COMMON
|
sourceSet.platform = compilations.map { it.platform }.distinct().singleOrNull() ?: KotlinPlatform.COMMON
|
||||||
sourceSet.isTestModule = compilations.all { it.isTestModule }
|
sourceSet.isTestModule = compilations.all { it.isTestModule }
|
||||||
sourceSet.isAndroid = compilations.all { it.isAndroid }
|
|
||||||
} else {
|
} else {
|
||||||
// TODO: change me after design about it
|
// TODO: change me after design about it
|
||||||
sourceSet.isTestModule = "Test" in sourceSet.name
|
sourceSet.isTestModule = "Test" in sourceSet.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val KOTLIN_ANDROID_TARGET_CLASS_NAME = "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -144,13 +144,12 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null
|
val platformId = (getPlatformType.invoke(gradleTarget) as? Named)?.name ?: return null
|
||||||
val platform = KotlinPlatform.byId(platformId) ?: return null
|
val platform = KotlinPlatform.byId(platformId) ?: return null
|
||||||
val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String
|
val disambiguationClassifier = getDisambiguationClassifier(gradleTarget) as? String
|
||||||
val isAndroid = targetClass.name == KOTLIN_ANDROID_TARGET_CLASS_NAME
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
val gradleCompilations =
|
val gradleCompilations =
|
||||||
(getCompilations.invoke(gradleTarget) as? NamedDomainObjectContainer<Named>)?.asMap?.values ?: emptyList<Named>()
|
(getCompilations.invoke(gradleTarget) as? NamedDomainObjectContainer<Named>)?.asMap?.values ?: emptyList<Named>()
|
||||||
val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, isAndroid, project) }
|
val compilations = gradleCompilations.mapNotNull { buildCompilation(it, sourceSetMap, dependencyResolver, project) }
|
||||||
val jar = buildTargetJar(gradleTarget, project)
|
val jar = buildTargetJar(gradleTarget, project)
|
||||||
val target = KotlinTargetImpl(isAndroid, gradleTarget.name, disambiguationClassifier, platform, compilations, jar)
|
val target = KotlinTargetImpl(gradleTarget.name, disambiguationClassifier, platform, compilations, jar)
|
||||||
compilations.forEach { it.target = target }
|
compilations.forEach { it.target = target }
|
||||||
return target
|
return target
|
||||||
}
|
}
|
||||||
@@ -170,7 +169,6 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
gradleCompilation: Named,
|
gradleCompilation: Named,
|
||||||
sourceSetMap: Map<String, KotlinSourceSet>,
|
sourceSetMap: Map<String, KotlinSourceSet>,
|
||||||
dependencyResolver: DependencyResolver,
|
dependencyResolver: DependencyResolver,
|
||||||
isAndroid: Boolean,
|
|
||||||
project: Project
|
project: Project
|
||||||
): KotlinCompilationImpl? {
|
): KotlinCompilationImpl? {
|
||||||
val compilationClass = gradleCompilation.javaClass
|
val compilationClass = gradleCompilation.javaClass
|
||||||
@@ -186,7 +184,7 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
val arguments = buildCompilationArguments(compileKotlinTask) ?: return null
|
val arguments = buildCompilationArguments(compileKotlinTask) ?: return null
|
||||||
val dependencyClasspath = buildDependencyClasspath(compileKotlinTask)
|
val dependencyClasspath = buildDependencyClasspath(compileKotlinTask)
|
||||||
val dependencies = buildCompilationDependencies(gradleCompilation, dependencyResolver, project)
|
val dependencies = buildCompilationDependencies(gradleCompilation, dependencyResolver, project)
|
||||||
return KotlinCompilationImpl(isAndroid, gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath)
|
return KotlinCompilationImpl(gradleCompilation.name, kotlinSourceSets, dependencies, output, arguments, dependencyClasspath)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildCompilationDependencies(
|
private fun buildCompilationDependencies(
|
||||||
@@ -280,15 +278,10 @@ class KotlinMPPGradleModelBuilder : ModelBuilderService {
|
|||||||
if (compilations != null) {
|
if (compilations != null) {
|
||||||
sourceSet.platform = compilations.map { it.platform }.distinct().singleOrNull() ?: KotlinPlatform.COMMON
|
sourceSet.platform = compilations.map { it.platform }.distinct().singleOrNull() ?: KotlinPlatform.COMMON
|
||||||
sourceSet.isTestModule = compilations.all { it.isTestModule }
|
sourceSet.isTestModule = compilations.all { it.isTestModule }
|
||||||
sourceSet.isAndroid = compilations.all { it.isAndroid }
|
|
||||||
} else {
|
} else {
|
||||||
// TODO: change me after design about it
|
// TODO: change me after design about it
|
||||||
sourceSet.isTestModule = "Test" in sourceSet.name
|
sourceSet.isTestModule = "Test" in sourceSet.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
|
||||||
private val KOTLIN_ANDROID_TARGET_CLASS_NAME = "org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -14,9 +14,6 @@ class KotlinSourceSetImpl(
|
|||||||
override val dependencies: Set<KotlinDependency>,
|
override val dependencies: Set<KotlinDependency>,
|
||||||
override val dependsOnSourceSets: Set<String>
|
override val dependsOnSourceSets: Set<String>
|
||||||
) : KotlinSourceSet {
|
) : KotlinSourceSet {
|
||||||
override var isAndroid: Boolean = false
|
|
||||||
internal set
|
|
||||||
|
|
||||||
override var platform: KotlinPlatform = KotlinPlatform.COMMON
|
override var platform: KotlinPlatform = KotlinPlatform.COMMON
|
||||||
internal set
|
internal set
|
||||||
|
|
||||||
@@ -38,7 +35,6 @@ class KotlinCompilationArgumentsImpl(
|
|||||||
) : KotlinCompilationArguments
|
) : KotlinCompilationArguments
|
||||||
|
|
||||||
class KotlinCompilationImpl(
|
class KotlinCompilationImpl(
|
||||||
override val isAndroid: Boolean,
|
|
||||||
override val name: String,
|
override val name: String,
|
||||||
override val sourceSets: Collection<KotlinSourceSet>,
|
override val sourceSets: Collection<KotlinSourceSet>,
|
||||||
override val dependencies: Set<KotlinDependency>,
|
override val dependencies: Set<KotlinDependency>,
|
||||||
@@ -63,7 +59,6 @@ class KotlinTargetJarImpl(
|
|||||||
) : KotlinTargetJar
|
) : KotlinTargetJar
|
||||||
|
|
||||||
class KotlinTargetImpl(
|
class KotlinTargetImpl(
|
||||||
override val isAndroid: Boolean,
|
|
||||||
override val name: String,
|
override val name: String,
|
||||||
override val disambiguationClassifier: String?,
|
override val disambiguationClassifier: String?,
|
||||||
override val platform: KotlinPlatform,
|
override val platform: KotlinPlatform,
|
||||||
|
|||||||
Reference in New Issue
Block a user