C/C++ で記述したソースコードを clang で llvm を経由して wasm にコンパイルし、そこに定義した関数を Node.js 上で Typescript を実行して呼び出す。
$ node -v
v20.11.0
$ npm init -y
$ npm install node-fetch
$ git clone https://github.com/llvm/llvm-project.git
$ mkdir build && cd build
$ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="WebAssembly" ../llvm-project/llvm
$ cmake --build .
# llvm-project における wasm-ld の場所がわからないため、暫定的に以下のコマンドでインストールした。
$ brew install llvm
$ clang++ -std=c++14 -o build/calc.wasm --target=wasm32 -nostdlib -Wl,--no-entry -Wl,--export-all src/calc.cpp
npm run test