From c7dfaa577bd7940283563befa0aacd048f5de4d7 Mon Sep 17 00:00:00 2001
From: Stefan Bodewig
javac1.4
and
javac1.5
can be used as aliases.
jikes
(the Jikes
+ href="http://jikes.sourceforge.net/" target="_top">Jikes
compiler).jvc
(the Command-Line Compiler from Microsoft's SDK
for Java / Visual J++) – microsoft
can be used
@@ -209,7 +209,7 @@ invoking the compiler.
-g
command-line switch. This will be ignored by all implementations except
- modern
and classic(ver >= 1.2)
.
+ modern
, classic(ver >= 1.2)
and jikes
.
Legal values are none
or a comma-separated list of the
following keywords:
lines
, vars
, and source
.
@@ -536,6 +536,8 @@ using. This problem may occur with all JDKs < 1.2.
You need Jikes 1.15 or later.
+Jikes supports some extra options, which can be set be defining
the properties shown below prior to invoking the task. The setting
for each property will be in affect for all <javac>
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java
index 2c8b29dad..2a04fadbc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java
+++ b/src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java
@@ -44,11 +44,24 @@ public class Jikes extends DefaultCompilerAdapter {
public boolean execute() throws BuildException {
attributes.log("Using jikes compiler", Project.MSG_VERBOSE);
- Path classpath = new Path(project);
+ Commandline cmd = new Commandline();
- // Jikes doesn't support an extension dir (-extdir)
- // so we'll emulate it for compatibility and convenience.
- classpath.addExtdirs(extdirs);
+ // For -sourcepath, use the "sourcepath" value if present.
+ // Otherwise default to the "srcdir" value.
+ Path sourcepath = null;
+ if (compileSourcepath != null) {
+ sourcepath = compileSourcepath;
+ } else {
+ sourcepath = src;
+ }
+ // If the buildfile specifies sourcepath="", then don't
+ // output any sourcepath.
+ if (sourcepath.size() > 0) {
+ cmd.createArgument().setValue("-sourcepath");
+ cmd.createArgument().setPath(sourcepath);
+ }
+
+ Path classpath = new Path(project);
if (bootclasspath == null || bootclasspath.size() == 0) {
// no bootclasspath, therefore, get one from the java runtime
@@ -61,21 +74,17 @@ public class Jikes extends DefaultCompilerAdapter {
}
classpath.append(getCompileClasspath());
- // Jikes has no option for source-path so we
- // will add it to classpath.
- if (compileSourcepath != null) {
- classpath.append(compileSourcepath);
- } else {
- classpath.append(src);
- }
-
// if the user has set JIKESPATH we should add the contents as well
String jikesPath = System.getProperty("jikes.class.path");
if (jikesPath != null) {
classpath.append(new Path(project, jikesPath));
}
- Commandline cmd = new Commandline();
+ if (extdirs != null && extdirs.size() > 0) {
+ cmd.createArgument().setValue("-extdirs");
+ cmd.createArgument().setPath(extdirs);
+ }
+
String exec = getJavac().getExecutable();
cmd.setExecutable(exec == null ? "jikes" : exec);
@@ -96,7 +105,14 @@ public class Jikes extends DefaultCompilerAdapter {
cmd.createArgument().setValue(encoding);
}
if (debug) {
- cmd.createArgument().setValue("-g");
+ String debugLevel = attributes.getDebugLevel();
+ if (debugLevel != null) {
+ cmd.createArgument().setValue("-g:" + debugLevel);
+ } else {
+ cmd.createArgument().setValue("-g");
+ }
+ } else {
+ cmd.createArgument().setValue("-g:none");
}
if (optimize) {
cmd.createArgument().setValue("-O");
@@ -148,12 +164,6 @@ public class Jikes extends DefaultCompilerAdapter {
cmd.createArgument().setValue("-nowarn");
}
} if (attributes.getNowarn()) {
- /*
- * FIXME later
- *
- * let the magic property win over the attribute for backwards
- * compatibility
- */
cmd.createArgument().setValue("-nowarn");
}