Webpack loader that compiles some c/c++ file to bitcode and links bitcode into a wasm/asm.js using Emscripten.
npm install emcc-loader```
npm install --save-dev emcc-loader
`comment
foobar.c
Ofcourse, write c/c++ files!
`
#include
#include #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();
});
``- buildDir : string
-- [Required] absolute path to temporary directory used by emcc.
- cc : string
-- [default=emcc] c compiler path.
- cxx : string
-- [default=em++] c++ compiler path.
- ld : string
-- [default=emcc] linker path.
- commonFlags : string[]
-- [default=[]] array of flags passed to all emcc/em++ commands.
- cFlags : string[]
-- [default=[]] array of flags passed to emcc compiling C.
- cxxFlags : string[]
-- [default=[]] array of flags passed to em++ compiling C++.
- ldFlags : string[]
-- [default=[]] array of flags passed to emcc linking all object files.