@@ -17,46 +17,51 @@
|
||||
package org.jetbrains.kotlin.jps.build
|
||||
|
||||
import com.intellij.util.Consumer
|
||||
import org.jetbrains.jps.builders.java.JavaModuleBuildTargetType
|
||||
import org.jetbrains.jps.incremental.ModuleBuildTarget
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootProperties
|
||||
import org.jetbrains.jps.model.java.JavaSourceRootType
|
||||
import org.jetbrains.jps.model.java.JpsJavaModuleType
|
||||
import org.jetbrains.jps.model.library.JpsOrderRootType
|
||||
import org.jetbrains.jps.model.module.JpsModule
|
||||
import org.jetbrains.jps.util.JpsPathUtil
|
||||
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
|
||||
import java.io.File
|
||||
import java.util.ArrayList
|
||||
import kotlin.platform.platformStatic
|
||||
|
||||
class JpsJsModuleUtils private() {
|
||||
companion object {
|
||||
object JpsJsModuleUtils {
|
||||
|
||||
fun getLibraryFilesAndDependencies(target: ModuleBuildTarget): List<String> {
|
||||
val result = ArrayList<String>()
|
||||
getLibraryFiles(target, result)
|
||||
getDependencyModulesAndSources(target, result)
|
||||
return result
|
||||
}
|
||||
fun getLibraryFilesAndDependencies(target: ModuleBuildTarget): List<String> {
|
||||
val result = ArrayList<String>()
|
||||
getLibraryFiles(target, result)
|
||||
getDependencyModulesAndSources(target, result)
|
||||
return result
|
||||
}
|
||||
|
||||
fun getLibraryFiles(target: ModuleBuildTarget, result: MutableList<String>) {
|
||||
val libraries = JpsUtils.getAllDependencies(target).getLibraries()
|
||||
for (library in libraries) {
|
||||
for (root in library.getRoots(JpsOrderRootType.COMPILED)) {
|
||||
result.add(JpsPathUtil.urlToPath(root.getUrl()))
|
||||
}
|
||||
fun getLibraryFiles(target: ModuleBuildTarget, result: MutableList<String>) {
|
||||
val libraries = JpsUtils.getAllDependencies(target).getLibraries()
|
||||
for (library in libraries) {
|
||||
for (root in library.getRoots(JpsOrderRootType.COMPILED)) {
|
||||
result.add(JpsPathUtil.urlToPath(root.getUrl()))
|
||||
}
|
||||
}
|
||||
|
||||
fun getDependencyModulesAndSources(target: ModuleBuildTarget, result: MutableList<String>) {
|
||||
JpsUtils.getAllDependencies(target).processModules(object : Consumer<JpsModule> {
|
||||
override fun consume(module: JpsModule) {
|
||||
if (module == target.getModule() || module.getModuleType() != JpsJavaModuleType.INSTANCE) return
|
||||
|
||||
result.add("@" + module.getName())
|
||||
|
||||
for (root in module.getSourceRoots<JavaSourceRootProperties>(JavaSourceRootType.SOURCE)) {
|
||||
result.add(JpsPathUtil.urlToPath(root.getUrl()))
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fun getDependencyModulesAndSources(target: ModuleBuildTarget, result: MutableList<String>) {
|
||||
JpsUtils.getAllDependencies(target).processModules(object : Consumer<JpsModule> {
|
||||
override fun consume(module: JpsModule) {
|
||||
if (module == target.getModule() || module.getModuleType() != JpsJavaModuleType.INSTANCE) return
|
||||
|
||||
val moduleBuildTarget = ModuleBuildTarget(module, JavaModuleBuildTargetType.PRODUCTION)
|
||||
val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(moduleBuildTarget)
|
||||
val metaInfoFile = getOutputMetaFile(outputDir, module.getName())
|
||||
result.add(metaInfoFile.getAbsolutePath())
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
platformStatic
|
||||
fun getOutputFile(outputDir: File, moduleName: String) = File(outputDir, moduleName + KotlinJavascriptMetadataUtils.JS_EXT)
|
||||
|
||||
platformStatic
|
||||
fun getOutputMetaFile(outputDir: File, moduleName: String) = File(outputDir, moduleName + KotlinJavascriptMetadataUtils.META_JS_SUFFIX)
|
||||
}
|
||||
|
||||
@@ -399,8 +399,8 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR
|
||||
val outputDir = KotlinBuilderModuleScriptGenerator.getOutputDirSafe(representativeTarget)
|
||||
|
||||
val moduleName = representativeTarget.getModule().getName()
|
||||
val outputFile = File(outputDir, "$moduleName.js")
|
||||
val metaInfoFile = File(outputDir, "$moduleName.meta.js")
|
||||
val outputFile = JpsJsModuleUtils.getOutputFile(outputDir, moduleName)
|
||||
val metaInfoFile = JpsJsModuleUtils.getOutputMetaFile(outputDir, moduleName)
|
||||
val libraryFiles = JpsJsModuleUtils.getLibraryFilesAndDependencies(representativeTarget)
|
||||
val compilerSettings = JpsKotlinCompilerSettings.getCompilerSettings(project)
|
||||
val k2JsArguments = JpsKotlinCompilerSettings.getK2JsCompilerArguments(project)
|
||||
|
||||
Reference in New Issue
Block a user