| 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 subprocess | 5 import subprocess |
| 6 import sys | 6 import sys |
| 7 import tempfile | 7 import tempfile |
| 8 | 8 |
| 9 import targets | 9 import targets |
| 10 from utils import shellcmd | 10 from utils import shellcmd |
| (...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 170 objs.append(obj_llc) | 170 objs.append(obj_llc) |
| 171 else: | 171 else: |
| 172 objs.append(arg) | 172 objs.append(arg) |
| 173 | 173 |
| 174 # Add szrt_sb_${target}.o or szrt_native_${target}.o. | 174 # Add szrt_sb_${target}.o or szrt_native_${target}.o. |
| 175 objs.append(( | 175 objs.append(( |
| 176 '{root}/toolchain_build/src/subzero/build/runtime/' + | 176 '{root}/toolchain_build/src/subzero/build/runtime/' + |
| 177 'szrt_{sb}_' + args.target + '.o' | 177 'szrt_{sb}_' + args.target + '.o' |
| 178 ).format(root=nacl_root, sb='sb' if args.sandbox else 'native')) | 178 ).format(root=nacl_root, sb='sb' if args.sandbox else 'native')) |
| 179 pure_c = os.path.splitext(args.driver)[1] == '.c' | 179 pure_c = os.path.splitext(args.driver)[1] == '.c' |
| 180 |
| 181 # TargetX8664 is ilp32, but clang does not currently support such |
| 182 # configuration. In order to run the crosstests we play nasty, dangerous |
| 183 # tricks with the stack pointer. |
| 184 needs_stack_hack = (args.target == 'x8664') |
| 185 stack_hack_params = [] |
| 186 if needs_stack_hack: |
| 187 shellcmd('{bin}/clang -g -o stack_hack.x8664.{key}.o -c ' |
| 188 'stack_hack.x8664.c'.format(bin=bindir, key=key)) |
| 189 stack_hack_params.append('-DX8664_STACK_HACK') |
| 190 stack_hack_params.append('stack_hack.x8664.{key}.o'.format(key=key)) |
| 191 |
| 180 # Set compiler to clang, clang++, pnacl-clang, or pnacl-clang++. | 192 # Set compiler to clang, clang++, pnacl-clang, or pnacl-clang++. |
| 181 compiler = '{bin}/{prefix}{cc}'.format( | 193 compiler = '{bin}/{prefix}{cc}'.format( |
| 182 bin=bindir, prefix='pnacl-' if args.sandbox else '', | 194 bin=bindir, prefix='pnacl-' if args.sandbox else '', |
| 183 cc='clang' if pure_c else 'clang++') | 195 cc='clang' if pure_c else 'clang++') |
| 184 sb_native_args = (['-O0', '--pnacl-allow-native', | 196 sb_native_args = (['-O0', '--pnacl-allow-native', |
| 185 '-arch', target_info.target, | 197 '-arch', target_info.target, |
| 186 '-Wn,-defsym=__Sz_AbsoluteZero=0'] | 198 '-Wn,-defsym=__Sz_AbsoluteZero=0'] |
| 187 if args.sandbox else | 199 if args.sandbox else |
| 188 ['-g', '-target=' + triple, | 200 ['-g', '-target=' + triple, |
| 189 '-lm', '-lpthread', | 201 '-lm', '-lpthread', |
| 190 '-Wl,--defsym=__Sz_AbsoluteZero=0'] + | 202 '-Wl,--defsym=__Sz_AbsoluteZero=0'] + |
| 191 target_info.cross_headers) | 203 target_info.cross_headers) |
| 192 shellcmd([compiler, args.driver] + objs + | 204 shellcmd([compiler] + stack_hack_params + [args.driver] + objs + |
| 193 ['-o', os.path.join(args.dir, args.output)] + sb_native_args) | 205 ['-o', os.path.join(args.dir, args.output)] + sb_native_args) |
| 194 | 206 |
| 195 if __name__ == '__main__': | 207 if __name__ == '__main__': |
| 196 main() | 208 main() |
| OLD | NEW |