blob: 5c4c9e816b2c61cbd078517c31f2133d637658ea [file] [log] [blame]
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -07001#!/usr/bin/env python2
2
3import argparse
4import os
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -07005import tempfile
6from utils import shellcmd
Jim Stichnoth16178a12014-09-02 14:11:57 -07007from utils import FindBaseNaCl
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -07008
9if __name__ == '__main__':
10 argparser = argparse.ArgumentParser()
11 argparser.add_argument('cfile', nargs='+', type=str,
12 help='C file(s) to convert')
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -070013 argparser.add_argument('--dir', nargs='?', type=str, default='.',
Jim Stichnoth65d8d532014-09-11 09:47:59 -070014 help='Output directory. Default "%(default)s".')
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -070015 argparser.add_argument('--disable-verify', action='store_true')
16 args = argparser.parse_args()
17
Jim Stichnoth16178a12014-09-02 14:11:57 -070018 nacl_root = FindBaseNaCl()
19 # Prepend bin to $PATH.
20 os.environ['PATH'] = (
21 nacl_root + '/toolchain/linux_x86/pnacl_newlib/bin' + os.pathsep +
22 os.pathsep + os.environ['PATH'])
Jim Stichnoth5bc2b1d2014-05-22 13:38:48 -070023
24 tempdir = tempfile.mkdtemp()
25
26 for cname in args.cfile:
27 basename = os.path.splitext(cname)[0]
28 llname = os.path.join(tempdir, basename + '.ll')
29 pnaclname = basename + '.pnacl.ll'
30 pnaclname = os.path.join(args.dir, pnaclname)
31
Jim Stichnoth16178a12014-09-02 14:11:57 -070032 shellcmd('pnacl-clang -O2 -c {0} -o {1}'.format(cname, llname))
33 shellcmd('pnacl-opt ' +
34 '-pnacl-abi-simplify-preopt -pnacl-abi-simplify-postopt' +
35 ('' if args.disable_verify else
36 ' -verify-pnaclabi-module -verify-pnaclabi-functions') +
37 ' -pnaclabi-allow-debug-metadata'
38 ' {0} -S -o {1}'.format(llname, pnaclname))