Since my last thread, I have successfully built a very old version, 1.13.0, of Emscripten (I believe.)
Now I can use it to build
ioQuake3, as proven by
QuakeJS.
It should be easy because Quake 3 builds VMs with LLVM, but that is where I am having 3 errors.
KeyError
- I know Emscripten isn't made to link modules, and I believe that is what error #1 signifies.
TypeError
- Error #2 is commonly associated with minification/concatenation...
AssertionError
- Seems to have to do with memory.
Anyway, here is that output in the terminal.
SHLIB_CC code/qcommon/q_shared.c
CGAME_CC code/cgame/cg_syscalls.c
LD build/release-js-js/baseq3/cgame.js
Traceback (most recent call last):
File "/usr/lib/emscripten/emscripten.py", line 1428, in <module>
_main(environ=os.environ)
File "/usr/lib/emscripten/emscripten.py", line 1416, in _main
temp_files.run_and_clean(lambda: main(
File "/usr/lib/emscripten/tools/tempfiles.py", line 39, in run_and_clean
return func()
File "/usr/lib/emscripten/emscripten.py", line 1424, in <lambda>
DEBUG_CACHE=DEBUG_CACHE,
File "/usr/lib/emscripten/emscripten.py", line 1311, in main
jcache=jcache, temp_files=temp_files, DEBUG=DEBUG, DEBUG_CACHE=DEBUG_CACHE)
File "/usr/lib/emscripten/emscripten.py", line 1114, in emscript_fast
for key, value in forwarded_json['Variables']['globals'].iteritems():
KeyError: 'Variables'
/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:272
throw new JS_Parse_Error(message, line, col, pos);
^
TypeError: (intermediate value) is not a function
at new JS_Parse_Error (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:261:21)
at js_error (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:272:15)
at croak (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:742:17)
at token_error (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:749:17)
at unexpected (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:755:17)
at block_ (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:998:40)
at /usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:978:43
at /usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:982:29
at /usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:1112:43
at maybe_unary (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:1209:27)
Traceback (most recent call last):
File "/usr/lib/emscripten/emcc", line 1702, in <module>
flush_js_optimizer_queue()
File "/usr/lib/emscripten/emcc", line 1630, in flush_js_optimizer_queue
final = shared.Building.js_optimizer(final, js_optimizer_queue, jcache, debug_level >= 4, js_optimizer_extra_info)
File "/usr/lib/emscripten/tools/shared.py", line 1449, in js_optimizer
return js_optimizer.run(filename, passes, listify(NODE_JS), jcache, debug, extra_info)
File "/usr/lib/emscripten/tools/js_optimizer.py", line 347, in run
return temp_files.run_and_clean(lambda: run_on_js(filename, passes, js_engine, jcache, source_map, extra_info))
File "/usr/lib/emscripten/tools/tempfiles.py", line 39, in run_and_clean
return func()
File "/usr/lib/emscripten/tools/js_optimizer.py", line 347, in <lambda>
return temp_files.run_and_clean(lambda: run_on_js(filename, passes, js_engine, jcache, source_map, extra_info))
File "/usr/lib/emscripten/tools/js_optimizer.py", line 269, in run_on_js
filenames = pool.map(run_on_chunk, commands, chunksize=1)
File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 227, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 528, in get
raise self._value
AssertionError: Error in js optimizer:
make[2]: *** [Makefile:2301: build/release-js-js/baseq3/cgame.js] Error 1
rm build/release-js-js/renderergl2/glsl/pshadow_fp.c build/release-js-js/renderergl2/glsl/pshadow_vp.c build/release-js-js/renderergl2/glsl/down4x_fp.c
build/release-js-js/renderergl2/glsl/down4x_vp.c build/release-js-js/renderergl2/glsl/ssao_fp.c build/release-js-js/renderergl2/glsl/ssao_vp.c
build/release-js-js/renderergl2/glsl/calclevels4x_fp.c build/release-js-js/renderergl2/glsl/calclevels4x_vp.c
build/release-js-js/renderergl2/glsl/shadowfill_vp.c build/release-js-js/renderergl2/glsl/lightall_fp.c build/release-js-js/renderergl2/glsl/lightall_vp.c
build/release-js-js/renderergl2/glsl/generic_fp.c build/release-js-js/renderergl2/glsl/generic_vp.c build/release-js-js/renderergl2/glsl/bokeh_vp.c
build/release-js-js/renderergl2/glsl/fogpass_vp.c build/release-js-js/renderergl2/glsl/bokeh_fp.c build/release-js-js/renderergl2/glsl/shadowfill_fp.c
build/release-js-js/renderergl2/glsl/dlight_fp.c build/release-js-js/renderergl2/glsl/dlight_vp.c build/release-js-js/renderergl2/glsl/fogpass_fp.c
build/release-js-js/renderergl2/glsl/depthblur_fp.c build/release-js-js/renderergl2/glsl/depthblur_vp.c build/release-js-js/renderergl2/glsl/shadowmask_fp.c
build/release-js-js/renderergl2/glsl/shadowmask_vp.c build/release-js-js/renderergl2/glsl/texturecolor_vp.c
build/release-js-js/renderergl2/glsl/texturecolor_fp.c build/release-js-js/renderergl2/glsl/tonemap_fp.c build/release-js-js/renderergl2/glsl/tonemap_vp.c
make[2]: Leaving directory '/home/jrs/Server/try3/quakejs/ioq3'
make[1]: *** [Makefile:1325: targets] Error 2
make[1]: Leaving directory '/home/jrs/Server/try3/quakejs/ioq3'
make: *** [Makefile:1263: release] Error 2
Any help trying to sort this out would be appreciated! I have a feeling there's a way to fix this. ( I just cloned QuakeJS. The developer blogged Quake VMs in JS.) In the meantime, I'm going to try installing Java to see if Closure Compiler is necessary.
Thanks again,
James