JS backend: add option 'output library runtime fiies' for Kotlin Compiler
This commit is contained in:
@@ -18,8 +18,11 @@ package org.jetbrains.jet.compiler
|
||||
|
||||
public class CompilerSettings {
|
||||
public var additionalArguments: String = DEFAULT_ADDITIONAL_ARGUMENTS
|
||||
public var copyJsLibraryFiles: Boolean = true
|
||||
public var outputDirectoryForJsLibraryFiles: String = DEFAULT_OUTPUT_DIRECTORY
|
||||
|
||||
class object {
|
||||
private val DEFAULT_ADDITIONAL_ARGUMENTS = "-version"
|
||||
private val DEFAULT_OUTPUT_DIRECTORY = "lib"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -437,6 +437,8 @@ kotlin.compiler.js.option.output.prefix=Output file &prefix:
|
||||
kotlin.compiler.js.option.output.postfix=Output file p&ostfix:
|
||||
kotlin.compiler.js.option.output.prefix.browse.title=Choose output file prefix
|
||||
kotlin.compiler.js.option.output.postfix.browse.title=Choose output file postfix
|
||||
kotlin.compiler.js.option.output.copy.files=&Copy library runtime files
|
||||
kotlin.compiler.js.option.output.copy.dir=O&utput directory for library &runtime files:
|
||||
|
||||
# Debugger
|
||||
debugger.filter.ignore.internal.classes=Do not step into specific Kotlin classes
|
||||
|
||||
+27
-1
@@ -73,7 +73,7 @@
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
<grid id="98e8a" layout-manager="GridLayoutManager" row-count="3" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<grid id="98e8a" layout-manager="GridLayoutManager" row-count="5" column-count="2" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="1" fill="1" indent="0" use-parent-layout="false"/>
|
||||
@@ -126,6 +126,32 @@
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="b93a8" class="javax.swing.JLabel" binding="labelForOutputDirectory">
|
||||
<constraints>
|
||||
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text resource-bundle="org/jetbrains/jet/plugin/JetBundle" key="kotlin.compiler.js.option.output.copy.dir"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="f1f6b" class="javax.swing.JTextField" binding="outputDirectory">
|
||||
<constraints>
|
||||
<grid row="4" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
|
||||
<preferred-size width="150" height="-1"/>
|
||||
</grid>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="lib"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="bb4ef" class="javax.swing.JCheckBox" binding="copyRuntimeFilesCheckBox">
|
||||
<constraints>
|
||||
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text resource-bundle="org/jetbrains/jet/plugin/JetBundle" key="kotlin.compiler.js.option.output.copy.files"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
</children>
|
||||
|
||||
+20
@@ -36,6 +36,8 @@ import org.jetbrains.jet.compiler.CompilerSettings;
|
||||
import org.jetbrains.jet.plugin.JetBundle;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Configurable.NoScroll{
|
||||
private final CommonCompilerArguments commonCompilerArguments;
|
||||
@@ -53,6 +55,9 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
|
||||
private JLabel labelForOutputPrefixFile;
|
||||
private JLabel labelForOutputPostfixFile;
|
||||
private JCheckBox incrementalCompilationCheckBox;
|
||||
private JLabel labelForOutputDirectory;
|
||||
private JTextField outputDirectory;
|
||||
private JCheckBox copyRuntimeFilesCheckBox;
|
||||
|
||||
public KotlinCompilerConfigurableTab(ConfigurableEP ep) {
|
||||
this.extPoint = ep;
|
||||
@@ -67,6 +72,15 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
|
||||
JetBundle.message("kotlin.compiler.js.option.output.prefix.browse.title"));
|
||||
setupFileChooser(labelForOutputPostfixFile, outputPostfixFile,
|
||||
JetBundle.message("kotlin.compiler.js.option.output.postfix.browse.title"));
|
||||
|
||||
labelForOutputDirectory.setLabelFor(outputDirectory);
|
||||
copyRuntimeFilesCheckBox.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(@NotNull ChangeEvent e) {
|
||||
outputDirectory.setEnabled(copyRuntimeFilesCheckBox.isSelected());
|
||||
labelForOutputDirectory.setEnabled(copyRuntimeFilesCheckBox.isSelected());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -91,6 +105,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
|
||||
public boolean isModified() {
|
||||
return ComparingUtils.isModified(generateNoWarningsCheckBox, commonCompilerArguments.suppressWarnings) ||
|
||||
ComparingUtils.isModified(additionalArgsOptionsField, compilerSettings.getAdditionalArguments()) ||
|
||||
ComparingUtils.isModified(copyRuntimeFilesCheckBox, compilerSettings.getCopyJsLibraryFiles()) ||
|
||||
ComparingUtils.isModified(outputDirectory, compilerSettings.getOutputDirectoryForJsLibraryFiles()) ||
|
||||
|
||||
ComparingUtils.isModified(incrementalCompilationCheckBox, compilerWorkspaceSettings.getIncrementalCompilationEnabled()) ||
|
||||
|
||||
@@ -103,6 +119,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
|
||||
public void apply() throws ConfigurationException {
|
||||
commonCompilerArguments.suppressWarnings = generateNoWarningsCheckBox.isSelected();
|
||||
compilerSettings.setAdditionalArguments(additionalArgsOptionsField.getText());
|
||||
compilerSettings.setCopyJsLibraryFiles(copyRuntimeFilesCheckBox.isSelected());
|
||||
compilerSettings.setOutputDirectoryForJsLibraryFiles(outputDirectory.getText());
|
||||
|
||||
compilerWorkspaceSettings.setIncrementalCompilationEnabled(incrementalCompilationCheckBox.isSelected());
|
||||
|
||||
@@ -115,6 +133,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co
|
||||
public void reset() {
|
||||
generateNoWarningsCheckBox.setSelected(commonCompilerArguments.suppressWarnings);
|
||||
additionalArgsOptionsField.setText(compilerSettings.getAdditionalArguments());
|
||||
copyRuntimeFilesCheckBox.setSelected(compilerSettings.getCopyJsLibraryFiles());
|
||||
outputDirectory.setText(compilerSettings.getOutputDirectoryForJsLibraryFiles());
|
||||
|
||||
incrementalCompilationCheckBox.setSelected(compilerWorkspaceSettings.getIncrementalCompilationEnabled());
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ import org.jetbrains.jet.compiler.CompilerSettings
|
||||
import org.jetbrains.jps.model.JpsProject
|
||||
import org.jetbrains.jet.compiler.runner.OutputItemsCollector
|
||||
import org.jetbrains.jet.compiler.runner.SimpleOutputItem
|
||||
import org.jetbrains.jet.utils.LibraryUtils
|
||||
|
||||
public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
||||
class object {
|
||||
@@ -308,6 +309,12 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR
|
||||
val k2JsArguments = JpsKotlinCompilerSettings.getK2JsCompilerArguments(project)
|
||||
|
||||
runK2JsCompiler(commonArguments, k2JsArguments, compilerSettings, messageCollector, environment, outputItemCollector, sourceFiles, libraryFiles, outputFile)
|
||||
if (compilerSettings.copyJsLibraryFiles) {
|
||||
val outputLibraryRuntimeDirectory = File(outputDir, compilerSettings.outputDirectoryForJsLibraryFiles).getAbsolutePath()
|
||||
val libraryFilesToCopy = arrayListOf<String>()
|
||||
JpsJsModuleUtils.getLibraryFiles(representativeTarget, libraryFilesToCopy)
|
||||
LibraryUtils.copyJsFilesFromLibraries(libraryFilesToCopy, outputLibraryRuntimeDirectory)
|
||||
}
|
||||
return outputItemCollector
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user