aboutsummaryrefslogtreecommitdiff
path: root/emscripten.py
diff options
context:
space:
mode:
Diffstat (limited to 'emscripten.py')
-rwxr-xr-xemscripten.py23
1 files changed, 14 insertions, 9 deletions
diff --git a/emscripten.py b/emscripten.py
index 85ae0cab..c103af87 100755
--- a/emscripten.py
+++ b/emscripten.py
@@ -175,9 +175,8 @@ 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>[-\w_.]+).*', 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:
@@ -193,25 +192,31 @@ 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
+ pass
+ try: # 0x300 etc.
+ value = eval(value)
+ return value
+ except:
+ pass
+ try: # CONST1|CONST2
+ parts = map(lookup, value.split('|'))
+ value = reduce(lambda a, b: a|b, map(eval, parts))
+ return value
+ except:
+ pass
+ 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.