Compiling with LLVM
In Chapter 1, What is WebAssembly?, we discussed the relationship between Emscripten's EMSDK and LLVM. Emscripten uses LLVM and Clang to compile C/C++ down to LLVM bitcode. The Emscripten compiler (emcc
) compiles that bitcode to asm.js, which is passed to Binaryen to generate a Wasm file. If you're interested in using LLVM, you can compile C/C++ to Wasm without installing the EMSDK. In this section, we will review the process for enabling Wasm compilation using LLVM. After compiling some example C++ code to a Wasm file, we'll try it out in the browser.
The installation process
If you want to compile WebAssembly modules using LLVM, several tools need to be installed and configured. Getting these tools working together correctly can be an arduous and time-consuming process. Fortunately, someone went through the trouble of making this process much simpler. Daniel Wirtz created an npm
package named webassembly
 (https://www.npmjs.com/package/webassembly) that can perform the...