git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278007 13f79535-47bb-0310-9956-ffa450edef68master
@@ -156,6 +156,11 @@ Changes that could break older environments: | |||||
you must set filtertrace to false. | you must set filtertrace to false. | ||||
Bugzilla Report 22758 | Bugzilla Report 22758 | ||||
* The jikes compiler adapter now supports -bootclasspath, -extdirs and | |||||
-sourcepath and also uses the same logic for debug flags as javac. | |||||
This means, the jikes compiler adapter now requires Jikes 1.15 or later. | |||||
Bugzilla Reports 25868, 26404 and 32609. | |||||
Other changes: | Other changes: | ||||
-------------- | -------------- | ||||
@@ -194,9 +199,6 @@ Other changes: | |||||
* added a new mapper <filtermapper> | * added a new mapper <filtermapper> | ||||
* The jikes compiler adapter now supports -bootclasspath. Bugzilla | |||||
Report 32609. | |||||
* When a BuildListener tried to access System.err or System.out, Ant | * When a BuildListener tried to access System.err or System.out, Ant | ||||
would have thrown an exception - this has been changed. Ant now | would have thrown an exception - this has been changed. Ant now | ||||
silently ignores the message. BuildListeners still should avoid | silently ignores the message. BuildListeners still should avoid | ||||
@@ -58,7 +58,7 @@ attribute are:</a></p> | |||||
<code>javac1.4</code> and | <code>javac1.4</code> and | ||||
<code>javac1.5</code> can be used as aliases.</li> | <code>javac1.5</code> can be used as aliases.</li> | ||||
<li><code>jikes</code> (the <a | <li><code>jikes</code> (the <a | ||||
href="http://oss.software.ibm.com/developerworks/opensource/jikes/" target="_top">Jikes</a> | |||||
href="http://jikes.sourceforge.net/" target="_top">Jikes</a> | |||||
compiler).</li> | compiler).</li> | ||||
<li><code>jvc</code> (the Command-Line Compiler from Microsoft's SDK | <li><code>jvc</code> (the Command-Line Compiler from Microsoft's SDK | ||||
for Java / Visual J++) – <code>microsoft</code> can be used | for Java / Visual J++) – <code>microsoft</code> can be used | ||||
@@ -209,7 +209,7 @@ invoking the compiler.</p> | |||||
<td valign="top">debuglevel</td> | <td valign="top">debuglevel</td> | ||||
<td valign="top">Keyword list to be appended to the <code>-g</code> | <td valign="top">Keyword list to be appended to the <code>-g</code> | ||||
command-line switch. This will be ignored by all implementations except | command-line switch. This will be ignored by all implementations except | ||||
<code>modern</code> and <code>classic(ver >= 1.2)</code>. | |||||
<code>modern</code>, <code>classic(ver >= 1.2)</code> and <code>jikes</code>. | |||||
Legal values are <code>none</code> or a comma-separated list of the | Legal values are <code>none</code> or a comma-separated list of the | ||||
following keywords: | following keywords: | ||||
<code>lines</code>, <code>vars</code>, and <code>source</code>. | <code>lines</code>, <code>vars</code>, and <code>source</code>. | ||||
@@ -536,6 +536,8 @@ using. This problem may occur with all JDKs < 1.2.</p> | |||||
<h3>Jikes Notes</h3> | <h3>Jikes Notes</h3> | ||||
<p>You need Jikes 1.15 or later.</p> | |||||
<p>Jikes supports some extra options, which can be set be defining | <p>Jikes supports some extra options, which can be set be defining | ||||
the properties shown below prior to invoking the task. The setting | the properties shown below prior to invoking the task. The setting | ||||
for each property will be in affect for all <code><javac></code> | for each property will be in affect for all <code><javac></code> | ||||
@@ -44,11 +44,24 @@ public class Jikes extends DefaultCompilerAdapter { | |||||
public boolean execute() throws BuildException { | public boolean execute() throws BuildException { | ||||
attributes.log("Using jikes compiler", Project.MSG_VERBOSE); | 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) { | if (bootclasspath == null || bootclasspath.size() == 0) { | ||||
// no bootclasspath, therefore, get one from the java runtime | // no bootclasspath, therefore, get one from the java runtime | ||||
@@ -61,21 +74,17 @@ public class Jikes extends DefaultCompilerAdapter { | |||||
} | } | ||||
classpath.append(getCompileClasspath()); | 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 | // if the user has set JIKESPATH we should add the contents as well | ||||
String jikesPath = System.getProperty("jikes.class.path"); | String jikesPath = System.getProperty("jikes.class.path"); | ||||
if (jikesPath != null) { | if (jikesPath != null) { | ||||
classpath.append(new Path(project, jikesPath)); | 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(); | String exec = getJavac().getExecutable(); | ||||
cmd.setExecutable(exec == null ? "jikes" : exec); | cmd.setExecutable(exec == null ? "jikes" : exec); | ||||
@@ -96,7 +105,14 @@ public class Jikes extends DefaultCompilerAdapter { | |||||
cmd.createArgument().setValue(encoding); | cmd.createArgument().setValue(encoding); | ||||
} | } | ||||
if (debug) { | 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) { | if (optimize) { | ||||
cmd.createArgument().setValue("-O"); | cmd.createArgument().setValue("-O"); | ||||
@@ -148,12 +164,6 @@ public class Jikes extends DefaultCompilerAdapter { | |||||
cmd.createArgument().setValue("-nowarn"); | cmd.createArgument().setValue("-nowarn"); | ||||
} | } | ||||
} if (attributes.getNowarn()) { | } if (attributes.getNowarn()) { | ||||
/* | |||||
* FIXME later | |||||
* | |||||
* let the magic property win over the attribute for backwards | |||||
* compatibility | |||||
*/ | |||||
cmd.createArgument().setValue("-nowarn"); | cmd.createArgument().setValue("-nowarn"); | ||||
} | } | ||||