aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java736
1 files changed, 0 insertions, 736 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
deleted file mode 100644
index 519163cc..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java
+++ /dev/null
@@ -1,736 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package org.apache.tools.ant.taskdefs.compilers;
-
-//Java5 style
-//import static org.apache.tools.ant.util.StringUtils.LINE_SEP;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Location;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.taskdefs.Execute;
-import org.apache.tools.ant.taskdefs.Javac;
-import org.apache.tools.ant.taskdefs.LogStreamHandler;
-import org.apache.tools.ant.taskdefs.condition.Os;
-import org.apache.tools.ant.types.Commandline;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.util.FileUtils;
-import org.apache.tools.ant.util.JavaEnvUtils;
-import org.apache.tools.ant.util.StringUtils;
-
-/**
- * This is the default implementation for the CompilerAdapter interface.
- * Currently, this is a cut-and-paste of the original javac task.
- *
- * @since Ant 1.3
- */
-public abstract class DefaultCompilerAdapter
- implements CompilerAdapter, CompilerAdapterExtension {
-
- private static final int COMMAND_LINE_LIMIT;
- static {
- if (Os.isFamily("os/2")) {
- // OS/2 CMD.EXE has a much smaller limit around 1K
- COMMAND_LINE_LIMIT = 1000;
- } else {
- COMMAND_LINE_LIMIT = 4096; // 4K
- }
- }
- // CheckStyle:VisibilityModifier OFF - bc
-
- private static final FileUtils FILE_UTILS = FileUtils.getFileUtils();
-
- protected Path src;
- protected File destDir;
- protected String encoding;
- protected boolean debug = false;
- protected boolean optimize = false;
- protected boolean deprecation = false;
- protected boolean depend = false;
- protected boolean verbose = false;
- protected String target;
- protected Path bootclasspath;
- protected Path extdirs;
- protected Path compileClasspath;
- protected Path compileSourcepath;
- protected Project project;
- protected Location location;
- protected boolean includeAntRuntime;
- protected boolean includeJavaRuntime;
- protected String memoryInitialSize;
- protected String memoryMaximumSize;
-
- protected File[] compileList;
- protected Javac attributes;
-
- //must keep for subclass BC, though unused:
- // CheckStyle:ConstantNameCheck OFF - bc
- protected static final String lSep = StringUtils.LINE_SEP;
-
- // CheckStyle:ConstantNameCheck ON
- // CheckStyle:VisibilityModifier ON
-
- /**
- * Set the Javac instance which contains the configured compilation
- * attributes.
- *
- * @param attributes a configured Javac task.
- */
- public void setJavac(final Javac attributes) {
- this.attributes = attributes;
- src = attributes.getSrcdir();
- destDir = attributes.getDestdir();
- encoding = attributes.getEncoding();
- debug = attributes.getDebug();
- optimize = attributes.getOptimize();
- deprecation = attributes.getDeprecation();
- depend = attributes.getDepend();
- verbose = attributes.getVerbose();
- target = attributes.getTarget();
- bootclasspath = attributes.getBootclasspath();
- extdirs = attributes.getExtdirs();
- compileList = attributes.getFileList();
- compileClasspath = attributes.getClasspath();
- compileSourcepath = attributes.getSourcepath();
- project = attributes.getProject();
- location = attributes.getLocation();
- includeAntRuntime = attributes.getIncludeantruntime();
- includeJavaRuntime = attributes.getIncludejavaruntime();
- memoryInitialSize = attributes.getMemoryInitialSize();
- memoryMaximumSize = attributes.getMemoryMaximumSize();
- }
-
- /**
- * Get the Javac task instance associated with this compiler adapter
- *
- * @return the configured Javac task instance used by this adapter.
- */
- public Javac getJavac() {
- return attributes;
- }
-
- /**
- * By default, only recognize files with a Java extension,
- * but specialized compilers can recognize multiple kinds
- * of files.
- */
- public String[] getSupportedFileExtensions() {
- return new String[] {"java"};
- }
-
- /**
- * Get the project this compiler adapter was created in.
- * @return the owner project
- * @since Ant 1.6
- */
- protected Project getProject() {
- return project;
- }
-
- /**
- * Builds the compilation classpath.
- * @return the compilation class path
- */
- protected Path getCompileClasspath() {
- final Path classpath = new Path(project);
-
- // add dest dir to classpath so that previously compiled and
- // untouched classes are on classpath
-
- if (destDir != null && getJavac().isIncludeDestClasses()) {
- classpath.setLocation(destDir);
- }
-
- // Combine the build classpath with the system classpath, in an
- // order determined by the value of build.sysclasspath
-
- Path cp = compileClasspath;
- if (cp == null) {
- cp = new Path(project);
- }
- if (includeAntRuntime) {
- classpath.addExisting(cp.concatSystemClasspath("last"));
- } else {
- classpath.addExisting(cp.concatSystemClasspath("ignore"));
- }
-
- if (includeJavaRuntime) {
- classpath.addJavaRuntime();
- }
-
- return classpath;
- }
-
- /**
- * Get the command line arguments for the switches.
- * @param cmd the command line
- * @return the command line
- */
- protected Commandline setupJavacCommandlineSwitches(final Commandline cmd) {
- return setupJavacCommandlineSwitches(cmd, false);
- }
-
- /**
- * Does the command line argument processing common to classic and
- * modern. Doesn't add the files to compile.
- * @param cmd the command line
- * @param useDebugLevel if true set set the debug level with the -g switch
- * @return the command line
- */
- protected Commandline setupJavacCommandlineSwitches(final Commandline cmd,
- final boolean useDebugLevel) {
- final Path classpath = getCompileClasspath();
- // 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;
- }
-
- final String memoryParameterPrefix = assumeJava11() ? "-J-" : "-J-X";
- if (memoryInitialSize != null) {
- if (!attributes.isForkedJavac()) {
- attributes.log("Since fork is false, ignoring "
- + "memoryInitialSize setting.",
- Project.MSG_WARN);
- } else {
- cmd.createArgument().setValue(memoryParameterPrefix
- + "ms" + memoryInitialSize);
- }
- }
-
- if (memoryMaximumSize != null) {
- if (!attributes.isForkedJavac()) {
- attributes.log("Since fork is false, ignoring "
- + "memoryMaximumSize setting.",
- Project.MSG_WARN);
- } else {
- cmd.createArgument().setValue(memoryParameterPrefix
- + "mx" + memoryMaximumSize);
- }
- }
-
- if (attributes.getNowarn()) {
- cmd.createArgument().setValue("-nowarn");
- }
-
- if (deprecation) {
- cmd.createArgument().setValue("-deprecation");
- }
-
- if (destDir != null) {
- cmd.createArgument().setValue("-d");
- cmd.createArgument().setFile(destDir);
- }
-
- cmd.createArgument().setValue("-classpath");
-
- // Just add "sourcepath" to classpath ( for JDK1.1 )
- // as well as "bootclasspath" and "extdirs"
- if (assumeJava11()) {
- final Path cp = new Path(project);
-
- final Path bp = getBootClassPath();
- if (bp.size() > 0) {
- cp.append(bp);
- }
-
- if (extdirs != null) {
- cp.addExtdirs(extdirs);
- }
- cp.append(classpath);
- cp.append(sourcepath);
- cmd.createArgument().setPath(cp);
- } else {
- cmd.createArgument().setPath(classpath);
- // If the buildfile specifies sourcepath="", then don't
- // output any sourcepath.
- if (sourcepath.size() > 0) {
- cmd.createArgument().setValue("-sourcepath");
- cmd.createArgument().setPath(sourcepath);
- }
- if (target != null) {
- cmd.createArgument().setValue("-target");
- cmd.createArgument().setValue(target);
- }
-
- final Path bp = getBootClassPath();
- if (bp.size() > 0) {
- cmd.createArgument().setValue("-bootclasspath");
- cmd.createArgument().setPath(bp);
- }
-
- if (extdirs != null && extdirs.size() > 0) {
- cmd.createArgument().setValue("-extdirs");
- cmd.createArgument().setPath(extdirs);
- }
- }
-
- if (encoding != null) {
- cmd.createArgument().setValue("-encoding");
- cmd.createArgument().setValue(encoding);
- }
- if (debug) {
- if (useDebugLevel && !assumeJava11()) {
- final String debugLevel = attributes.getDebugLevel();
- if (debugLevel != null) {
- cmd.createArgument().setValue("-g:" + debugLevel);
- } else {
- cmd.createArgument().setValue("-g");
- }
- } else {
- cmd.createArgument().setValue("-g");
- }
- } else if (getNoDebugArgument() != null) {
- cmd.createArgument().setValue(getNoDebugArgument());
- }
- if (optimize) {
- cmd.createArgument().setValue("-O");
- }
-
- if (depend) {
- if (assumeJava11()) {
- cmd.createArgument().setValue("-depend");
- } else if (assumeJava12()) {
- cmd.createArgument().setValue("-Xdepend");
- } else {
- attributes.log("depend attribute is not supported by the "
- + "modern compiler", Project.MSG_WARN);
- }
- }
-
- if (verbose) {
- cmd.createArgument().setValue("-verbose");
- }
-
- addCurrentCompilerArgs(cmd);
-
- return cmd;
- }
-
- /**
- * Does the command line argument processing for modern. Doesn't
- * add the files to compile.
- * @param cmd the command line
- * @return the command line
- */
- protected Commandline setupModernJavacCommandlineSwitches(final Commandline cmd) {
- setupJavacCommandlineSwitches(cmd, true);
- if (!assumeJava13()) { // -source added with JDK 1.4
- final String t = attributes.getTarget();
- if (attributes.getSource() != null) {
- cmd.createArgument().setValue("-source");
- cmd.createArgument()
- .setValue(adjustSourceValue(attributes.getSource()));
-
- } else if (t != null && mustSetSourceForTarget(t)) {
- setImplicitSourceSwitch(cmd, t, adjustSourceValue(t));
- }
- }
- return cmd;
- }
-
- /**
- * Does the command line argument processing for modern and adds
- * the files to compile as well.
- * @return the command line
- */
- protected Commandline setupModernJavacCommand() {
- final Commandline cmd = new Commandline();
- setupModernJavacCommandlineSwitches(cmd);
-
- logAndAddFilesToCompile(cmd);
- return cmd;
- }
-
- /**
- * Set up the command line.
- * @return the command line
- */
- protected Commandline setupJavacCommand() {
- return setupJavacCommand(false);
- }
-
- /**
- * Does the command line argument processing for classic and adds
- * the files to compile as well.
- * @param debugLevelCheck if true set the debug level with the -g switch
- * @return the command line
- */
- protected Commandline setupJavacCommand(final boolean debugLevelCheck) {
- final Commandline cmd = new Commandline();
- setupJavacCommandlineSwitches(cmd, debugLevelCheck);
- logAndAddFilesToCompile(cmd);
- return cmd;
- }
-
- /**
- * Logs the compilation parameters, adds the files to compile and logs the
- * "niceSourceList"
- * @param cmd the command line
- */
- protected void logAndAddFilesToCompile(final Commandline cmd) {
- attributes.log("Compilation " + cmd.describeArguments(),
- Project.MSG_VERBOSE);
-
- final StringBuffer niceSourceList = new StringBuffer("File");
- if (compileList.length != 1) {
- niceSourceList.append("s");
- }
- niceSourceList.append(" to be compiled:");
-
- niceSourceList.append(StringUtils.LINE_SEP);
-
- for (int i = 0; i < compileList.length; i++) {
- final String arg = compileList[i].getAbsolutePath();
- cmd.createArgument().setValue(arg);
- niceSourceList.append(" ");
- niceSourceList.append(arg);
- niceSourceList.append(StringUtils.LINE_SEP);
- }
-
- attributes.log(niceSourceList.toString(), Project.MSG_VERBOSE);
- }
-
- /**
- * Do the compile with the specified arguments.
- * @param args - arguments to pass to process on command line
- * @param firstFileName - index of the first source file in args,
- * if the index is negative, no temporary file will ever be
- * created, but this may hit the command line length limit on your
- * system.
- * @return the exit code of the compilation
- */
- protected int executeExternalCompile(final String[] args, final int firstFileName) {
- return executeExternalCompile(args, firstFileName, true);
- }
-
- /**
- * Do the compile with the specified arguments.
- *
- * <p>The working directory if the executed process will be the
- * project's base directory.</p>
- *
- * @param args - arguments to pass to process on command line
- * @param firstFileName - index of the first source file in args,
- * if the index is negative, no temporary file will ever be
- * created, but this may hit the command line length limit on your
- * system.
- * @param quoteFiles - if set to true, filenames containing
- * spaces will be quoted when they appear in the external file.
- * This is necessary when running JDK 1.4's javac and probably
- * others.
- * @return the exit code of the compilation
- *
- * @since Ant 1.6
- */
- protected int executeExternalCompile(final String[] args, final int firstFileName,
- final boolean quoteFiles) {
- String[] commandArray = null;
- File tmpFile = null;
-
- try {
- /*
- * Many system have been reported to get into trouble with
- * long command lines - no, not only Windows ;-).
- *
- * POSIX seems to define a lower limit of 4k, so use a temporary
- * file if the total length of the command line exceeds this limit.
- */
- if (Commandline.toString(args).length() > COMMAND_LINE_LIMIT
- && firstFileName >= 0) {
- BufferedWriter out = null;
- try {
- tmpFile = FILE_UTILS.createTempFile(
- "files", "", getJavac().getTempdir(), true, true);
- out = new BufferedWriter(new FileWriter(tmpFile));
- for (int i = firstFileName; i < args.length; i++) {
- if (quoteFiles && args[i].indexOf(" ") > -1) {
- args[i] = args[i].replace(File.separatorChar, '/');
- out.write("\"" + args[i] + "\"");
- } else {
- out.write(args[i]);
- }
- out.newLine();
- }
- out.flush();
- commandArray = new String[firstFileName + 1];
- System.arraycopy(args, 0, commandArray, 0, firstFileName);
- commandArray[firstFileName] = "@" + tmpFile;
- } catch (final IOException e) {
- throw new BuildException("Error creating temporary file",
- e, location);
- } finally {
- FileUtils.close(out);
- }
- } else {
- commandArray = args;
- }
-
- try {
- final Execute exe = new Execute(
- new LogStreamHandler(attributes,
- Project.MSG_INFO,
- Project.MSG_WARN));
- if (Os.isFamily("openvms")) {
- //Use the VM launcher instead of shell launcher on VMS
- //for java
- exe.setVMLauncher(true);
- }
- exe.setAntRun(project);
- exe.setWorkingDirectory(project.getBaseDir());
- exe.setCommandline(commandArray);
- exe.execute();
- return exe.getExitValue();
- } catch (final IOException e) {
- throw new BuildException("Error running " + args[0]
- + " compiler", e, location);
- }
- } finally {
- if (tmpFile != null) {
- tmpFile.delete();
- }
- }
- }
-
- /**
- * Add extdirs to classpath
- * @param classpath the classpath to use
- * @deprecated since 1.5.x.
- * Use org.apache.tools.ant.types.Path#addExtdirs instead.
- */
- @Deprecated
- protected void addExtdirsToClasspath(final Path classpath) {
- classpath.addExtdirs(extdirs);
- }
-
- /**
- * Adds the command line arguments specific to the current implementation.
- * @param cmd the command line to use
- */
- protected void addCurrentCompilerArgs(final Commandline cmd) {
- cmd.addArguments(getJavac().getCurrentCompilerArgs());
- }
-
- /**
- * Shall we assume JDK 1.1 command line switches?
- * @return true if jdk 1.1
- * @since Ant 1.5
- */
- protected boolean assumeJava11() {
- return "javac1.1".equals(attributes.getCompilerVersion());
- }
-
- /**
- * Shall we assume JDK 1.2 command line switches?
- * @return true if jdk 1.2
- * @since Ant 1.5
- */
- protected boolean assumeJava12() {
- return "javac1.2".equals(attributes.getCompilerVersion());
- }
-
- /**
- * Shall we assume JDK 1.3 command line switches?
- * @return true if jdk 1.3
- * @since Ant 1.5
- */
- protected boolean assumeJava13() {
- return "javac1.3".equals(attributes.getCompilerVersion());
- }
-
- /**
- * Shall we assume JDK 1.4 command line switches?
- * @return true if jdk 1.4
- * @since Ant 1.6.3
- */
- protected boolean assumeJava14() {
- return assumeJavaXY("javac1.4", JavaEnvUtils.JAVA_1_4);
- }
-
- /**
- * Shall we assume JDK 1.5 command line switches?
- * @return true if JDK 1.5
- * @since Ant 1.6.3
- */
- protected boolean assumeJava15() {
- return assumeJavaXY("javac1.5", JavaEnvUtils.JAVA_1_5);
- }
-
- /**
- * Shall we assume JDK 1.6 command line switches?
- * @return true if JDK 1.6
- * @since Ant 1.7
- */
- protected boolean assumeJava16() {
- return assumeJavaXY("javac1.6", JavaEnvUtils.JAVA_1_6);
- }
-
- /**
- * Shall we assume JDK 1.7 command line switches?
- * @return true if JDK 1.7
- * @since Ant 1.8.2
- */
- protected boolean assumeJava17() {
- return assumeJavaXY("javac1.7", JavaEnvUtils.JAVA_1_7);
- }
-
- /**
- * Shall we assume JDK 1.8 command line switches?
- * @return true if JDK 1.8
- * @since Ant 1.8.3
- */
- protected boolean assumeJava18() {
- return assumeJavaXY("javac1.8", JavaEnvUtils.JAVA_1_8);
- }
-
- /**
- * Shall we assume JDK 1.9 command line switches?
- * @return true if JDK 1.9
- * @since Ant 1.9.4
- */
- protected boolean assumeJava19() {
- return assumeJavaXY("javac1.9", JavaEnvUtils.JAVA_1_9);
- }
-
- /**
- * Shall we assume command line switches for the given version of Java?
- * @since Ant 1.8.3
- */
- private boolean assumeJavaXY(final String javacXY, final String javaEnvVersionXY) {
- return javacXY.equals(attributes.getCompilerVersion())
- || ("classic".equals(attributes.getCompilerVersion())
- && JavaEnvUtils.isJavaVersion(javaEnvVersionXY))
- || ("modern".equals(attributes.getCompilerVersion())
- && JavaEnvUtils.isJavaVersion(javaEnvVersionXY))
- || ("extJavac".equals(attributes.getCompilerVersion())
- && JavaEnvUtils.isJavaVersion(javaEnvVersionXY));
- }
-
- /**
- * Combines a user specified bootclasspath with the system
- * bootclasspath taking build.sysclasspath into account.
- *
- * @return a non-null Path instance that combines the user
- * specified and the system bootclasspath.
- */
- protected Path getBootClassPath() {
- final Path bp = new Path(project);
- if (bootclasspath != null) {
- bp.append(bootclasspath);
- }
- return bp.concatSystemBootClasspath("ignore");
- }
-
- /**
- * The argument the compiler wants to see if the debug attribute
- * has been set to false.
- *
- * <p>A return value of <code>null</code> means no argument at all.</p>
- *
- * @return "-g:none" unless we expect to invoke a JDK 1.1 compiler.
- *
- * @since Ant 1.6.3
- */
- protected String getNoDebugArgument() {
- return assumeJava11() ? null : "-g:none";
- }
-
- private void setImplicitSourceSwitch(final Commandline cmd,
- final String target, final String source) {
- attributes.log("", Project.MSG_WARN);
- attributes.log(" WARNING", Project.MSG_WARN);
- attributes.log("", Project.MSG_WARN);
- attributes.log("The -source switch defaults to " + getDefaultSource()
- + ".",
- Project.MSG_WARN);
- attributes.log("If you specify -target " + target
- + " you now must also specify -source " + source
- + ".", Project.MSG_WARN);
- attributes.log("Ant will implicitly add -source " + source
- + " for you. Please change your build file.",
- Project.MSG_WARN);
- cmd.createArgument().setValue("-source");
- cmd.createArgument().setValue(source);
- }
-
- /**
- * A string that describes the default value for -source of the
- * selected JDK's javac.
- */
- private String getDefaultSource() {
- if (assumeJava15() || assumeJava16()) {
- return "1.5 in JDK 1.5 and 1.6";
- }
- if (assumeJava17()) {
- return "1.7 in JDK 1.7";
- }
- if (assumeJava18()) {
- return "1.8 in JDK 1.8";
- }
- if (assumeJava19()) {
- return "1.9 in JDK 1.9";
- }
- return "";
- }
-
- /**
- * Whether the selected -target is known to be incompatible with
- * the default -source value of the selected JDK's javac.
- *
- * <p>Assumes it will never be called unless the selected JDK is
- * at least Java 1.5.</p>
- *
- * @param t the -target value, must not be null
- */
- private boolean mustSetSourceForTarget(String t) {
- if (assumeJava14()) {
- return false;
- }
- if (t.startsWith("1.")) {
- t = t.substring(2);
- }
- return t.equals("1") || t.equals("2") || t.equals("3") || t.equals("4")
- || ((t.equals("5") || t.equals("6"))
- && !assumeJava15() && !assumeJava16())
- || (t.equals("7") && !assumeJava17())
- || (t.equals("8") && !assumeJava18())
- || (t.equals("9") && !assumeJava19());
- }
-
-
- /**
- * Turn the task's attribute for -source into soemthing that is
- * understood by all javac's after 1.4.
- *
- * <p>support for -source 1.1 and -source 1.2 has been added with
- * JDK 1.4.2 but isn't present in 1.5.0+</p>
- */
- private String adjustSourceValue(final String source) {
- return (source.equals("1.1") || source.equals("1.2")) ? "1.3" : source;
- }
-}
-