From d6c1dc94b55ed20d5cf35229bb833eae42abd564 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Wed, 25 Mar 2015 22:44:34 +0300 Subject: [PATCH] JS: use metadata in jps build process Original commit: 06aef3164cf7d7aca68df81774582e0502433e6b --- .../kotlin/jps/build/JpsJsModuleUtils.kt | 65 ++++++++++--------- .../kotlin/jps/build/KotlinBuilder.kt | 4 +- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt index b18835b71d3..b72633fc311 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsJsModuleUtils.kt @@ -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 { - val result = ArrayList() - getLibraryFiles(target, result) - getDependencyModulesAndSources(target, result) - return result - } + fun getLibraryFilesAndDependencies(target: ModuleBuildTarget): List { + val result = ArrayList() + getLibraryFiles(target, result) + getDependencyModulesAndSources(target, result) + return result + } - fun getLibraryFiles(target: ModuleBuildTarget, result: MutableList) { - 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) { + 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) { - JpsUtils.getAllDependencies(target).processModules(object : Consumer { - override fun consume(module: JpsModule) { - if (module == target.getModule() || module.getModuleType() != JpsJavaModuleType.INSTANCE) return - - result.add("@" + module.getName()) - - for (root in module.getSourceRoots(JavaSourceRootType.SOURCE)) { - result.add(JpsPathUtil.urlToPath(root.getUrl())) - } - } - }) - } } + + fun getDependencyModulesAndSources(target: ModuleBuildTarget, result: MutableList) { + JpsUtils.getAllDependencies(target).processModules(object : Consumer { + 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) } diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index a1f4736cdff..77fdd989fc7 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -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)