diff options
author | Alon Zakai <alonzakai@gmail.com> | 2011-09-25 01:20:34 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2011-09-25 01:20:34 -0700 |
commit | 3b21d884fbcb3c994931278129bec8dea76bb777 (patch) | |
tree | f66854e934cf036d7c6fdca2c91421488dcc5ca7 /emscripten.py | |
parent | c1b363f2f4b60f8ed50964790cc15ccc97baea1a (diff) |
improve header constant parsing
Diffstat (limited to 'emscripten.py')
-rwxr-xr-x | emscripten.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/emscripten.py b/emscripten.py index a26e1346..85ae0cab 100755 --- a/emscripten.py +++ b/emscripten.py @@ -175,8 +175,9 @@ def main(args): header = os.path.join(include_root, header) for line in open(header, 'r'): line = line.replace('\t', ' ') - m = re.match('^ *#define +(?P<name>[\w_]+) +(?P<value>\d+).*', line) + m = re.match('^ *#define +(?P<name>[-\w_.]+) +(?P<value>[-\w_.]+).*', line) if m: + #print 'define!', m.groups() defines[m.group('name')] = m.group('value') m = re.match('^ *#include *["<](?P<name>[\w_.-/]+)[">].*', line) if m: @@ -192,6 +193,25 @@ def main(args): if found: break #assert found, 'Could not find header: ' + m.group('name') if len(defines) > 0: + #print 'zz defines pre: ', defines + def lookup(value): + try: + while not unicode(value).isnumeric(): + value = defines[value] + return value + except: + try: + value = eval(value) + return value + except: + return None + for key, value in defines.items(): + value = lookup(value) + if value is not None: + defines[key] = str(value) + else: + del defines[key] + #print 'zz defines post: ', defines settings['C_DEFINES'] = defines # Compile the assembly to Javascript. |