OLD | NEW |
1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
2 | 2 |
3 import argparse | 3 import argparse |
4 import os | 4 import os |
5 import re | 5 import re |
6 import subprocess | 6 import subprocess |
7 import sys | 7 import sys |
8 import tempfile | 8 import tempfile |
9 | 9 |
10 from utils import shellcmd | 10 from utils import shellcmd |
(...skipping 19 matching lines...) Expand all Loading... |
30 argparser = argparse.ArgumentParser(description=desc) | 30 argparser = argparse.ArgumentParser(description=desc) |
31 argparser.add_argument('--test', required=True, action='append', | 31 argparser.add_argument('--test', required=True, action='append', |
32 metavar='TESTFILE_LIST', | 32 metavar='TESTFILE_LIST', |
33 help='List of C/C++/.ll files with test functions') | 33 help='List of C/C++/.ll files with test functions') |
34 argparser.add_argument('--driver', required=True, | 34 argparser.add_argument('--driver', required=True, |
35 metavar='DRIVER', | 35 metavar='DRIVER', |
36 help='Driver program') | 36 help='Driver program') |
37 argparser.add_argument('--target', required=False, default='x8632', | 37 argparser.add_argument('--target', required=False, default='x8632', |
38 choices=arch_map.keys(), | 38 choices=arch_map.keys(), |
39 metavar='TARGET', | 39 metavar='TARGET', |
40 help='Translation target architecture') | 40 help='Translation target architecture.' + |
| 41 ' Default %(default)s.') |
41 argparser.add_argument('-O', required=False, default='2', dest='optlevel', | 42 argparser.add_argument('-O', required=False, default='2', dest='optlevel', |
42 choices=['m1', '-1', '0', '1', '2'], | 43 choices=['m1', '-1', '0', '1', '2'], |
43 metavar='OPTLEVEL', | 44 metavar='OPTLEVEL', |
44 help='Optimization level ' + | 45 help='Optimization level ' + |
45 '(m1 and -1 are equivalent)') | 46 '(m1 and -1 are equivalent).' + |
| 47 ' Default %(default)s.') |
46 argparser.add_argument('--mattr', required=False, default='sse2', | 48 argparser.add_argument('--mattr', required=False, default='sse2', |
47 dest='attr', choices=['sse2', 'sse4.1'], | 49 dest='attr', choices=['sse2', 'sse4.1'], |
48 metavar='ATTRIBUTE', help='Target attribute') | 50 metavar='ATTRIBUTE', |
| 51 help='Target attribute. Default %(default)s.') |
49 argparser.add_argument('--prefix', required=True, | 52 argparser.add_argument('--prefix', required=True, |
50 metavar='SZ_PREFIX', | 53 metavar='SZ_PREFIX', |
51 help='String prepended to Subzero symbol names') | 54 help='String prepended to Subzero symbol names') |
52 argparser.add_argument('--output', '-o', required=True, | 55 argparser.add_argument('--output', '-o', required=True, |
53 metavar='EXECUTABLE', | 56 metavar='EXECUTABLE', |
54 help='Executable to produce') | 57 help='Executable to produce') |
55 argparser.add_argument('--dir', required=False, default='.', | 58 argparser.add_argument('--dir', required=False, default='.', |
56 metavar='OUTPUT_DIR', | 59 metavar='OUTPUT_DIR', |
57 help='Output directory for all files') | 60 help='Output directory for all files.' + |
| 61 ' Default "%(default)s".') |
58 argparser.add_argument('--crosstest-bitcode', required=False, | 62 argparser.add_argument('--crosstest-bitcode', required=False, |
59 default=1, type=int, | 63 default=1, type=int, |
60 help='Compile non-subzero crosstest object file ' + | 64 help='Compile non-subzero crosstest object file ' + |
61 'from the same bitcode as the subzero object. ' + | 65 'from the same bitcode as the subzero object. ' + |
62 'If 0, then compile it straight from source.') | 66 'If 0, then compile it straight from source.' + |
| 67 ' Default %(default)d.') |
63 args = argparser.parse_args() | 68 args = argparser.parse_args() |
64 | 69 |
65 nacl_root = FindBaseNaCl() | 70 nacl_root = FindBaseNaCl() |
66 # Prepend host_x86_32/bin to $PATH. | 71 # Prepend host_x86_32/bin to $PATH. |
67 os.environ['PATH'] = nacl_root + \ | 72 os.environ['PATH'] = nacl_root + \ |
68 '/toolchain/linux_x86/pnacl_newlib/host_x86_32/bin' + \ | 73 '/toolchain/linux_x86/pnacl_newlib/host_x86_32/bin' + \ |
69 os.pathsep + os.environ['PATH'] | 74 os.pathsep + os.environ['PATH'] |
70 | 75 |
71 objs = [] | 76 objs = [] |
72 remove_internal = re.compile('^define internal ') | 77 remove_internal = re.compile('^define internal ') |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 objs.append(bitcode) | 140 objs.append(bitcode) |
136 | 141 |
137 # Use 'clang szrt.c' -or- 'clang++ szrt.cpp' | 142 # Use 'clang szrt.c' -or- 'clang++ szrt.cpp' |
138 objs.append(( | 143 objs.append(( |
139 '{root}/toolchain_build/src/subzero/runtime/szrt.{ext}' | 144 '{root}/toolchain_build/src/subzero/runtime/szrt.{ext}' |
140 ).format(root=nacl_root, ext='c' if pure_c else 'cpp')) | 145 ).format(root=nacl_root, ext='c' if pure_c else 'cpp')) |
141 linker = 'clang' if pure_c else 'clang++' | 146 linker = 'clang' if pure_c else 'clang++' |
142 shellcmd([linker, '-g', '-m32', args.driver] + | 147 shellcmd([linker, '-g', '-m32', args.driver] + |
143 objs + | 148 objs + |
144 ['-lm', '-lpthread', '-o', os.path.join(args.dir, args.output)]) | 149 ['-lm', '-lpthread', '-o', os.path.join(args.dir, args.output)]) |
OLD | NEW |