Browse Source

Modernize Jikes (unconditionally) - PR 25868 and 26404

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278007 13f79535-47bb-0310-9956-ffa450edef68
master
Stefan Bodewig 20 years ago
parent
commit
c7dfaa577b
3 changed files with 39 additions and 25 deletions
  1. +5
    -3
      WHATSNEW
  2. +4
    -2
      docs/manual/CoreTasks/javac.html
  3. +30
    -20
      src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java

+ 5
- 3
WHATSNEW View File

@@ -156,6 +156,11 @@ Changes that could break older environments:
you must set filtertrace to false.
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:
--------------

@@ -194,9 +199,6 @@ Other changes:

* 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
would have thrown an exception - this has been changed. Ant now
silently ignores the message. BuildListeners still should avoid


+ 4
- 2
docs/manual/CoreTasks/javac.html View File

@@ -58,7 +58,7 @@ attribute are:</a></p>
<code>javac1.4</code> and
<code>javac1.5</code> can be used as aliases.</li>
<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>
<li><code>jvc</code> (the Command-Line Compiler from Microsoft's SDK
for Java / Visual J++) &ndash; <code>microsoft</code> can be used
@@ -209,7 +209,7 @@ invoking the compiler.</p>
<td valign="top">debuglevel</td>
<td valign="top">Keyword list to be appended to the <code>-g</code>
command-line switch. This will be ignored by all implementations except
<code>modern</code> and <code>classic(ver &gt;= 1.2)</code>.
<code>modern</code>, <code>classic(ver &gt;= 1.2)</code> and <code>jikes</code>.
Legal values are <code>none</code> or a comma-separated list of the
following keywords:
<code>lines</code>, <code>vars</code>, and <code>source</code>.
@@ -536,6 +536,8 @@ using. This problem may occur with all JDKs &lt; 1.2.</p>

<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
the properties shown below prior to invoking the task. The setting
for each property will be in affect for all <code>&lt;javac&gt;</code>


+ 30
- 20
src/main/org/apache/tools/ant/taskdefs/compilers/Jikes.java View File

@@ -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");
}



Loading…
Cancel
Save