Author: jkf
Date: Sun Nov 20 10:06:25 2005
New Revision: 345766

URL: http://svn.apache.org/viewcvs?rev=345766&view=rev
Log:
PR 37546:
Use alternative names for the compiler argument line.
(If modern is specified in javac and javac1.5 is used, 
and for javac1.5 a command line is specified, but no
command line is specified for modern, the javac1.5 
command line will be used, if no javac has been specified
and javac 1.4 is used and a comman line is specified for
modern, the command line specified for modern will be used,
etc.)

Modified:
    ant/core/trunk/WHATSNEW
    ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java

Modified: ant/core/trunk/WHATSNEW
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/WHATSNEW?rev=345766&r1=345765&r2=345766&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Sun Nov 20 10:06:25 2005
@@ -4,6 +4,9 @@
 Changes that could break older environments:
 --------------------------------------------
 
+* Use alternative names for the command line arguments in javac. Bugzilla
+  Report 37546.
+
 * Use org.apache.log4j.Logger instead of org.apache.log4j.Category.
   Category has been deprecated for ~2 years and has been removed from
   the log4j code.  Logger was introduced in log4j 1.2 so users of

Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java
URL: 
http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java?rev=345766&r1=345765&r2=345766&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Javac.java Sun Nov 20 
10:06:25 2005
@@ -69,6 +69,15 @@
     private static final String FAIL_MSG
         = "Compile failed; see the compiler error output for details.";
 
+    private static final String JAVAC15 = "javac1.5";
+    private static final String JAVAC14 = "javac1.4";
+    private static final String JAVAC13 = "javac1.3";
+    private static final String JAVAC12 = "javac1.2";
+    private static final String JAVAC11 = "javac1.1";
+    private static final String MODERN = "modern";
+    private static final String CLASSIC = "classic";
+    private static final String EXTJAVAC = "extJavac";
+
     private Path src;
     private File destDir;
     private Path compileClasspath;
@@ -103,18 +112,22 @@
      * Javac task for compilation of Java files.
      */
     public Javac() {
+        facade = new FacadeTaskHelper(assumedJavaVersion());
+    }
+
+    private String assumedJavaVersion() {
         if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) {
-            facade = new FacadeTaskHelper("javac1.1");
+            return JAVAC11;
         } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_2)) {
-            facade = new FacadeTaskHelper("javac1.2");
+            return JAVAC12;
         } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_3)) {
-            facade = new FacadeTaskHelper("javac1.3");
+            return JAVAC13;
         } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_4)) {
-            facade = new FacadeTaskHelper("javac1.4");
+            return JAVAC14;
         } else if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_5)) {
-            facade = new FacadeTaskHelper("javac1.5");
+            return JAVAC15;
         } else {
-            facade = new FacadeTaskHelper("classic");
+            return CLASSIC;
         }
     }
 
@@ -700,15 +713,54 @@
      */
     public String[] getCurrentCompilerArgs() {
         String chosen = facade.getExplicitChoice();
-        // make sure facade knows about magic properties and fork setting
-        facade.setImplementation(getCompiler());
         try {
-            return facade.getArgs();
+            // make sure facade knows about magic properties and fork setting
+            String appliedCompiler = getCompiler();
+            facade.setImplementation(appliedCompiler);
+
+            String[] result = facade.getArgs();
+
+            String altCompilerName = 
getAltCompilerName(facade.getImplementation());
+
+            if (result.length == 0 && altCompilerName != null) {
+                facade.setImplementation(altCompilerName);
+                result = facade.getArgs();
+            }
+
+            return result;
+
         } finally {
             facade.setImplementation(chosen);
         }
     }
 
+    private String getAltCompilerName(String anImplementation) {
+        if (JAVAC15.equalsIgnoreCase(anImplementation)
+                || JAVAC14.equalsIgnoreCase(anImplementation)
+                || JAVAC13.equalsIgnoreCase(anImplementation)) {
+            return MODERN;
+        }
+        if (JAVAC12.equalsIgnoreCase(anImplementation)
+                || JAVAC11.equalsIgnoreCase(anImplementation)) {
+            return CLASSIC;
+        }
+        if (MODERN.equalsIgnoreCase(anImplementation)) {
+            String nextSelected = assumedJavaVersion();
+            if (JAVAC15.equalsIgnoreCase(nextSelected)
+                    || JAVAC14.equalsIgnoreCase(nextSelected)
+                    || JAVAC13.equalsIgnoreCase(nextSelected)) {
+                return nextSelected;
+            }
+        }
+        if (CLASSIC.equals(anImplementation)) {
+            return assumedJavaVersion();
+        }
+        if (EXTJAVAC.equalsIgnoreCase(anImplementation)) {
+            return assumedJavaVersion();
+        }
+        return null;
+    }
+
     /**
      * Where Ant should place temporary files.
      *
@@ -806,13 +858,13 @@
      *                 "javac1.2", "javac1.3", "javac1.4" or "javac1.5".
      */
     protected boolean isJdkCompiler(String compilerImpl) {
-        return "modern".equals(compilerImpl)
-            || "classic".equals(compilerImpl)
-            || "javac1.1".equals(compilerImpl)
-            || "javac1.2".equals(compilerImpl)
-            || "javac1.3".equals(compilerImpl)
-            || "javac1.4".equals(compilerImpl)
-            || "javac1.5".equals(compilerImpl);
+        return MODERN.equals(compilerImpl)
+            || CLASSIC.equals(compilerImpl)
+            || JAVAC15.equals(compilerImpl)
+            || JAVAC14.equals(compilerImpl)
+            || JAVAC13.equals(compilerImpl)
+            || JAVAC12.equals(compilerImpl)
+            || JAVAC11.equals(compilerImpl);
     }
 
     /**



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to