Webpack loader that compiles some c/c++ file into a wasm using Emscripten.
MIT License
Webpack loader that compiles some c/c++ files into a wasm using Emscripten.
npm install --save-dev emcc-loader
First of all, create .clist file written relative paths from the clist to c/c++ file like this:
# comment
foobar.c
# indent is also ok.
foo/bar.cpp
baz.cc
qux.cxx
# --pre-js
^pre.js
# --post-js
$post.js
Ofcourse, write c/c++ files!
#include <stdio.h>
#include <emscripten/emscripten.h>
#ifdef __cplusplus
extern "C" {
#endif
EMSCRIPTEN_KEEPALIVE
void sayHello() {
printf("hello!\n");
}
#ifdef __cplusplus
}
#endif
Next, edit your webpack.config.js:
loaders: [
{
test: /\.clist$/,
use: [
{
loader: 'emcc-loader',
options: {
buildDir: `${__dirname}/build`,
commonFlags: [ '-O2' ],
cFlags: [ '-std=c11' ],
cxxFlags: [ '-std=c++14' ],
ldFlags: [
'-s', "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap']",
'-s', 'DEMANGLE_SUPPORT=1',
]
}
}
]
}
]
Now, you can import a wasm file like this:
import wasm from './module.clist';
wasm.initialize().then(module => {
module._sayHello();
});
emcc-loader is configuable on webpack.config.js.
MIT License
Inspired by cpp-wasm-loader.