#!/usr/bin/env python2 ''' simple tool to run emcc and clang on C testcases each in a separate subdir of the current dir ''' import os, sys __rootpath__ = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def path_from_root(*pathelems): return os.path.join(__rootpath__, *pathelems) sys.path += [path_from_root('')] import tools.shared from tools.shared import * curr = os.getcwd() for d in os.listdir(curr): print '(' + d + ') ', os.chdir(curr) if os.path.isdir(d): os.chdir(d) for c in os.listdir('.'): if c.endswith('.c'): execute([EMCC, c, '-O2', '--embed-file', 'input.txt']) js = jsrun.run_js('a.out.js', filter(lambda x: x != '-w', SPIDERMONKEY_ENGINE), stdout=PIPE) execute([CLANG_CC, '-m32', c]) n1 = execute(['./a.out'], stdout=PIPE)[0] execute([CLANG_CC, '-m32', c, '-O2']) n2 = execute(['./a.out'], stdout=PIPE)[0] execute(['gcc', c, '-m32']) n3 = execute(['./a.out'], stdout=PIPE)[0] if js == n1: print 'ok' elif js == n2: print 'emcc and clang -O2 both equally wrong' elif js == n3: print 'emcc agrees with gcc, so probably ok' else: print print 'js ', js, print 'c0 ', n1, print 'c2 ', n2, print 'g ', n3, print 'fail!!!', d