Browse Source

transformed tabs into spaces for more portable look

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267573 13f79535-47bb-0310-9956-ffa450edef68
master
Stefano Mazzocchi 25 years ago
parent
commit
b4bb2d2fbb
1 changed files with 253 additions and 258 deletions
  1. +253
    -258
      src/main/org/apache/tools/ant/taskdefs/Javac.java

+ 253
- 258
src/main/org/apache/tools/ant/taskdefs/Javac.java View File

@@ -1,7 +1,7 @@
/* /*
* The Apache Software License, Version 1.1 * The Apache Software License, Version 1.1
* *
* Copyright (c) 1999 The Apache Software Foundation. All rights
* Copyright (c) 1999 The Apache Software Foundation. All rights
* reserved. * reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@@ -9,7 +9,7 @@
* are met: * are met:
* *
* 1. Redistributions of source code must retain the above copyright * 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* notice, this list of conditions and the following disclaimer.
* *
* 2. Redistributions in binary form must reproduce the above copyright * 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in * notice, this list of conditions and the following disclaimer in
@@ -17,15 +17,15 @@
* distribution. * distribution.
* *
* 3. The end-user documentation included with the redistribution, if * 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)." * Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself, * Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear. * if and wherever such third-party acknowlegements normally appear.
* *
* 4. The names "The Jakarta Project", "Tomcat", and "Apache Software * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
* Foundation" must not be used to endorse or promote products derived * Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* from this software without prior written permission. For written
* permission, please contact apache@apache.org. * permission, please contact apache@apache.org.
* *
* 5. Products derived from this software may not be called "Apache" * 5. Products derived from this software may not be called "Apache"
@@ -105,24 +105,24 @@ public class Javac extends Task {
/** /**
* Set the source dir to find the source Java files. * Set the source dir to find the source Java files.
*/ */
public void setSrcdir(String srcDirName) { public void setSrcdir(String srcDirName) {
srcDir = project.resolveFile(srcDirName);
srcDir = project.resolveFile(srcDirName);
} }


/** /**
* Set the destination directory into which the Java source * Set the destination directory into which the Java source
* files should be compiled. * files should be compiled.
*/ */
public void setDestdir(String destDirName) { public void setDestdir(String destDirName) {
destDir = project.resolveFile(destDirName);
destDir = project.resolveFile(destDirName);
} }


/** /**
* Set the classpath to be used for this compilation. * Set the classpath to be used for this compilation.
*/ */
public void setClasspath(String classpath) { public void setClasspath(String classpath) {
compileClasspath = Project.translatePath(classpath); compileClasspath = Project.translatePath(classpath);
} }
@@ -131,8 +131,8 @@ public class Javac extends Task {
* Sets the bootclasspath that will be used to compile the classes * Sets the bootclasspath that will be used to compile the classes
* against. * against.
*/ */
public void setBootclasspath(String bootclasspath) {
public void setBootclasspath(String bootclasspath) {
this.bootclasspath = Project.translatePath(bootclasspath); this.bootclasspath = Project.translatePath(bootclasspath);
} }


@@ -140,36 +140,31 @@ public class Javac extends Task {
* Sets the extension directories that will be used during the * Sets the extension directories that will be used during the
* compilation. * compilation.
*/ */
public void setExtdirs(String extdirs) { public void setExtdirs(String extdirs) {
this.extdirs = Project.translatePath(extdirs); this.extdirs = Project.translatePath(extdirs);
} }


/** /**
* Set the deprecation flag. Valid strings are "on", "off", "true", and * Set the deprecation flag. Valid strings are "on", "off", "true", and
* "false". * "false".
*/ */
public void setDeprecation(String deprecation) { public void setDeprecation(String deprecation) {
if (deprecation.equalsIgnoreCase("on") ||
deprecation.equalsIgnoreCase("true")) {
this.deprecation = true;
} else {
this.deprecation = false;
}
this.deprecation = Project.toBoolean(deprecation);
} }


/** /**
* Set the debug flag. Valid strings are "on", "off", "true", and "false". * Set the debug flag. Valid strings are "on", "off", "true", and "false".
*/ */
public void setDebug(String debugString) { public void setDebug(String debugString) {
if (debugString.equalsIgnoreCase("on") ||
if (debugString.equalsIgnoreCase("on") ||
debugString.equalsIgnoreCase("true")) { debugString.equalsIgnoreCase("true")) {
debug = true;
} else {
debug = true;
} else {
debug = false; debug = false;
} }
} }
@@ -180,19 +175,19 @@ public class Javac extends Task {
*/ */


public void setOptimize(String optimizeString) { public void setOptimize(String optimizeString) {
if (optimizeString.equalsIgnoreCase("on") ||
optimizeString.equalsIgnoreCase("true")) {
optimize = true;
} else {
optimize = false;
}
if (optimizeString.equalsIgnoreCase("on") ||
optimizeString.equalsIgnoreCase("true")) {
optimize = true;
} else {
optimize = false;
}
} }


/** /**
* Sets the target VM that the classes will be compiled for. Valid * Sets the target VM that the classes will be compiled for. Valid
* strings are "1.1", "1.2", and "1.3". * strings are "1.1", "1.2", and "1.3".
*/ */
public void setTarget(String target) { public void setTarget(String target) {
this.target = target; this.target = target;
} }
@@ -200,103 +195,103 @@ public class Javac extends Task {
/** /**
* Executes the task. * Executes the task.
*/ */
public void execute() throws BuildException { public void execute() throws BuildException {


// first off, make sure that we've got a srcdir and destdir
// first off, make sure that we've got a srcdir and destdir


if (srcDir == null || destDir == null ) {
String msg = "srcDir and destDir attributes must be set!";
throw new BuildException(msg);
}
if (srcDir == null || destDir == null ) {
String msg = "srcDir and destDir attributes must be set!";
throw new BuildException(msg);
}


// scan source and dest dirs to build up both copy lists and
// compile lists
// scan source and dest dirs to build up both copy lists and
// compile lists


scanDir(srcDir, destDir);
// compile the source files
scanDir(srcDir, destDir);


String compiler = project.getProperty("build.compiler");
if (compiler == null) {
if (Project.getJavaVersion().startsWith("1.3")) {
compiler = "modern";
} else {
compiler = "classic";
}
}
// compile the source files


if (compileList.size() > 0) {
String compiler = project.getProperty("build.compiler");
if (compiler == null) {
if (Project.getJavaVersion().startsWith("1.3")) {
compiler = "modern";
} else {
compiler = "classic";
}
}

if (compileList.size() > 0) {
project.log("Compiling " + compileList.size() + project.log("Compiling " + compileList.size() +
" source files to " + destDir);
if (compiler.equalsIgnoreCase("classic")) {
doClassicCompile();
} else if (compiler.equalsIgnoreCase("modern")) {
doModernCompile();
} else if (compiler.equalsIgnoreCase("jikes")) {
doJikesCompile();
} else {
String msg = "Don't know how to use compiler " + compiler;
throw new BuildException(msg);
}
}
// copy the support files
if (filecopyList.size() > 0) {
project.log("Copying " + filecopyList.size() +
" support files to " + destDir.getAbsolutePath());
Enumeration enum = filecopyList.keys();
while (enum.hasMoreElements()) {
String fromFile = (String)enum.nextElement();
String toFile = (String)filecopyList.get(fromFile);
try {
copyFile(fromFile, toFile);
} catch (IOException ioe) {
String msg = "Failed to copy " + fromFile + " to " + toFile
+ " due to " + ioe.getMessage();
throw new BuildException(msg);
}
}
}
" source files to " + destDir);
if (compiler.equalsIgnoreCase("classic")) {
doClassicCompile();
} else if (compiler.equalsIgnoreCase("modern")) {
doModernCompile();
} else if (compiler.equalsIgnoreCase("jikes")) {
doJikesCompile();
} else {
String msg = "Don't know how to use compiler " + compiler;
throw new BuildException(msg);
}
}
// copy the support files
if (filecopyList.size() > 0) {
project.log("Copying " + filecopyList.size() +
" support files to " + destDir.getAbsolutePath());
Enumeration enum = filecopyList.keys();
while (enum.hasMoreElements()) {
String fromFile = (String)enum.nextElement();
String toFile = (String)filecopyList.get(fromFile);
try {
copyFile(fromFile, toFile);
} catch (IOException ioe) {
String msg = "Failed to copy " + fromFile + " to " + toFile
+ " due to " + ioe.getMessage();
throw new BuildException(msg);
}
}
}
} }


/** /**
* Scans the directory looking for source files to be compiled and * Scans the directory looking for source files to be compiled and
* support files to be copied. * support files to be copied.
*/ */
private void scanDir(File srcDir, File destDir) { private void scanDir(File srcDir, File destDir) {


String[] list = srcDir.list(new DesirableFilter());
int len = (list==null ? 0 : list.length);
for (int i = 0; i < len; i++) {
String filename = list[i];
File srcFile = new File(srcDir, filename);
File destFile = new File(destDir, filename);
if (srcFile.isDirectory()) {
// it's a dir, scan that recursively
scanDir(srcFile, destFile);
} else {
// it's a file, see if we compile it or just copy it
if (filename.endsWith(".java")) {
File classFile =
new File(destDir,
filename.substring(0,
filename.indexOf(".java"))
+ ".class");
if (srcFile.lastModified() > classFile.lastModified()) {
compileList.addElement(srcFile.getAbsolutePath());
}
} else {
if (srcFile.lastModified() > destFile.lastModified()) {
filecopyList.put(srcFile.getAbsolutePath(),
destFile.getAbsolutePath());
}
}
}
}
String[] list = srcDir.list(new DesirableFilter());
int len = (list==null ? 0 : list.length);
for (int i = 0; i < len; i++) {
String filename = list[i];
File srcFile = new File(srcDir, filename);
File destFile = new File(destDir, filename);
if (srcFile.isDirectory()) {
// it's a dir, scan that recursively
scanDir(srcFile, destFile);
} else {
// it's a file, see if we compile it or just copy it
if (filename.endsWith(".java")) {
File classFile =
new File(destDir,
filename.substring(0,
filename.indexOf(".java"))
+ ".class");
if (srcFile.lastModified() > classFile.lastModified()) {
compileList.addElement(srcFile.getAbsolutePath());
}
} else {
if (srcFile.lastModified() > destFile.lastModified()) {
filecopyList.put(srcFile.getAbsolutePath(),
destFile.getAbsolutePath());
}
}
}
}
} }


/** /**
@@ -305,29 +300,29 @@ public class Javac extends Task {


// XXX // XXX
// we need a way to not use the current classpath. // we need a way to not use the current classpath.
private String getCompileClasspath() { private String getCompileClasspath() {
StringBuffer classpath = new StringBuffer();
StringBuffer classpath = new StringBuffer();


// add dest dir to classpath so that previously compiled and
// untouched classes are on classpath
// add dest dir to classpath so that previously compiled and
// untouched classes are on classpath


//classpath.append(sourceDir.getAbsolutePath());
//classpath.append(File.pathSeparator);
classpath.append(destDir.getAbsolutePath());
//classpath.append(sourceDir.getAbsolutePath());
//classpath.append(File.pathSeparator);
classpath.append(destDir.getAbsolutePath());


// add our classpath to the mix
// add our classpath to the mix


if (compileClasspath != null) {
if (compileClasspath != null) {
addExistingToClasspath(classpath,compileClasspath); addExistingToClasspath(classpath,compileClasspath);
}
}


// add the system classpath
// add the system classpath


addExistingToClasspath(classpath,System.getProperty("java.class.path")); addExistingToClasspath(classpath,System.getProperty("java.class.path"));
return classpath.toString();
return classpath.toString();
} }


/** /**
* Takes a classpath-like string, and adds each element of * Takes a classpath-like string, and adds each element of
@@ -362,92 +357,92 @@ public class Javac extends Task {
* Peforms a copmile using the classic compiler that shipped with * Peforms a copmile using the classic compiler that shipped with
* JDK 1.1 and 1.2. * JDK 1.1 and 1.2.
*/ */
private void doClassicCompile() throws BuildException { private void doClassicCompile() throws BuildException {
project.log("Using classic compiler", project.MSG_VERBOSE);
String classpath = getCompileClasspath();
Vector argList = new Vector();
project.log("Using classic compiler", project.MSG_VERBOSE);
String classpath = getCompileClasspath();
Vector argList = new Vector();


if (deprecation == true) if (deprecation == true)
argList.addElement("-deprecation"); argList.addElement("-deprecation");
argList.addElement("-d");
argList.addElement(destDir.getAbsolutePath());
argList.addElement("-classpath");
// Just add "sourcepath" to classpath ( for JDK1.1 )
if (Project.getJavaVersion().startsWith("1.1")) {
argList.addElement(classpath + File.pathSeparator +
argList.addElement("-d");
argList.addElement(destDir.getAbsolutePath());
argList.addElement("-classpath");
// Just add "sourcepath" to classpath ( for JDK1.1 )
if (Project.getJavaVersion().startsWith("1.1")) {
argList.addElement(classpath + File.pathSeparator +
srcDir.getAbsolutePath()); srcDir.getAbsolutePath());
} else {
argList.addElement(classpath);
argList.addElement("-sourcepath");
argList.addElement(srcDir.getAbsolutePath());
} else {
argList.addElement(classpath);
argList.addElement("-sourcepath");
argList.addElement(srcDir.getAbsolutePath());
if (target != null) { if (target != null) {
argList.addElement("-target"); argList.addElement("-target");
argList.addElement(target); argList.addElement(target);
} }
}
if (debug) {
argList.addElement("-g");
}
if (optimize) {
argList.addElement("-O");
}
if (bootclasspath != null) {
argList.addElement("-bootclasspath");
argList.addElement(bootclasspath);
}
if (extdirs != null) {
argList.addElement("-extdirs");
argList.addElement(extdirs);
}
project.log("Compilation args: " + argList.toString(),
project.MSG_VERBOSE);
String[] args = new String[argList.size() + compileList.size()];
int counter = 0;
for (int i = 0; i < argList.size(); i++) {
args[i] = (String)argList.elementAt(i);
counter++;
}
// XXX
// should be using system independent line feed!
StringBuffer niceSourceList = new StringBuffer("Files to be compiled:"
+ "\r\n");
Enumeration enum = compileList.elements();
while (enum.hasMoreElements()) {
args[counter] = (String)enum.nextElement();
niceSourceList.append(" " + args[counter] + "\r\n");
counter++;
}
project.log(niceSourceList.toString(), project.MSG_VERBOSE);
// XXX
// provide the compiler a different message sink - namely our own
}
if (debug) {
argList.addElement("-g");
}
if (optimize) {
argList.addElement("-O");
}
if (bootclasspath != null) {
argList.addElement("-bootclasspath");
argList.addElement(bootclasspath);
}
if (extdirs != null) {
argList.addElement("-extdirs");
argList.addElement(extdirs);
}
project.log("Compilation args: " + argList.toString(),
project.MSG_VERBOSE);
String[] args = new String[argList.size() + compileList.size()];
int counter = 0;
for (int i = 0; i < argList.size(); i++) {
args[i] = (String)argList.elementAt(i);
counter++;
}
// XXX
// should be using system independent line feed!
StringBuffer niceSourceList = new StringBuffer("Files to be compiled:"
+ "\r\n");
Enumeration enum = compileList.elements();
while (enum.hasMoreElements()) {
args[counter] = (String)enum.nextElement();
niceSourceList.append(" " + args[counter] + "\r\n");
counter++;
}
project.log(niceSourceList.toString(), project.MSG_VERBOSE);
// XXX
// provide the compiler a different message sink - namely our own


JavacOutputStream jos = new JavacOutputStream(project); JavacOutputStream jos = new JavacOutputStream(project);
sun.tools.javac.Main compiler =
new sun.tools.javac.Main(jos, "javac");
compiler.compile(args);
sun.tools.javac.Main compiler =
new sun.tools.javac.Main(jos, "javac");
compiler.compile(args);
if (jos.getErrorFlag()) { if (jos.getErrorFlag()) {
String msg = "Compile failed, messages should have been provided."; String msg = "Compile failed, messages should have been provided.";
throw new BuildException(msg); throw new BuildException(msg);
} }
}
}


/** /**
* Performs a compile using the newer compiler that ships with JDK 1.3 * Performs a compile using the newer compiler that ships with JDK 1.3
*/ */
private void doModernCompile() throws BuildException { private void doModernCompile() throws BuildException {
project.log("Performing a Modern Compile");
project.log("Performing a Modern Compile");
} }


/** /**
@@ -462,33 +457,33 @@ public class Javac extends Task {
* *
* @author skanthak@muehlheim.de * @author skanthak@muehlheim.de
*/ */
private void doJikesCompile() throws BuildException { private void doJikesCompile() throws BuildException {
project.log("Using jikes compiler",project.MSG_VERBOSE);
String classpath = getCompileClasspath();
Vector argList = new Vector();
if (deprecation == true)
argList.addElement("-deprecation");
// We want all output on stdout to make
// parsing easier
argList.addElement("-Xstdout");
argList.addElement("-d");
argList.addElement(destDir.getAbsolutePath());
argList.addElement("-classpath");
// Jikes has no option for source-path so we
// will add it to classpath.
// XXX is this correct?
argList.addElement(classpath+File.pathSeparator +
srcDir.getAbsolutePath());
if (debug) {
argList.addElement("-g");
}
if (optimize) {
argList.addElement("-O");
}
project.log("Using jikes compiler",project.MSG_VERBOSE);
String classpath = getCompileClasspath();
Vector argList = new Vector();
if (deprecation == true)
argList.addElement("-deprecation");
// We want all output on stdout to make
// parsing easier
argList.addElement("-Xstdout");
argList.addElement("-d");
argList.addElement(destDir.getAbsolutePath());
argList.addElement("-classpath");
// Jikes has no option for source-path so we
// will add it to classpath.
// XXX is this correct?
argList.addElement(classpath+File.pathSeparator +
srcDir.getAbsolutePath());
if (debug) {
argList.addElement("-g");
}
if (optimize) {
argList.addElement("-O");
}


/** /**
* XXX * XXX
@@ -532,43 +527,43 @@ public class Javac extends Task {


if (!warnings) if (!warnings)
argList.addElement("-nowarn"); argList.addElement("-nowarn");
project.log("Compilation args: " + argList.toString(),
project.MSG_VERBOSE);
String[] args = new String[argList.size() + compileList.size()];
int counter = 0;
for (int i = 0; i < argList.size(); i++) {
args[i] = (String)argList.elementAt(i);
counter++;
}
// XXX
// should be using system independent line feed!
StringBuffer niceSourceList = new StringBuffer("Files to be compiled:"
+ "\r\n");
Enumeration enum = compileList.elements();
while (enum.hasMoreElements()) {
args[counter] = (String)enum.nextElement();
niceSourceList.append(" " + args[counter] + "\r\n");
counter++;
}
project.log(niceSourceList.toString(), project.MSG_VERBOSE);
// XXX
// provide the compiler a different message sink - namely our own
JikesOutputParser jop = new JikesOutputParser(project,emacsMode);
Jikes compiler = new Jikes(jop,"jikes");
compiler.compile(args);
if (jop.getErrorFlag()) {
String msg = "Compile failed, messages should have been provided.";
throw new BuildException(msg);
}
project.log("Compilation args: " + argList.toString(),
project.MSG_VERBOSE);
String[] args = new String[argList.size() + compileList.size()];
int counter = 0;
for (int i = 0; i < argList.size(); i++) {
args[i] = (String)argList.elementAt(i);
counter++;
}
// XXX
// should be using system independent line feed!
StringBuffer niceSourceList = new StringBuffer("Files to be compiled:"
+ "\r\n");
Enumeration enum = compileList.elements();
while (enum.hasMoreElements()) {
args[counter] = (String)enum.nextElement();
niceSourceList.append(" " + args[counter] + "\r\n");
counter++;
}
project.log(niceSourceList.toString(), project.MSG_VERBOSE);
// XXX
// provide the compiler a different message sink - namely our own
JikesOutputParser jop = new JikesOutputParser(project,emacsMode);
Jikes compiler = new Jikes(jop,"jikes");
compiler.compile(args);
if (jop.getErrorFlag()) {
String msg = "Compile failed, messages should have been provided.";
throw new BuildException(msg);
}
} }
} }

Loading…
Cancel
Save