Reformatted Ant task code according to coding conventions.
This commit is contained in:
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.buildtools.ant;
|
package org.jetbrains.jet.buildtools.ant;
|
||||||
|
|
||||||
import static org.jetbrains.jet.buildtools.core.Util.*;
|
|
||||||
import org.apache.tools.ant.Task;
|
import org.apache.tools.ant.Task;
|
||||||
import org.apache.tools.ant.types.Path;
|
import org.apache.tools.ant.types.Path;
|
||||||
import org.apache.tools.ant.types.Reference;
|
import org.apache.tools.ant.types.Reference;
|
||||||
@@ -25,10 +24,12 @@ import org.jetbrains.jet.cli.jvm.compiler.CompileEnvironmentException;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
|
||||||
|
import static org.jetbrains.jet.buildtools.core.Util.getPath;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Kotlin bytecode compiler Ant task.
|
* Kotlin bytecode compiler Ant task.
|
||||||
*
|
* <p/>
|
||||||
* See
|
* See
|
||||||
* http://evgeny-goldin.org/javadoc/ant/tutorial-writing-tasks.html
|
* http://evgeny-goldin.org/javadoc/ant/tutorial-writing-tasks.html
|
||||||
* http://evgeny-goldin.org/javadoc/ant/develop.html
|
* http://evgeny-goldin.org/javadoc/ant/develop.html
|
||||||
@@ -36,20 +37,37 @@ import java.io.File;
|
|||||||
*/
|
*/
|
||||||
public class BytecodeCompilerTask extends Task {
|
public class BytecodeCompilerTask extends Task {
|
||||||
|
|
||||||
private File output;
|
private File output;
|
||||||
private File jar;
|
private File jar;
|
||||||
private File stdlib;
|
private File stdlib;
|
||||||
private File src;
|
private File src;
|
||||||
private File module;
|
private File module;
|
||||||
private Path compileClasspath;
|
private Path compileClasspath;
|
||||||
private boolean includeRuntime = true;
|
private boolean includeRuntime = true;
|
||||||
|
|
||||||
public void setOutput ( File output ) { this.output = output; }
|
public void setOutput(File output) {
|
||||||
public void setJar ( File jar ) { this.jar = jar; }
|
this.output = output;
|
||||||
public void setStdlib ( File stdlib ) { this.stdlib = stdlib; }
|
}
|
||||||
public void setSrc ( File src ) { this.src = src; }
|
|
||||||
public void setModule ( File module ) { this.module = module; }
|
public void setJar(File jar) {
|
||||||
public void setIncludeRuntime ( boolean includeRuntime ) { this.includeRuntime = includeRuntime; }
|
this.jar = jar;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStdlib(File stdlib) {
|
||||||
|
this.stdlib = stdlib;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSrc(File src) {
|
||||||
|
this.src = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setModule(File module) {
|
||||||
|
this.module = module;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIncludeRuntime(boolean includeRuntime) {
|
||||||
|
this.includeRuntime = includeRuntime;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,25 +75,26 @@ public class BytecodeCompilerTask extends Task {
|
|||||||
*
|
*
|
||||||
* @param classpath an Ant Path object containing the compilation classpath.
|
* @param classpath an Ant Path object containing the compilation classpath.
|
||||||
*/
|
*/
|
||||||
public void setClasspath ( Path classpath ) {
|
public void setClasspath(Path classpath) {
|
||||||
if ( this.compileClasspath == null ) {
|
if (this.compileClasspath == null) {
|
||||||
this.compileClasspath = classpath;
|
this.compileClasspath = classpath;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.compileClasspath.append( classpath );
|
this.compileClasspath.append(classpath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a reference to a classpath defined elsewhere.
|
* Adds a reference to a classpath defined elsewhere.
|
||||||
|
*
|
||||||
* @param ref a reference to a classpath.
|
* @param ref a reference to a classpath.
|
||||||
*/
|
*/
|
||||||
public void setClasspathRef( Reference ref ) {
|
public void setClasspathRef(Reference ref) {
|
||||||
if ( this.compileClasspath == null ) {
|
if (this.compileClasspath == null) {
|
||||||
this.compileClasspath = new Path( getProject());
|
this.compileClasspath = new Path(getProject());
|
||||||
}
|
}
|
||||||
this.compileClasspath.createPath().setRefid( ref );
|
this.compileClasspath.createPath().setRefid(ref);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -84,52 +103,52 @@ public class BytecodeCompilerTask extends Task {
|
|||||||
*
|
*
|
||||||
* @param classpath an Ant Path object containing the compilation classpath.
|
* @param classpath an Ant Path object containing the compilation classpath.
|
||||||
*/
|
*/
|
||||||
public void addConfiguredClasspath( Path classpath ) {
|
public void addConfiguredClasspath(Path classpath) {
|
||||||
setClasspath( classpath );
|
setClasspath(classpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
|
|
||||||
final BytecodeCompiler compiler = new BytecodeCompiler();
|
final BytecodeCompiler compiler = new BytecodeCompiler();
|
||||||
final String stdlibPath = ( this.stdlib != null ? getPath( this.stdlib ) : null );
|
final String stdlibPath = (this.stdlib != null ? getPath(this.stdlib) : null);
|
||||||
final String[] classpath = ( this.compileClasspath != null ? this.compileClasspath.list() : null );
|
final String[] classpath = (this.compileClasspath != null ? this.compileClasspath.list() : null);
|
||||||
|
|
||||||
if ( this.src != null ) {
|
if (this.src != null) {
|
||||||
|
|
||||||
if (( this.output == null ) && ( this.jar == null )) {
|
if ((this.output == null) && (this.jar == null)) {
|
||||||
throw new CompileEnvironmentException( "\"output\" or \"jar\" should be specified" );
|
throw new CompileEnvironmentException("\"output\" or \"jar\" should be specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
String source = getPath( this.src );
|
String source = getPath(this.src);
|
||||||
String destination = getPath( this.output != null ? this.output : this.jar );
|
String destination = getPath(this.output != null ? this.output : this.jar);
|
||||||
|
|
||||||
log( String.format( "Compiling [%s] => [%s]", source, destination ));
|
log(String.format("Compiling [%s] => [%s]", source, destination));
|
||||||
|
|
||||||
if ( this.output != null ) {
|
if (this.output != null) {
|
||||||
compiler.sourcesToDir( source, destination, stdlibPath, classpath );
|
compiler.sourcesToDir(source, destination, stdlibPath, classpath);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
compiler.sourcesToJar( source, destination, this.includeRuntime, stdlibPath, classpath );
|
compiler.sourcesToJar(source, destination, this.includeRuntime, stdlibPath, classpath);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( this.module != null ) {
|
else if (this.module != null) {
|
||||||
|
|
||||||
if ( this.output != null ) {
|
if (this.output != null) {
|
||||||
throw new CompileEnvironmentException( "Module compilation is only supported for jar destination" );
|
throw new CompileEnvironmentException("Module compilation is only supported for jar destination");
|
||||||
}
|
}
|
||||||
|
|
||||||
String modulePath = getPath( this.module );
|
String modulePath = getPath(this.module);
|
||||||
String jarPath = ( this.jar != null ? getPath( this.jar ) : null );
|
String jarPath = (this.jar != null ? getPath(this.jar) : null);
|
||||||
|
|
||||||
log( jarPath != null ? String.format( "Compiling [%s] => [%s]", modulePath, jarPath ) :
|
log(jarPath != null ? String.format("Compiling [%s] => [%s]", modulePath, jarPath) :
|
||||||
String.format( "Compiling [%s]", modulePath ));
|
String.format("Compiling [%s]", modulePath));
|
||||||
|
|
||||||
compiler.moduleToJar( modulePath, jarPath, this.includeRuntime, stdlibPath, classpath );
|
compiler.moduleToJar(modulePath, jarPath, this.includeRuntime, stdlibPath, classpath);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
throw new CompileEnvironmentException( "\"src\" or \"module\" should be specified" );
|
throw new CompileEnvironmentException("\"src\" or \"module\" should be specified");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,6 @@ public class JavaScriptCompilerTask extends Task {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
log( "JavaScriptCompilerTask" );
|
log("JavaScriptCompilerTask");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,9 +20,9 @@ import jet.modules.Module;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.cli.common.CompilerPlugin;
|
import org.jetbrains.jet.cli.common.CompilerPlugin;
|
||||||
|
import org.jetbrains.jet.cli.common.messages.MessageCollector;
|
||||||
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
|
import org.jetbrains.jet.cli.jvm.JVMConfigurationKeys;
|
||||||
import org.jetbrains.jet.cli.jvm.compiler.*;
|
import org.jetbrains.jet.cli.jvm.compiler.*;
|
||||||
import org.jetbrains.jet.cli.common.messages.MessageCollector;
|
|
||||||
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
|
import org.jetbrains.jet.codegen.BuiltinToJavaTypesMapping;
|
||||||
import org.jetbrains.jet.config.CompilerConfiguration;
|
import org.jetbrains.jet.config.CompilerConfiguration;
|
||||||
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
|
import org.jetbrains.jet.lang.BuiltinsScopeExtensionMode;
|
||||||
@@ -40,7 +40,7 @@ public class BytecodeCompiler {
|
|||||||
|
|
||||||
private List<CompilerPlugin> compilerPlugins = new ArrayList<CompilerPlugin>();
|
private List<CompilerPlugin> compilerPlugins = new ArrayList<CompilerPlugin>();
|
||||||
|
|
||||||
public BytecodeCompiler () {
|
public BytecodeCompiler() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -49,10 +49,9 @@ public class BytecodeCompiler {
|
|||||||
*
|
*
|
||||||
* @param stdlib path to "kotlin-runtime.jar", only used if not null and not empty
|
* @param stdlib path to "kotlin-runtime.jar", only used if not null and not empty
|
||||||
* @param classpath compilation classpath, only used if not null and not empty
|
* @param classpath compilation classpath, only used if not null and not empty
|
||||||
*
|
|
||||||
* @return compile environment instance
|
* @return compile environment instance
|
||||||
*/
|
*/
|
||||||
private K2JVMCompileEnvironmentConfiguration env( String stdlib, String[] classpath ) {
|
private K2JVMCompileEnvironmentConfiguration env(String stdlib, String[] classpath) {
|
||||||
List<File> classpathItems = new ArrayList<File>();
|
List<File> classpathItems = new ArrayList<File>();
|
||||||
classpathItems.add(PathUtil.findRtJar());
|
classpathItems.add(PathUtil.findRtJar());
|
||||||
if ((stdlib != null) && (stdlib.trim().length() > 0)) {
|
if ((stdlib != null) && (stdlib.trim().length() > 0)) {
|
||||||
@@ -68,7 +67,7 @@ public class BytecodeCompiler {
|
|||||||
}
|
}
|
||||||
CompilerConfiguration configuration = new CompilerConfiguration();
|
CompilerConfiguration configuration = new CompilerConfiguration();
|
||||||
configuration.putUserData(JVMConfigurationKeys.CLASSPATH_KEY, classpathItems.toArray(new File[classpathItems.size()]));
|
configuration.putUserData(JVMConfigurationKeys.CLASSPATH_KEY, classpathItems.toArray(new File[classpathItems.size()]));
|
||||||
configuration.putUserData(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File[]{PathUtil.getJdkAnnotationsPath()});
|
configuration.putUserData(JVMConfigurationKeys.ANNOTATIONS_PATH_KEY, new File[] {PathUtil.getJdkAnnotationsPath()});
|
||||||
|
|
||||||
JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), configuration
|
JetCoreEnvironment environment = new JetCoreEnvironment(CompileEnvironmentUtil.createMockDisposable(), configuration
|
||||||
);
|
);
|
||||||
@@ -86,15 +85,14 @@ public class BytecodeCompiler {
|
|||||||
/**
|
/**
|
||||||
* Retrieves compilation error message.
|
* Retrieves compilation error message.
|
||||||
*
|
*
|
||||||
* @param source compilation source
|
* @param source compilation source
|
||||||
* @param exceptionThrown whether compilation failed due to exception thrown
|
* @param exceptionThrown whether compilation failed due to exception thrown
|
||||||
*
|
|
||||||
* @return compilation error message
|
* @return compilation error message
|
||||||
*/
|
*/
|
||||||
private static String errorMessage( @NotNull String source, boolean exceptionThrown ) {
|
private static String errorMessage(@NotNull String source, boolean exceptionThrown) {
|
||||||
return String.format( "[%s] compilation failed" +
|
return String.format("[%s] compilation failed" +
|
||||||
( exceptionThrown ? "" : ", see \"ERROR:\" messages above for more details." ),
|
(exceptionThrown ? "" : ", see \"ERROR:\" messages above for more details."),
|
||||||
new File( source ).getAbsolutePath());
|
new File(source).getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -106,18 +104,18 @@ public class BytecodeCompiler {
|
|||||||
* @param stdlib "kotlin-runtime.jar" path
|
* @param stdlib "kotlin-runtime.jar" path
|
||||||
* @param classpath compilation classpath, can be <code>null</code> or empty
|
* @param classpath compilation classpath, can be <code>null</code> or empty
|
||||||
*/
|
*/
|
||||||
public void sourcesToDir ( @NotNull String src, @NotNull String output, @Nullable String stdlib, @Nullable String[] classpath ) {
|
public void sourcesToDir(@NotNull String src, @NotNull String output, @Nullable String stdlib, @Nullable String[] classpath) {
|
||||||
try {
|
try {
|
||||||
K2JVMCompileEnvironmentConfiguration configuration = env(stdlib, classpath);
|
K2JVMCompileEnvironmentConfiguration configuration = env(stdlib, classpath);
|
||||||
configuration.getEnvironment().addSources(src);
|
configuration.getEnvironment().addSources(src);
|
||||||
|
|
||||||
boolean success = KotlinToJVMBytecodeCompiler.compileBunchOfSources(configuration, null, new File(output), true);
|
boolean success = KotlinToJVMBytecodeCompiler.compileBunchOfSources(configuration, null, new File(output), true);
|
||||||
if ( ! success ) {
|
if (!success) {
|
||||||
throw new CompileEnvironmentException( errorMessage( src, false ));
|
throw new CompileEnvironmentException(errorMessage(src, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch ( Exception e ) {
|
catch (Exception e) {
|
||||||
throw new CompileEnvironmentException( errorMessage( src, true ), e );
|
throw new CompileEnvironmentException(errorMessage(src, true), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,18 +129,22 @@ public class BytecodeCompiler {
|
|||||||
* @param stdlib "kotlin-runtime.jar" path
|
* @param stdlib "kotlin-runtime.jar" path
|
||||||
* @param classpath compilation classpath, can be <code>null</code> or empty
|
* @param classpath compilation classpath, can be <code>null</code> or empty
|
||||||
*/
|
*/
|
||||||
public void sourcesToJar ( @NotNull String src, @NotNull String jar, boolean includeRuntime, @Nullable String stdlib, @Nullable String[] classpath ) {
|
public void sourcesToJar(@NotNull String src,
|
||||||
|
@NotNull String jar,
|
||||||
|
boolean includeRuntime,
|
||||||
|
@Nullable String stdlib,
|
||||||
|
@Nullable String[] classpath) {
|
||||||
try {
|
try {
|
||||||
K2JVMCompileEnvironmentConfiguration configuration = env(stdlib, classpath);
|
K2JVMCompileEnvironmentConfiguration configuration = env(stdlib, classpath);
|
||||||
configuration.getEnvironment().addSources(src);
|
configuration.getEnvironment().addSources(src);
|
||||||
|
|
||||||
boolean success = KotlinToJVMBytecodeCompiler.compileBunchOfSources(configuration, new File(jar), null, includeRuntime);
|
boolean success = KotlinToJVMBytecodeCompiler.compileBunchOfSources(configuration, new File(jar), null, includeRuntime);
|
||||||
if ( ! success ) {
|
if (!success) {
|
||||||
throw new CompileEnvironmentException( errorMessage( src, false ));
|
throw new CompileEnvironmentException(errorMessage(src, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch ( Exception e ) {
|
catch (Exception e) {
|
||||||
throw new CompileEnvironmentException( errorMessage( src, true ), e );
|
throw new CompileEnvironmentException(errorMessage(src, true), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -156,18 +158,22 @@ public class BytecodeCompiler {
|
|||||||
* @param stdlib "kotlin-runtime.jar" path
|
* @param stdlib "kotlin-runtime.jar" path
|
||||||
* @param classpath compilation classpath, can be <code>null</code> or empty
|
* @param classpath compilation classpath, can be <code>null</code> or empty
|
||||||
*/
|
*/
|
||||||
public void moduleToJar ( @NotNull String module, @NotNull String jar, boolean includeRuntime, @Nullable String stdlib, @Nullable String[] classpath ) {
|
public void moduleToJar(@NotNull String module,
|
||||||
|
@NotNull String jar,
|
||||||
|
boolean includeRuntime,
|
||||||
|
@Nullable String stdlib,
|
||||||
|
@Nullable String[] classpath) {
|
||||||
try {
|
try {
|
||||||
K2JVMCompileEnvironmentConfiguration env = env(stdlib, classpath);
|
K2JVMCompileEnvironmentConfiguration env = env(stdlib, classpath);
|
||||||
List<Module> modules = CompileEnvironmentUtil.loadModuleScript(module, env.getMessageCollector());
|
List<Module> modules = CompileEnvironmentUtil.loadModuleScript(module, env.getMessageCollector());
|
||||||
File directory = new File(module).getParentFile();
|
File directory = new File(module).getParentFile();
|
||||||
boolean success = KotlinToJVMBytecodeCompiler.compileModules(env, modules, directory, new File(jar), null, includeRuntime);
|
boolean success = KotlinToJVMBytecodeCompiler.compileModules(env, modules, directory, new File(jar), null, includeRuntime);
|
||||||
if ( ! success ) {
|
if (!success) {
|
||||||
throw new CompileEnvironmentException( errorMessage( module, false ));
|
throw new CompileEnvironmentException(errorMessage(module, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch ( Exception e ) {
|
catch (Exception e) {
|
||||||
throw new CompileEnvironmentException( errorMessage( module, true ), e );
|
throw new CompileEnvironmentException(errorMessage(module, true), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,22 +25,22 @@ import java.io.IOException;
|
|||||||
*/
|
*/
|
||||||
public final class Util {
|
public final class Util {
|
||||||
|
|
||||||
private Util () {
|
private Util() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@code file.getCanonicalFile().getPath()} convenience wrapper.
|
* {@code file.getCanonicalFile().getPath()} convenience wrapper.
|
||||||
|
*
|
||||||
* @param f file to get its canonical path.
|
* @param f file to get its canonical path.
|
||||||
* @return file's canonical path
|
* @return file's canonical path
|
||||||
*/
|
*/
|
||||||
public static String getPath( File f ) {
|
public static String getPath(File f) {
|
||||||
try {
|
try {
|
||||||
return f.getCanonicalFile().getPath();
|
return f.getCanonicalFile().getPath();
|
||||||
}
|
}
|
||||||
catch ( IOException e ) {
|
catch (IOException e) {
|
||||||
throw new RuntimeException( String.format( "Failed to resolve canonical file of [%s]: %s", f, e ), e );
|
throw new RuntimeException(String.format("Failed to resolve canonical file of [%s]: %s", f, e), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user