author | Jan Lahoda <jlahoda@netbeans.org> |
Tue, 24 Jan 2017 04:27:23 +0100 | |
changeset 14 | 3ff7a893a7ce |
parent 5 | 2c326fbd80f2 |
child 15 | cdb47e644581 |
permissions | -rw-r--r-- |
jaroslav@0 | 1 |
/** XelfiCompilerMain class |
jaroslav@0 | 2 |
* @author: Filip Dvorak |
jaroslav@0 | 3 |
* @version: 1.3 |
jaroslav@0 | 4 |
*/ |
jaroslav@0 | 5 |
|
jaroslav@0 | 6 |
package xelfi.compiler; |
jaroslav@0 | 7 |
|
jaroslav@0 | 8 |
import sun.tools.javac.*; |
jaroslav@0 | 9 |
import sun.tools.java.*; |
jaroslav@0 | 10 |
import java.io.*; |
jlahoda@14 | 11 |
import java.util.Arrays; |
jlahoda@14 | 12 |
import javax.tools.JavaCompiler; |
jlahoda@14 | 13 |
import javax.tools.StandardJavaFileManager; |
jlahoda@14 | 14 |
import javax.tools.ToolProvider; |
jaroslav@0 | 15 |
|
jaroslav@0 | 16 |
|
jaroslav@0 | 17 |
class XelfiCompilerMain extends Main implements MainCompiler |
jaroslav@0 | 18 |
{ |
jaroslav@0 | 19 |
/** Output from compiler is send here. */ |
jaroslav@0 | 20 |
protected XelfiCompilerOutput out; |
jaroslav@0 | 21 |
|
jaroslav@0 | 22 |
XelfiCompilerMain(XelfiCompilerOutput o) |
jaroslav@0 | 23 |
{ |
jaroslav@0 | 24 |
super(o, "javac"); |
jaroslav@0 | 25 |
out = o; |
jaroslav@0 | 26 |
} |
jaroslav@0 | 27 |
|
jaroslav@0 | 28 |
public void compileClass(File file) |
jaroslav@0 | 29 |
{ |
jaroslav@0 | 30 |
String args[] = null; |
jaroslav@0 | 31 |
if(CompilerOptions.getUseGparam()) |
jaroslav@0 | 32 |
{ |
jaroslav@0 | 33 |
args = new String[2]; |
jaroslav@0 | 34 |
args[0] = "-g"; |
jaroslav@0 | 35 |
args[1] = file.toString(); |
jaroslav@0 | 36 |
output("Compiling: " + args[0] + " " + args[1]); |
jaroslav@0 | 37 |
} |
jaroslav@0 | 38 |
else |
jaroslav@0 | 39 |
{ |
jaroslav@0 | 40 |
args = new String[1]; |
jaroslav@0 | 41 |
args[0] = file.toString(); |
jaroslav@0 | 42 |
output("Compiling: " + args[0]); |
jaroslav@0 | 43 |
} |
jlahoda@14 | 44 |
JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); |
jlahoda@14 | 45 |
StandardJavaFileManager fm = compiler.getStandardFileManager(null, null, null); |
jlahoda@14 | 46 |
try { |
jlahoda@14 | 47 |
compiler.getTask(new OutputStreamWriter(out), fm, null, Arrays.asList(args).subList(0, args.length - 1), null, fm.getJavaFileObjects(args[args.length - 1])).call(); |
jlahoda@14 | 48 |
} finally { |
jlahoda@14 | 49 |
try { |
jlahoda@14 | 50 |
fm.close(); |
jlahoda@14 | 51 |
} catch (IOException ex) { |
jlahoda@14 | 52 |
ex.printStackTrace(); |
jlahoda@14 | 53 |
} |
jlahoda@14 | 54 |
} |
jaroslav@0 | 55 |
output("\n"); |
jaroslav@0 | 56 |
} |
jaroslav@0 | 57 |
|
jaroslav@0 | 58 |
public void error(String err) |
jaroslav@0 | 59 |
{ |
jaroslav@0 | 60 |
out.topLevelError(err); |
jaroslav@0 | 61 |
} |
jaroslav@0 | 62 |
|
jaroslav@0 | 63 |
public void output(String msg) |
jaroslav@0 | 64 |
{ |
jaroslav@0 | 65 |
out.topLevelOutput(msg); |
jaroslav@0 | 66 |
} |
jaroslav@0 | 67 |
} |