I may be misunderstanding what you're doing, but if you're generating JavaScript code then you shouldn't need MC JIT or the interpreter: the JavaScript code gets emitted from LLVM IR, whereas MC JIT and the interpreter consume LLVM IR to generate ARM instructions or interpret the IR. It's a bit clunky that they're built into fastcomp, but disentangling then from the build wasn't worth it, and it's nice to keep the compiler fully functional (not just having one possible backend).
As Alon said it would be great if you sent your patches for the bionic build to upstream LLVM, feel free to add me to the code review. These parts probably haven't changed much upstream versus the current fastcomp base (LLVM 3.4). I'm in the process of updating the branch to LLVM 3.5 (which should be stable soon), so any patch you send upstream will be very close to my soon-to-be-update version (and in the future we'll be updating things more frequently than every LLVM release). On Sat, Aug 30, 2014 at 11:51 PM, jrbrusseau via emscripten-discuss < [email protected]> wrote: > Success!!! > > I did a little searching and found out that lli's default jit doesn't work > very well on Arm so I tried to switch it to using mc-jit instead. It took > me forever to figure out the python script I needed to edit in order to add > the -use-mcjit flag to lli (tools/gen_struct_info.py). But sadly I got a > message saying "No available targets are compatible with this triple, see > -version for the available targets." I'm not sure why if it was to do with > how I built fastcomp or if it's just and order version because I was under > the impression that mc-jit was well supported on armv7-a. But I discovered > another option in lli: -force-interpreter. So I used that flag and it > works! I tested hello_world.c again and it generated a working html and js > file. > > Next, I need to get everything to work in Android Terminal Emulator so I > can actually use it on a phone without rooting. I also would like to figure > out if I can rebuild fastcomp to support mc-jit. > > Just so this post doesn't feel so empty, here's some output from running > "EMCC_DEBUG=1 python > /data/data/com.android.python27/files/emscripten-1.22.1/emcc hello_world.c > -o hello.html" bare in mind this is still the notoriously slow android > emulator: > DEBUG root: JAVA not defined in ~/.emscripten, using "java" > WARNING root: invocation: /data/data/com.android.python27/files/ > emscripten-1.22.1/emcc hello_world.c -o hello.html (in /data) > WARNING root: did not see a source tree above the LLVM root directory > (guessing > based on directory of /data/data/com.android.python27/files/fastcomp/bin/ > llc), could not verify version numbers match > INFO root: (Emscripten: Running sanity checks) > WARNING root: java does not seem to exist, required for closure compiler. > -O2 and above will fail. You need to define JAVA in ~/.emscripten > DEBUG root: compiling to bitcode > DEBUG root: emcc step "parse arguments and setup" took 0.16 seconds > DEBUG root: compiling source file: hello_world.c > DEBUG root: running: /data/data/com.android.python27/files/fastcomp/bin > /clang -target asmjs-unknown-emscripten -D__EMSCRIPTEN_major__=1 - > D__EMSCRIPTEN_minor__=22 -D__EMSCRIPTEN_tiny__=1 -Werror=implicit-function > -declaration -nostdinc -Xclang -nobuiltininc -Xclang -nostdsysteminc - > Xclang -isystem/data/data/com.android.python27/files/emscripten-1.22.1/ > system/local/include -Xclang -isystem/data/data/com.android.python27/files > /emscripten-1.22.1/system/include/compat -Xclang -isystem/data/data/com. > android.python27/files/emscripten-1.22.1/system/include -Xclang -isystem/ > data/data/com.android.python27/files/emscripten-1.22.1/system/include/emscripten > -Xclang -isystem/data/data/com.android.python27/files/emscripten-1.22.1/ > system/include/libc -Xclang -isystem/data/data/com.android.python27/files/ > emscripten-1.22.1/system/lib/libc/musl/arch/js -Xclang -isystem/data/data/ > com.android.python27/files/emscripten-1.22.1/system/include/gfx -Xclang - > isystem/data/data/com.android.python27/files/emscripten-1.22.1/system/ > include/SDL -Xclang -isystem/data/data/com.android.python27/files/ > emscripten-1.22.1/system/include/libcxx -emit-llvm -c hello_world.c -o / > data/data/com.android.python27/files/temp/tmpjeesGs/hello_world_0.o > DEBUG root: emcc step "bitcodeize inputs" took 0.56 seconds > DEBUG root: emcc step "process inputs" took 0.01 seconds > DEBUG root: will generate JavaScript > DEBUG root: including libc > DEBUG root: emcc step "calculate system libraries" took 0.44 seconds > DEBUG root: linking: [ > '/data/data/com.android.python27/files/temp/tmpjeesGs/hello_world_0.o', > '/data/.emscripten_cache/libc.bc'] > DEBUG root: emcc: llvm-linking: [ > '/data/data/com.android.python27/files/temp/tmpjeesGs/hello_world_0.o', > '/data/.emscripten_cache/libc.bc'] to /data/data/com.android.python27/ > files/temp/tmpjeesGs/hello.bc > DEBUG root: emcc step "link" took 0.95 seconds > DEBUG root: saving intermediate processing steps to /data/data/com. > android.python27/files/temp/emscripten_temp > DEBUG root: emcc: LLVM opts: -internalize -internalize-public-api-list= > main,malloc,free -globaldce -pnacl-abi-simplify-preopt -pnacl-abi-simplify > -postopt -enable-emscripten-cxx-exceptions > DEBUG root: emcc step "post-link" took 0.85 seconds > DEBUG root: LLVM => JS > DEBUG root: JAVA not defined in ~/.emscripten, using "java" > DEBUG root: emscript: llvm backend: /data/data/com.android.python27/ > files/fastcomp/bin/llc /data/data/com.android.python27/files/temp/ > tmpjeesGs/hello.bc -march=js -filetype=asm -o /data/data/com.android. > python27/files/temp/emscripten_temp/tmp0lvRuU.4.js -emscripten-assertions= > 1 -emscripten-no-aliasing-function-pointers -O0 -emscripten-max-setjmps=20 > DEBUG root: emscript: llvm backend took 0.889282941818 seconds > DEBUG root: emscript: js compiler glue > DEBUG root: emscript: glue took 15.9426500797 seconds > DEBUG root: asm text sizes[[105216, 1849, 25], 24, 130, 1210, 0, 0, 29, > 274, 234, 679, 1372] > DEBUG root: emscript: final python processing took 0.154012918472 > seconds > DEBUG root: emcc step "emscript (llvm=>js)" took 20.06 seconds > DEBUG root: emcc step "source transforms" took 0.01 seconds > DEBUG root: emcc step "js opts" took 0.01 seconds > DEBUG root: generating HTML > DEBUG root: emcc step "final emitting" took 4.67 seconds > DEBUG root: total time: 27.72 seconds > > > > > On Thursday, July 17, 2014 7:47:42 AM UTC-5, [email protected] wrote: > >> I fascinated with the idea of using Android code editor/IDE (like >> DroidEdit or AIDE) to program C++ applications while on a phone. >> >> I was wondering if there is a way to run emscripten on Android. Can I >> compile emscripten to android? Has anyone tried it? >> >> >> -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
