Mercurial > hg > graal-compiler
comparison mxtool/mx.py @ 5171:99ad84da5f99
added javadoc command (from Maxine version of mx)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 29 Mar 2012 10:52:12 +0200 |
parents | 7f9010a55761 |
children | 6fbf12b8e572 |
comparison
equal
deleted
inserted
replaced
5170:597eade2394e | 5171:99ad84da5f99 |
---|---|
758 self.jdk = opts.java_home | 758 self.jdk = opts.java_home |
759 self.debug_port = opts.java_dbg_port | 759 self.debug_port = opts.java_dbg_port |
760 self.java = exe_suffix(join(self.jdk, 'bin', 'java')) | 760 self.java = exe_suffix(join(self.jdk, 'bin', 'java')) |
761 self.javac = exe_suffix(join(self.jdk, 'bin', 'javac')) | 761 self.javac = exe_suffix(join(self.jdk, 'bin', 'javac')) |
762 self.javap = exe_suffix(join(self.jdk, 'bin', 'javap')) | 762 self.javap = exe_suffix(join(self.jdk, 'bin', 'javap')) |
763 self.javadoc = exe_suffix(join(self.jdk, 'bin', 'javadoc')) | |
763 | 764 |
764 if not exists(self.java): | 765 if not exists(self.java): |
765 abort('Java launcher derived from JAVA_HOME does not exist: ' + self.java) | 766 abort('Java launcher derived from JAVA_HOME does not exist: ' + self.java) |
766 | 767 |
767 def delAtAndSplit(s): | 768 def delAtAndSplit(s): |
1743 def ideinit(args, suite=None): | 1744 def ideinit(args, suite=None): |
1744 """(re)generate Eclipse and NetBeans project configurations""" | 1745 """(re)generate Eclipse and NetBeans project configurations""" |
1745 eclipseinit(args, suite) | 1746 eclipseinit(args, suite) |
1746 netbeansinit(args, suite) | 1747 netbeansinit(args, suite) |
1747 | 1748 |
1749 def javadoc(args): | |
1750 """generate javadoc for some/all Java projects""" | |
1751 | |
1752 parser = ArgumentParser(prog='mx javadoc') | |
1753 parser.add_argument('--unified', action='store_true', help='put javadoc in a single directory instead of one per project') | |
1754 parser.add_argument('--force', action='store_true', help='(re)generate javadoc even if package-list file exists') | |
1755 parser.add_argument('--projects', action='store', help='comma separated projects to process (omit to process all projects)') | |
1756 parser.add_argument('--argfile', action='store', help='name of file containing extra javadoc options') | |
1757 parser.add_argument('-m', '--memory', action='store', help='-Xmx value to pass to underlying JVM') | |
1758 | |
1759 args = parser.parse_args(args) | |
1760 | |
1761 # build list of projects to be processed | |
1762 candidates = sorted_deps() | |
1763 if args.projects is not None: | |
1764 candidates = [project(name) for name in args.projects.split(',')] | |
1765 | |
1766 def assess_candidate(p, projects): | |
1767 if p in projects: | |
1768 return False | |
1769 if args.force or args.unified or not exists(join(p.dir, 'javadoc', 'package-list')): | |
1770 projects.append(p) | |
1771 return True | |
1772 return False | |
1773 | |
1774 projects = [] | |
1775 for p in candidates: | |
1776 if not p.native: | |
1777 deps = p.all_deps([], includeLibs=False, includeSelf=False) | |
1778 for d in deps: | |
1779 assess_candidate(d, projects) | |
1780 if not assess_candidate(p, projects): | |
1781 log('[package-list file exists - skipping {0}]'.format(p.name)) | |
1782 | |
1783 | |
1784 def find_packages(sourceDirs, pkgs=set()): | |
1785 for sourceDir in sourceDirs: | |
1786 for root, _, files in os.walk(sourceDir): | |
1787 if len([name for name in files if name.endswith('.java')]) != 0: | |
1788 pkgs.add(root[len(sourceDir) + 1:].replace('/','.')) | |
1789 return pkgs | |
1790 | |
1791 extraArgs = [] | |
1792 if args.argfile is not None: | |
1793 extraArgs += ['@' + args.argfile] | |
1794 if args.memory is not None: | |
1795 extraArgs.append('-J-Xmx' + args.memory) | |
1796 | |
1797 if not args.unified: | |
1798 for p in projects: | |
1799 pkgs = find_packages(p.source_dirs(), set()) | |
1800 deps = p.all_deps([], includeLibs=False, includeSelf=False) | |
1801 links = ['-link', 'http://docs.oracle.com/javase/6/docs/api/'] | |
1802 out = join(p.dir, 'javadoc') | |
1803 for d in deps: | |
1804 depOut = join(d.dir, 'javadoc') | |
1805 links.append('-link') | |
1806 links.append(os.path.relpath(depOut, out)) | |
1807 cp = classpath(p.name, includeSelf=True) | |
1808 sp = os.pathsep.join(p.source_dirs()) | |
1809 log('Generating javadoc for {0} in {1}'.format(p.name, out)) | |
1810 run([java().javadoc, '-J-Xmx2g', '-classpath', cp, '-quiet', '-d', out, '-sourcepath', sp] + links + extraArgs + list(pkgs)) | |
1811 log('Generated javadoc for {0} in {1}'.format(p.name, out)) | |
1812 else: | |
1813 pkgs = set() | |
1814 sp = [] | |
1815 names = [] | |
1816 for p in projects: | |
1817 find_packages(p.source_dirs(), pkgs) | |
1818 sp += p.source_dirs() | |
1819 names.append(p.name) | |
1820 | |
1821 links = ['-link', 'http://docs.oracle.com/javase/6/docs/api/'] | |
1822 out = join(_mainSuite.dir, 'javadoc') | |
1823 cp = classpath() | |
1824 sp = os.pathsep.join(sp) | |
1825 log('Generating javadoc for {0} in {1}'.format(', '.join(names), out)) | |
1826 run([java().javadoc, '-classpath', cp, '-quiet', '-d', out, '-sourcepath', sp] + links + extraArgs + list(pkgs)) | |
1827 log('Generated javadoc for {0} in {1}'.format(', '.join(names), out)) | |
1828 | |
1748 def javap(args): | 1829 def javap(args): |
1749 """launch javap with a -classpath option denoting all available classes | 1830 """launch javap with a -classpath option denoting all available classes |
1750 | 1831 |
1751 Run the JDK javap class file disassembler with the following prepended options: | 1832 Run the JDK javap class file disassembler with the following prepended options: |
1752 | 1833 |
1789 'help': [help_, '[command]'], | 1870 'help': [help_, '[command]'], |
1790 'ideclean': [ideclean, ''], | 1871 'ideclean': [ideclean, ''], |
1791 'ideinit': [ideinit, ''], | 1872 'ideinit': [ideinit, ''], |
1792 'projectgraph': [projectgraph, ''], | 1873 'projectgraph': [projectgraph, ''], |
1793 'javap': [javap, ''], | 1874 'javap': [javap, ''], |
1875 'javadoc': [javadoc, '[options]'], | |
1794 'netbeansinit': [netbeansinit, ''], | 1876 'netbeansinit': [netbeansinit, ''], |
1795 'projects': [show_projects, ''], | 1877 'projects': [show_projects, ''], |
1796 } | 1878 } |
1797 | 1879 |
1798 _argParser = ArgParser() | 1880 _argParser = ArgParser() |