# HG changeset patch # User Gilles Duboscq # Date 1396000008 -3600 # Node ID 2d1cc640512c3646fbf7246e86cff3e8124edbe4 # Parent 898e6a259f6779adba48b6b22eb830791662e7ef Add possibility to build using error-prone instead of javac. diff -r 898e6a259f67 -r 2d1cc640512c mxtool/mx.py --- 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='') 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='') 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))