34 lines
914 B
Python
Executable file
34 lines
914 B
Python
Executable file
import os
|
|
import re
|
|
import sys
|
|
|
|
DEFINE_EXTRACT_REGEX = re.compile('^ *# *define (\w*)', re.MULTILINE)
|
|
|
|
def main(out_dir, headers):
|
|
defines = []
|
|
for filename in headers:
|
|
with open(filename, 'r') as f:
|
|
content = f.read()
|
|
defines += read_defines(content)
|
|
|
|
push_and_undef = ''
|
|
for define in defines:
|
|
push_and_undef += '#pragma push_macro("%s")\n' % define
|
|
push_and_undef += '#undef %s\n' % define
|
|
with open(os.path.join(out_dir, 'push_and_undef_node_defines.h'), 'w') as o:
|
|
o.write(push_and_undef)
|
|
|
|
pop = ''
|
|
for define in defines:
|
|
pop += '#pragma pop_macro("%s")\n' % define
|
|
with open(os.path.join(out_dir, 'pop_node_defines.h'), 'w') as o:
|
|
o.write(pop)
|
|
|
|
def read_defines(content):
|
|
defines = []
|
|
for match in DEFINE_EXTRACT_REGEX.finditer(content):
|
|
defines.append(match.group(1))
|
|
return defines
|
|
|
|
if __name__ == '__main__':
|
|
main(sys.argv[1], sys.argv[2:])
|