POCO C++ Libraries Emscripten Platform Notes
AAAIntroduction

!!!Introduction


POCO can be compiled to javascript/WebAssembly using the emscripten toolchain.
Currently this is a work in progress.


!!!Requirements

!!Emscripten toolchain

Install the emscripten toolchain following these instructions:
http://kripken.github.io/emscripten-site/docs/getting_started/downloads.html

The version 1.37.10 was used for this initial work.

You should then run the emsdk_env.sh script to load the paths and environment variables.

!!Compiling the POCO C++ Libraries

It is best to always compile as shared libraries, there are some incompatibilities with the
".a" static library format. The generated files aren't "true" shared libraries, but
the emscripten toolchain knows how to best handle them.

!!!Restrictions

For the most part, the Linux and Emscripten ports of the POCO C++ Libraries are very similar.
However, there are a few restrictions.

!!Poco::Thread

At the time of this writing, the emscripten thread support is being tested, and it only may
be working on the Firefox Nighly build. It is also not yet available for WebAssembly.

!!!Build Notes

There are 2 configuration files for emscripten:
- emscripten: compile to asm.js (pure javascript)
- emscripten-wasm: compile to WebAssembly

The <*emscripten*> build configuration (located in <*$POCO_BASE/build/config/emscripten*>)
is used to cross-build for Emscripten from a Linux or Mac OS X host.

To build the POCO C++ Libraries on a Linux or Mac OS X host:

    ./configure --config=emscripten
    ./make -j4
----

To compile your own application, you must set the same compiler parameters as when you built POCO,
for example, you must set the "-s USE_PTHREADS=1" on all your source files and link flags when
using threads.

!!Samples

The samples executables are generated in .js format (with sibling .html file). To run, use emrun.

    emrun executable.html
----

