aboutsummaryrefslogtreecommitdiff
path: root/emscripten.py
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-09-25 01:20:34 -0700
committerAlon Zakai <alonzakai@gmail.com>2011-09-25 01:20:34 -0700
commit3b21d884fbcb3c994931278129bec8dea76bb777 (patch)
treef66854e934cf036d7c6fdca2c91421488dcc5ca7 /emscripten.py
parentc1b363f2f4b60f8ed50964790cc15ccc97baea1a (diff)
improve header constant parsing
Diffstat (limited to 'emscripten.py')
-rwxr-xr-xemscripten.py22
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.