changeset 14913:2d1cc640512c

Add possibility to build using error-prone instead of javac.
author Gilles Duboscq <duboscq@ssw.jku.at>
date Fri, 28 Mar 2014 10:46:48 +0100
parents 898e6a259f67
children a6bd486b1b44
files mxtool/mx.py
diffstat 1 files changed, 27 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/mxtool/mx.py	Tue Apr 01 15:15:28 2014 +0200
+++ b/mxtool/mx.py	Fri Mar 28 10:46:48 2014 +0100
@@ -1126,8 +1126,10 @@
     return None
 
 
-def run_java(args, nonZeroIsFatal=True, out=None, err=None, cwd=None, addDefaultArgs=True):
-    return run(java().format_cmd(args, addDefaultArgs), nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
+def run_java(args, nonZeroIsFatal=True, out=None, err=None, cwd=None, addDefaultArgs=True, javaConfig=None):
+    if not javaConfig:
+        javaConfig = java()
+    return run(javaConfig.format_cmd(args, addDefaultArgs), nonZeroIsFatal=nonZeroIsFatal, out=out, err=err, cwd=cwd)
 
 def _kill_process_group(pid, sig):
     if not sig:
@@ -1388,6 +1390,7 @@
         self.javac = exe_suffix(join(self.jdk, 'bin', 'javac'))
         self.javap = exe_suffix(join(self.jdk, 'bin', 'javap'))
         self.javadoc = exe_suffix(join(self.jdk, 'bin', 'javadoc'))
+        self.toolsjar = join(self.jdk, 'lib', 'tools.jar')
         self._bootclasspath = None
 
         if not exists(self.java):
@@ -1677,6 +1680,7 @@
     parser.add_argument('--force-javac', action='store_true', dest='javac', help='use javac despite ecj.jar is found or not')
     parser.add_argument('--jdt', help='path to ecj.jar, the Eclipse batch compiler (default: ' + defaultEcjPath + ')', default=defaultEcjPath, metavar='<path>')
     parser.add_argument('--jdt-warning-as-error', action='store_true', help='convert all Eclipse batch compiler warnings to errors')
+    parser.add_argument('--error-prone', dest='error_prone', help='path to error-prone.jar', metavar='<path>')
 
     if suppliedParser:
         parser.add_argument('remainder', nargs=REMAINDER, metavar='...')
@@ -1857,17 +1861,27 @@
 
         toBeDeleted = [argfileName]
         try:
-            if jdtJar is None:
-                log('Compiling Java sources for {0} with javac...'.format(p.name))
-                javacCmd = [jdk.javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir]
-                if jdk.debug_port is not None:
-                    javacCmd += ['-J-Xdebug', '-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(jdk.debug_port)]
-                javacCmd += processorArgs
-                javacCmd += ['@' + argfile.name]
-
-                if not args.warnAPI:
-                    javacCmd.append('-XDignore.symbol.file')
-                run(javacCmd)
+            if not jdtJar:
+                if not args.error_prone:
+                    log('Compiling Java sources for {0} with javac...'.format(p.name))
+                    javacCmd = [jdk.javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir]
+                    if jdk.debug_port is not None:
+                        javacCmd += ['-J-Xdebug', '-J-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=' + str(jdk.debug_port)]
+                    javacCmd += processorArgs
+                    javacCmd += ['@' + argfile.name]
+
+                    if not args.warnAPI:
+                        javacCmd.append('-XDignore.symbol.file')
+                    run(javacCmd)
+                else:
+                    log('Compiling Java sources for {0} with javac (with error-prone)...'.format(p.name))
+                    javaArgs = ['-Xmx1g']
+                    javacArgs = ['-g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir]
+                    javacArgs += processorArgs
+                    javacArgs += ['@' + argfile.name]
+                    if not args.warnAPI:
+                        javacArgs.append('-XDignore.symbol.file')
+                    run_java(javaArgs + ['-cp', os.pathsep.join([jdk.toolsjar, args.error_prone]), 'com.google.errorprone.ErrorProneCompiler'] + javacArgs, javaConfig=jdk)
             else:
                 log('Compiling Java sources for {0} with JDT...'.format(p.name))