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.

Reply via email to