git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1037667 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -273,6 +273,8 @@ Other changes: | |||||
| * New task <bindtargets> to make a list of targets bound to some | * New task <bindtargets> to make a list of targets bound to some | ||||
| specified extension point. | specified extension point. | ||||
| * Initial support for OpenJDK7 has been added. | |||||
| Changes from Ant 1.8.0 TO Ant 1.8.1 | Changes from Ant 1.8.0 TO Ant 1.8.1 | ||||
| =================================== | =================================== | ||||
| @@ -72,11 +72,12 @@ attribute are:</a></p> | |||||
| <li><code>classic</code> (the standard compiler of JDK 1.1/1.2) – | <li><code>classic</code> (the standard compiler of JDK 1.1/1.2) – | ||||
| <code>javac1.1</code> and | <code>javac1.1</code> and | ||||
| <code>javac1.2</code> can be used as aliases.</li> | <code>javac1.2</code> can be used as aliases.</li> | ||||
| <li><code>modern</code> (the standard compiler of JDK 1.3/1.4/1.5/1.6) – | |||||
| <li><code>modern</code> (the standard compiler of JDK 1.3/1.4/1.5/1.6/1.7) – | |||||
| <code>javac1.3</code> and | <code>javac1.3</code> and | ||||
| <code>javac1.4</code> and | <code>javac1.4</code> and | ||||
| <code>javac1.5</code> and | <code>javac1.5</code> and | ||||
| <code>javac1.6</code> can be used as aliases.</li> | |||||
| <code>javac1.6</code> and | |||||
| <code>javac1.7</code> (<em>since Ant 1.8.2</em>) can be used as aliases.</li> | |||||
| <li><code>jikes</code> (the <a | <li><code>jikes</code> (the <a | ||||
| href="http://jikes.sourceforge.net/" target="_top">Jikes</a> | href="http://jikes.sourceforge.net/" target="_top">Jikes</a> | ||||
| compiler).</li> | compiler).</li> | ||||
| @@ -79,6 +79,7 @@ public class Javac extends MatchingTask { | |||||
| private static final String FAIL_MSG | private static final String FAIL_MSG | ||||
| = "Compile failed; see the compiler error output for details."; | = "Compile failed; see the compiler error output for details."; | ||||
| private static final String JAVAC17 = "javac1.7"; | |||||
| private static final String JAVAC16 = "javac1.6"; | private static final String JAVAC16 = "javac1.6"; | ||||
| private static final String JAVAC15 = "javac1.5"; | private static final String JAVAC15 = "javac1.5"; | ||||
| private static final String JAVAC14 = "javac1.4"; | private static final String JAVAC14 = "javac1.4"; | ||||
| @@ -143,6 +144,8 @@ public class Javac extends MatchingTask { | |||||
| return JAVAC15; | return JAVAC15; | ||||
| } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_6)) { | } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_6)) { | ||||
| return JAVAC16; | return JAVAC16; | ||||
| } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_7)) { | |||||
| return JAVAC17; | |||||
| } else { | } else { | ||||
| return CLASSIC; | return CLASSIC; | ||||
| } | } | ||||
| @@ -594,7 +597,7 @@ public class Javac extends MatchingTask { | |||||
| /** | /** | ||||
| * Sets the target VM that the classes will be compiled for. Valid | * Sets the target VM that the classes will be compiled for. Valid | ||||
| * values depend on the compiler, for jdk 1.4 the valid values are | * values depend on the compiler, for jdk 1.4 the valid values are | ||||
| * "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "5" and "6". | |||||
| * "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "5", "6" and "7". | |||||
| * @param target the target VM | * @param target the target VM | ||||
| */ | */ | ||||
| public void setTarget(String target) { | public void setTarget(String target) { | ||||
| @@ -758,7 +761,8 @@ public class Javac extends MatchingTask { | |||||
| } | } | ||||
| private String getAltCompilerName(String anImplementation) { | private String getAltCompilerName(String anImplementation) { | ||||
| if (JAVAC16.equalsIgnoreCase(anImplementation) | |||||
| if (JAVAC17.equalsIgnoreCase(anImplementation) | |||||
| || JAVAC16.equalsIgnoreCase(anImplementation) | |||||
| || JAVAC15.equalsIgnoreCase(anImplementation) | || JAVAC15.equalsIgnoreCase(anImplementation) | ||||
| || JAVAC14.equalsIgnoreCase(anImplementation) | || JAVAC14.equalsIgnoreCase(anImplementation) | ||||
| || JAVAC13.equalsIgnoreCase(anImplementation)) { | || JAVAC13.equalsIgnoreCase(anImplementation)) { | ||||
| @@ -770,7 +774,8 @@ public class Javac extends MatchingTask { | |||||
| } | } | ||||
| if (MODERN.equalsIgnoreCase(anImplementation)) { | if (MODERN.equalsIgnoreCase(anImplementation)) { | ||||
| String nextSelected = assumedJavaVersion(); | String nextSelected = assumedJavaVersion(); | ||||
| if (JAVAC16.equalsIgnoreCase(nextSelected) | |||||
| if (JAVAC17.equalsIgnoreCase(nextSelected) | |||||
| || JAVAC16.equalsIgnoreCase(nextSelected) | |||||
| || JAVAC15.equalsIgnoreCase(nextSelected) | || JAVAC15.equalsIgnoreCase(nextSelected) | ||||
| || JAVAC14.equalsIgnoreCase(nextSelected) | || JAVAC14.equalsIgnoreCase(nextSelected) | ||||
| || JAVAC13.equalsIgnoreCase(nextSelected)) { | || JAVAC13.equalsIgnoreCase(nextSelected)) { | ||||
| @@ -965,6 +970,7 @@ public class Javac extends MatchingTask { | |||||
| protected boolean isJdkCompiler(String compilerImpl) { | protected boolean isJdkCompiler(String compilerImpl) { | ||||
| return MODERN.equals(compilerImpl) | return MODERN.equals(compilerImpl) | ||||
| || CLASSIC.equals(compilerImpl) | || CLASSIC.equals(compilerImpl) | ||||
| || JAVAC17.equals(compilerImpl) | |||||
| || JAVAC16.equals(compilerImpl) | || JAVAC16.equals(compilerImpl) | ||||
| || JAVAC15.equals(compilerImpl) | || JAVAC15.equals(compilerImpl) | ||||
| || JAVAC14.equals(compilerImpl) | || JAVAC14.equals(compilerImpl) | ||||
| @@ -119,7 +119,8 @@ public final class CompilerAdapterFactory { | |||||
| || compilerType.equalsIgnoreCase("javac1.3") | || compilerType.equalsIgnoreCase("javac1.3") | ||||
| || compilerType.equalsIgnoreCase("javac1.4") | || compilerType.equalsIgnoreCase("javac1.4") | ||||
| || compilerType.equalsIgnoreCase("javac1.5") | || compilerType.equalsIgnoreCase("javac1.5") | ||||
| || compilerType.equalsIgnoreCase("javac1.6")) { | |||||
| || compilerType.equalsIgnoreCase("javac1.6") | |||||
| || compilerType.equalsIgnoreCase("javac1.7")) { | |||||
| // does the modern compiler exist? | // does the modern compiler exist? | ||||
| if (doesModernCompilerExist()) { | if (doesModernCompilerExist()) { | ||||
| return new Javac13(); | return new Javac13(); | ||||
| @@ -332,13 +332,12 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter { | |||||
| String source = attributes.getSource(); | String source = attributes.getSource(); | ||||
| if (source.equals("1.1") || source.equals("1.2")) { | if (source.equals("1.1") || source.equals("1.2")) { | ||||
| // support for -source 1.1 and -source 1.2 has been | // support for -source 1.1 and -source 1.2 has been | ||||
| // added with JDK 1.4.2 - and isn't present in 1.5.0 | |||||
| // or 1.6.0 either | |||||
| // added with JDK 1.4.2 - and isn't present in 1.5.0+ | |||||
| cmd.createArgument().setValue("1.3"); | cmd.createArgument().setValue("1.3"); | ||||
| } else { | } else { | ||||
| cmd.createArgument().setValue(source); | cmd.createArgument().setValue(source); | ||||
| } | } | ||||
| } else if ((assumeJava15() || assumeJava16()) | |||||
| } else if ((assumeJava15() || assumeJava16() || assumeJava17()) | |||||
| && attributes.getTarget() != null) { | && attributes.getTarget() != null) { | ||||
| String t = attributes.getTarget(); | String t = attributes.getTarget(); | ||||
| if (t.equals("1.1") || t.equals("1.2") || t.equals("1.3") | if (t.equals("1.1") || t.equals("1.2") || t.equals("1.3") | ||||
| @@ -348,19 +347,12 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter { | |||||
| // 1.5.0 doesn't support -source 1.1 | // 1.5.0 doesn't support -source 1.1 | ||||
| s = "1.2"; | s = "1.2"; | ||||
| } | } | ||||
| attributes.log("", Project.MSG_WARN); | |||||
| attributes.log(" WARNING", Project.MSG_WARN); | |||||
| attributes.log("", Project.MSG_WARN); | |||||
| attributes.log("The -source switch defaults to 1.5 in JDK 1.5 and 1.6.", | |||||
| Project.MSG_WARN); | |||||
| attributes.log("If you specify -target " + t | |||||
| + " you now must also specify -source " + s | |||||
| + ".", Project.MSG_WARN); | |||||
| attributes.log("Ant will implicitly add -source " + s | |||||
| + " for you. Please change your build file.", | |||||
| Project.MSG_WARN); | |||||
| cmd.createArgument().setValue("-source"); | |||||
| cmd.createArgument().setValue(s); | |||||
| setImplicitSourceSwitch((assumeJava15() || assumeJava16()) | |||||
| ? "1.5 in JDK 1.5 and 1.6" | |||||
| : "1.7 in JDK 1.7", | |||||
| cmd, s, t); | |||||
| } else if (assumeJava17() && (t.equals("1.5") || t.equals("1.6"))) { | |||||
| setImplicitSourceSwitch("1.7 in JDK 1.7", cmd, t, t); | |||||
| } | } | ||||
| } | } | ||||
| return cmd; | return cmd; | ||||
| @@ -619,6 +611,21 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter { | |||||
| && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_6)); | && JavaEnvUtils.isJavaVersion(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 "javac1.7".equals(attributes.getCompilerVersion()) | |||||
| || ("classic".equals(attributes.getCompilerVersion()) | |||||
| && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_7)) | |||||
| || ("modern".equals(attributes.getCompilerVersion()) | |||||
| && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_7)) | |||||
| || ("extJavac".equals(attributes.getCompilerVersion()) | |||||
| && JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_7)); | |||||
| } | |||||
| /** | /** | ||||
| * Combines a user specified bootclasspath with the system | * Combines a user specified bootclasspath with the system | ||||
| * bootclasspath taking build.sysclasspath into account. | * bootclasspath taking build.sysclasspath into account. | ||||
| @@ -647,5 +654,23 @@ public abstract class DefaultCompilerAdapter implements CompilerAdapter { | |||||
| protected String getNoDebugArgument() { | protected String getNoDebugArgument() { | ||||
| return assumeJava11() ? null : "-g:none"; | return assumeJava11() ? null : "-g:none"; | ||||
| } | } | ||||
| private void setImplicitSourceSwitch(String defaultDetails, Commandline cmd, | |||||
| String target, 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 " + defaultDetails + ".", | |||||
| 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); | |||||
| } | |||||
| } | } | ||||