Difference between revisions of "Spcomp (Emscripten)"
(Created page with "{{Lowercase_title}} In <tt>sourcepawn/compiler</tt>, clone Emscripten to <tt>./emscripten</tt> and copy <tt>../../plugins/include</tt> to <tt>./include</tt>. Make sure you r...") |
|||
Line 20: | Line 20: | ||
Enabling optimisations currently breaks emcc, leave them disabled. | Enabling optimisations currently breaks emcc, leave them disabled. | ||
+ | |||
+ | UPDATE: Due to a small patch to spcomp, optimisation is now possible. You can also enable the closure compiler if you're writing your own frontend. | ||
+ | |||
+ | emscripten/emcc -O3 --closure 0 -DNDEBUG -fno-strict-aliasing -I . -I ../../public/ -I ../../public/sourcepawn/ \ | ||
+ | -D_GNU_SOURCE -Wall -DLINUX -DHAVE_STDINT_H -DAMX_ANSIONLY -Dstricmp=strcasecmp -m32 -fno-exceptions -fno-rtti \ | ||
+ | binreloc.c libpawnc.c lstring.c memfile.c pawncc.c sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c scexpand.c sci18n.c sclist.c \ | ||
+ | scmemfil.c scstate.c sctracker.c scvars.c sp_file.c sp_symhash.c zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c \ | ||
+ | zlib/gzio.c zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c zlib/uncompr.c zlib/zutil.c \ | ||
+ | --compression emscripten/third_party/lzma.js/lzma-native,emscripten/third_party/lzma.js/lzma-decoder.js,LZMA.decompress \ | ||
+ | -o spcomp.html --preload-file include -Wno-format -Wno-parentheses -Wno-unused -Wno-sometimes-uninitialized -funroll-loops \ | ||
+ | -ldl -lm -lgcc | ||
spcomp won't be able to find the include folder automatically, make sure you invoke it with <tt>-iinclude</tt>. | spcomp won't be able to find the include folder automatically, make sure you invoke it with <tt>-iinclude</tt>. |
Latest revision as of 14:38, 2 May 2013
In sourcepawn/compiler, clone Emscripten to ./emscripten and copy ../../plugins/include to ./include.
Make sure you run the tests from https://github.com/kripken/emscripten/wiki/Tutorial.
You need to compile the LZMA encoder for compression to work:
cd ./emscripten/third_party/lzma.js ./doit.sh cd ../../../
emscripten/emcc -O0 --closure 0 -DNDEBUG -fno-strict-aliasing -I . -I ../../public/ -I ../../public/sourcepawn/ \ -D_GNU_SOURCE -Wall -DLINUX -DHAVE_STDINT_H -DAMX_ANSIONLY -Dstricmp=strcasecmp -m32 -fno-exceptions -fno-rtti \ binreloc.c libpawnc.c lstring.c memfile.c pawncc.c sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c scexpand.c sci18n.c sclist.c \ scmemfil.c scstate.c sctracker.c scvars.c sp_file.c sp_symhash.c zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c \ zlib/gzio.c zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c zlib/uncompr.c zlib/zutil.c \ --compression emscripten/third_party/lzma.js/lzma-native,emscripten/third_party/lzma.js/lzma-decoder.js,LZMA.decompress \ -o spcomp.html --preload-file include -Wno-format -Wno-parentheses -Wno-unused -Wno-sometimes-uninitialized -funroll-loops \ -ldl -lm -lgcc -s UNALIGNED_MEMORY=1
Enabling optimisations currently breaks emcc, leave them disabled.
UPDATE: Due to a small patch to spcomp, optimisation is now possible. You can also enable the closure compiler if you're writing your own frontend.
emscripten/emcc -O3 --closure 0 -DNDEBUG -fno-strict-aliasing -I . -I ../../public/ -I ../../public/sourcepawn/ \ -D_GNU_SOURCE -Wall -DLINUX -DHAVE_STDINT_H -DAMX_ANSIONLY -Dstricmp=strcasecmp -m32 -fno-exceptions -fno-rtti \ binreloc.c libpawnc.c lstring.c memfile.c pawncc.c sc1.c sc2.c sc3.c sc4.c sc5.c sc6.c sc7.c scexpand.c sci18n.c sclist.c \ scmemfil.c scstate.c sctracker.c scvars.c sp_file.c sp_symhash.c zlib/adler32.c zlib/compress.c zlib/crc32.c zlib/deflate.c \ zlib/gzio.c zlib/infback.c zlib/inffast.c zlib/inflate.c zlib/inftrees.c zlib/trees.c zlib/uncompr.c zlib/zutil.c \ --compression emscripten/third_party/lzma.js/lzma-native,emscripten/third_party/lzma.js/lzma-decoder.js,LZMA.decompress \ -o spcomp.html --preload-file include -Wno-format -Wno-parentheses -Wno-unused -Wno-sometimes-uninitialized -funroll-loops \ -ldl -lm -lgcc
spcomp won't be able to find the include folder automatically, make sure you invoke it with -iinclude.