blob: 323eec803bcd7b0fadc92650e04848a302bae324 [file] [log] [blame]
import argparse
import subprocess
import json
import os
import re
if __name__== '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('input')
parser.add_argument('output')
parser.add_argument('buildroot')
args = parser.parse_known_args()
# c_args might contain things that are essential for crosscompilation, but
# are not included in cc.cmd_array(), so we have to look them up ourselves
host_cargs = []
buildroot = args[0].buildroot
with open(os.path.join(buildroot, 'meson-info', 'intro-buildoptions.json')) as json_file:
bopts = json.load(json_file)
for opt in bopts:
if opt['name'] == 'c_args' and opt['section'] == 'compiler' and opt['machine'] == 'host':
host_cargs = opt['value']
break
cpp = args[1]
ret = subprocess.run(cpp + host_cargs + [args[0].input], stdout=subprocess.PIPE, check=True)
stdout = ret.stdout.decode('utf8')
with open(args[0].output, 'w') as out:
write = True
for l in stdout.split('\n'):
l = l.strip('\r')
if l.startswith('CUT_OUT_BEGIN'):
write = False
if write and l:
stripped = re.sub('^\s+', '', l)
stripped = re.sub('\s*,\s*', ',', stripped)
if not stripped.isspace() and stripped:
out.write('%s\n' % stripped)
if l.startswith('CUT_OUT_END'):
write = True