jps: add common source roots to the final platform modules as a workaround for absence of incremental k2metadata compiler

Original commit: 5455b6c0c0
This commit is contained in:
Sergey Rostov
2018-06-07 12:14:36 +03:00
parent 6b7f0f3c6e
commit fe9eb0310f
2 changed files with 17 additions and 1 deletions
@@ -92,7 +92,7 @@ class KotlinDirtySourceFilesHolder(
val allDirtyFiles: Set<File>
get() = byTarget.flatMapTo(mutableSetOf()) { it.value.dirty }
val allRemovedFilesFiles
val allRemovedFilesFiles: Set<File>
get() = byTarget.flatMapTo(mutableSetOf()) { it.value.removed }
}
@@ -14,6 +14,7 @@ import org.jetbrains.jps.incremental.ModuleBuildTarget
import org.jetbrains.jps.model.java.JavaResourceRootType
import org.jetbrains.jps.model.java.JavaSourceRootProperties
import org.jetbrains.jps.model.java.JavaSourceRootType
import org.jetbrains.jps.model.java.JpsJavaExtensionService
import org.jetbrains.jps.model.module.JpsModule
import org.jetbrains.jps.model.module.JpsModuleSourceRootType
import org.jetbrains.kotlin.config.KotlinResourceRootType
@@ -85,6 +86,21 @@ class KotlinSourceRootProvider : AdditionalRootsProviderService<JavaSourceRootDe
)
}
}
// At the moment, incremental compilation is not supported by K2Metadata compiler.
// To avoid long running compilation of common modules, we do not run K2Metadata at all:
// instead all the common source roots are transitively added to the final platform modules.
JpsJavaExtensionService.dependencies(commonModule)
.also {
if (!target.isTests) it.productionOnly()
}
.processModules {
addCommonModuleSourceRoots(
result,
it,
ModuleBuildTarget(it, target.targetType as JavaModuleBuildTargetType)
)
}
}
}