waf/docs/book/examples/scenarios_unknown/evil_comp.py

43 lines
936 B
Python
Executable File

#! /usr/bin/env python
"""
example of an ill-behaving compiler
* the output files cannot be known in advance
* the output file names are written to stdout
"""
import sys, os
def write_file(filename, contents):
a_file = None
try:
a_file = open(filename, 'w')
a_file.write(contents)
finally:
if a_file:
a_file.close()
name = sys.argv[1]
file = open(name, 'r')
txt = file.read()
file.close()
lst = txt.splitlines()
for line in lst:
source_filename = line.strip()
if not source_filename: continue
(dirs, name) = os.path.split(source_filename)
try:
os.makedirs(dirs)
except:
pass
header_filename = os.path.splitext(source_filename)[0] + '.h'
varname = name.replace('.', '_')
write_file(header_filename, 'int %s=4;\n' % varname)
write_file(source_filename, '#include "%s"\nint get_%s() {return %s;}\n' % (os.path.split(header_filename)[1], varname, varname))
print (source_filename)
print (header_filename)