Usando Boost con Emscripten

Tengo un proyecto de c ++ que me gustaría convertir a una aplicación web. Para este propósito, me gustaría usar Emscripten para construir el proyecto.

El proyecto utiliza algunas bibliotecas externas. Logré compilar o encontrar la versión de JavaScript de la mayoría de las bibliotecas y ahora me quedo con las Boost. En realidad, ni siquiera sé cómo empezar para Boost: usan un script boostrap para generar los archivos para construir las bibliotecas. Es posible pasar el conjunto de herramientas a este script pero, obviamente, Emscripten no es compatible.

Mi proyecto utiliza las siguientes partes de Boost: Thread, Regex, FileSystem, Signals, System. ¿Cómo puedo compilar estas bibliotecas usando Emscripten?

Editar

Siguiendo la respuesta de npclaudiu, reinicié la biblioteca con el kit de herramientas gcc, luego editéproject-config.jam Para configurar el compilador, reemplazando:

# Compiler configuration. This definition will be used unless
# you already have defined some toolsets in your user-config.jam
# file.
if ! gcc in [ feature.values <toolset> ]
{
    using gcc ;
}

con

# Compiler configuration. This definition will be used unless
# you already have defined some toolsets in your user-config.jam
# file.
if ! gcc in [ feature.values <toolset> ]
{
    using gcc : : "/full/path/to/em++" ;
}

Ahora, escribiendo./b2 efectivamente construye las bibliotecas. Boost.Signals y Boost.System se compilan bien. Los demás tienen algunos errores.

Boost.El hilo se queja:

libs/thread/src/pthread/thread.cpp:503:27: error: use of undeclared identifier 'pthread_yield'
        BOOST_VERIFY(!pthread_yield());
                      ^

Boost.Regex se queja mucho de que CHAR_BIT no ha sido declarado, pero parece ser un problema en el emscripten:

In file included from libs/regex/build/../src/c_regex_traits.cpp:28:
In file included from ./boost/regex/v4/c_regex_traits.hpp:26:
In file included from ./boost/regex/v4/regex_workaround.hpp:35:
/path/to/emscripten/system/include/libcxx/vector:1989:92: error: use of undeclared identifier 'CHAR_BIT'
static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);
                                                                                       ^

Boost.FileSystem parece fallar debido a emscripten también:

In file included from libs/filesystem/src/windows_file_codecvt.cpp:21:
/path/to/emscripten/system/include/libcxx/cwchar:117:9: error: no member named 'FILE' in the global namespace
using ::FILE;
      ~~^

Respuestas a la pregunta(4)

Su respuesta a la pregunta