12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import sys
- import subprocess
- import argparse
- import os
- header = '''\
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wunused-parameter"
- #pragma GCC diagnostic ignored "-Wmissing-braces"
- #pragma GCC diagnostic ignored "-Wuninitialized"
- #pragma GCC diagnostic ignored "-Wreturn-type"
- #pragma GCC diagnostic ignored "-Wmissing-field-initializers"
- #endif
- '''
- footer = '''
- #ifdef __GNUC__
- #pragma GCC diagnostic pop
- #endif
- '''
- def mkdir_p(directory):
- if not os.path.exists(directory):
- os.makedirs(directory)
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('-t', '--tool')
- parser.add_argument('-c', '--input')
- parser.add_argument('-o', '--output')
- args = parser.parse_args()
- tmpdir = args.output + '.f2c'
- mkdir_p(tmpdir)
- # should parse includes, really
- p = subprocess.Popen(
- [args.tool, '-w', '-R', '-a', '-I' + os.path.dirname(args.input), '-T' + tmpdir],
- stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
- stdout, stderr = p.communicate(input=open(args.input).read())
- ret = p.wait()
- if ret:
- print >>sys.stderr, 'f2c failed: %s, %s' % (stderr, ret)
- sys.exit(ret)
- if 'Error' in stderr:
- print >>sys.stderr, stderr
- with open(args.output, 'w') as f:
- f.write(header)
- f.write(stdout)
- f.write(footer)
|