Mercurial > hg > truffle
comparison mxtool/mx.py @ 15496:f5eba273a4f2
mx: factored out detection of JDT compilation
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 05 May 2014 13:17:32 +0200 |
parents | 5d0dd6a6f6b3 |
children | 1f28c463e452 |
comparison
equal
deleted
inserted
replaced
15495:9c66a589ef63 | 15496:f5eba273a4f2 |
---|---|
1809 | 1809 |
1810 def _defaultEcjPath(): | 1810 def _defaultEcjPath(): |
1811 return get_env('JDT', join(_primary_suite.mxDir, 'ecj.jar')) | 1811 return get_env('JDT', join(_primary_suite.mxDir, 'ecj.jar')) |
1812 | 1812 |
1813 class JavaCompileTask: | 1813 class JavaCompileTask: |
1814 def __init__(self, args, proj, reason, javafilelist, jdk, outputDir, deps): | 1814 def __init__(self, args, proj, reason, javafilelist, jdk, outputDir, jdtJar, deps): |
1815 self.proj = proj | 1815 self.proj = proj |
1816 self.reason = reason | 1816 self.reason = reason |
1817 self.javafilelist = javafilelist | 1817 self.javafilelist = javafilelist |
1818 self.deps = deps | 1818 self.deps = deps |
1819 self.jdk = jdk | 1819 self.jdk = jdk |
1820 self.outputDir = outputDir | 1820 self.outputDir = outputDir |
1821 self.done = False | 1821 self.done = False |
1822 self.jdtJar = jdtJar | |
1822 self.args = args | 1823 self.args = args |
1823 | 1824 |
1824 def __str__(self): | 1825 def __str__(self): |
1825 return self.proj.name | 1826 return self.proj.name |
1826 | 1827 |
1851 outputDir = self.outputDir | 1852 outputDir = self.outputDir |
1852 compliance = str(jdk.javaCompliance) | 1853 compliance = str(jdk.javaCompliance) |
1853 cp = classpath(self.proj.name, includeSelf=True) | 1854 cp = classpath(self.proj.name, includeSelf=True) |
1854 toBeDeleted = [argfileName] | 1855 toBeDeleted = [argfileName] |
1855 | 1856 |
1856 jdtJar = None | |
1857 if not args.javac and args.jdt is not None: | |
1858 if not args.jdt.endswith('.jar'): | |
1859 abort('Path for Eclipse batch compiler does not look like a jar file: ' + args.jdt) | |
1860 jdtJar = args.jdt | |
1861 if not exists(jdtJar): | |
1862 if os.path.abspath(jdtJar) == os.path.abspath(_defaultEcjPath()) and get_env('JDT', None) is None: | |
1863 # Silently ignore JDT if default location is used but does not exist | |
1864 jdtJar = None | |
1865 else: | |
1866 abort('Eclipse batch compiler jar does not exist: ' + args.jdt) | |
1867 | |
1868 try: | 1857 try: |
1869 if not jdtJar: | 1858 if not self.jdtJar: |
1870 mainJava = java() | 1859 mainJava = java() |
1871 if not args.error_prone: | 1860 if not args.error_prone: |
1872 self.logCompilation('javac') | 1861 self.logCompilation('javac') |
1873 javacCmd = [mainJava.javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir, '-bootclasspath', jdk.bootclasspath(), '-endorseddirs', jdk.endorseddirs(), '-extdirs', jdk.extdirs()] | 1862 javacCmd = [mainJava.javac, '-g', '-J-Xmx1g', '-source', compliance, '-target', compliance, '-classpath', cp, '-d', outputDir, '-bootclasspath', jdk.bootclasspath(), '-endorseddirs', jdk.endorseddirs(), '-extdirs', jdk.extdirs()] |
1874 if jdk.debug_port is not None: | 1863 if jdk.debug_port is not None: |
1889 javacArgs.append('-XDignore.symbol.file') | 1878 javacArgs.append('-XDignore.symbol.file') |
1890 run_java(javaArgs + ['-cp', os.pathsep.join([mainJava.toolsjar, args.error_prone]), 'com.google.errorprone.ErrorProneCompiler'] + javacArgs) | 1879 run_java(javaArgs + ['-cp', os.pathsep.join([mainJava.toolsjar, args.error_prone]), 'com.google.errorprone.ErrorProneCompiler'] + javacArgs) |
1891 else: | 1880 else: |
1892 self.logCompilation('JDT') | 1881 self.logCompilation('JDT') |
1893 | 1882 |
1894 jdtVmArgs = ['-Xmx1g', '-jar', jdtJar] | 1883 jdtVmArgs = ['-Xmx1g', '-jar', self.jdtJar] |
1895 | 1884 |
1896 jdtArgs = ['-' + compliance, | 1885 jdtArgs = ['-' + compliance, |
1897 '-cp', cp, '-g', '-enableJavadoc', | 1886 '-cp', cp, '-g', '-enableJavadoc', |
1898 '-d', outputDir, | 1887 '-d', outputDir, |
1899 '-bootclasspath', jdk.bootclasspath(), | 1888 '-bootclasspath', jdk.bootclasspath(), |
1957 compilerSelect = parser.add_mutually_exclusive_group() | 1946 compilerSelect = parser.add_mutually_exclusive_group() |
1958 compilerSelect.add_argument('--error-prone', dest='error_prone', help='path to error-prone.jar', metavar='<path>') | 1947 compilerSelect.add_argument('--error-prone', dest='error_prone', help='path to error-prone.jar', metavar='<path>') |
1959 compilerSelect.add_argument('--jdt', help='path to ecj.jar, the Eclipse batch compiler', default=_defaultEcjPath(), metavar='<path>') | 1948 compilerSelect.add_argument('--jdt', help='path to ecj.jar, the Eclipse batch compiler', default=_defaultEcjPath(), metavar='<path>') |
1960 compilerSelect.add_argument('--force-javac', action='store_true', dest='javac', help='use javac despite ecj.jar is found or not') | 1949 compilerSelect.add_argument('--force-javac', action='store_true', dest='javac', help='use javac despite ecj.jar is found or not') |
1961 | 1950 |
1962 | |
1963 if suppliedParser: | 1951 if suppliedParser: |
1964 parser.add_argument('remainder', nargs=REMAINDER, metavar='...') | 1952 parser.add_argument('remainder', nargs=REMAINDER, metavar='...') |
1965 | 1953 |
1966 args = parser.parse_args(args) | 1954 args = parser.parse_args(args) |
1955 | |
1956 jdtJar = None | |
1957 if not args.javac and args.jdt is not None: | |
1958 if not args.jdt.endswith('.jar'): | |
1959 abort('Path for Eclipse batch compiler does not look like a jar file: ' + args.jdt) | |
1960 jdtJar = args.jdt | |
1961 if not exists(jdtJar): | |
1962 if os.path.abspath(jdtJar) == os.path.abspath(_defaultEcjPath()) and get_env('JDT', None) is None: | |
1963 # Silently ignore JDT if default location is used but does not exist | |
1964 jdtJar = None | |
1965 else: | |
1966 abort('Eclipse batch compiler jar does not exist: ' + args.jdt) | |
1967 | 1967 |
1968 if args.only is not None: | 1968 if args.only is not None: |
1969 # N.B. This build will not include dependencies including annotation processor dependencies | 1969 # N.B. This build will not include dependencies including annotation processor dependencies |
1970 sortedProjects = [project(name) for name in args.only.split(',')] | 1970 sortedProjects = [project(name) for name in args.only.split(',')] |
1971 else: | 1971 else: |
2098 | 2098 |
2099 if len(javafilelist) == 0: | 2099 if len(javafilelist) == 0: |
2100 logv('[no Java sources for {0} - skipping]'.format(p.name)) | 2100 logv('[no Java sources for {0} - skipping]'.format(p.name)) |
2101 continue | 2101 continue |
2102 | 2102 |
2103 task = JavaCompileTask(args, p, buildReason, javafilelist, jdk, outputDir, taskDeps) | 2103 task = JavaCompileTask(args, p, buildReason, javafilelist, jdk, outputDir, jdtJar, taskDeps) |
2104 | 2104 |
2105 if args.parallelize: | 2105 if args.parallelize: |
2106 # Best to initialize class paths on main process | 2106 # Best to initialize class paths on main process |
2107 jdk.bootclasspath() | 2107 jdk.bootclasspath() |
2108 task.proc = None | 2108 task.proc = None |