So I have the issue that I want to translate/compile the haxe compiler source to ocaml bytecode(c or js).
What I tried:
installed js_of_ocaml with opam
Modified the dune file in the haxe/src/dune to contain in the library (modes byte) or/and in executable (modes (byte c) js )
What I think is happening is that the makefile is overwriting my dune modes definitions. I dont know if the fact that the compiler uses C stubs could be an issue also.
I dont know if any of the compiler developers could or would have any insight into this.
The use of c code is going to be hard to transfer for js,
but the main problem preventing js_of_ocaml from working is the use of filesystem access across the compiler, which doesn’t match the vm filesystem-less execution of js in the browser.
Depending on your goal know that it might need a lot of work/restructure.
I build Haxe to ocaml bytecode by adding (modes (byte exe)) to the “executable” section of src/dune file. That works fine. That’s all I know regarding building to bytecode )
So as of now I can build my ocaml code to c then compile it,camlrun,otherlibs(unix,str,etc.) and its stubs to emcc bytecode and then link them to a wasm file.
The issue I am having now is that ocamlrun expects 64 bit pointers, and, as of now wasm64 isn’t available with emscripten and wasienv. So the runtime always fails with “input_value: integer too large” that is emited by intern.c in ocaml runtime.
So I can either be patient and wait on emscripten support of wasm64(wasm64 is already in llvm it would just need to be a supported target by emscripten or wasienv) or I could revert to js_of_ocaml and make js stubs for filesystem access with wasmfs and make js stubs for sha1/pcre.