On Tue, May 14, 2019 at 4:45 AM Thomas Schoenhofer <[email protected]> wrote:
>
> Hi,
>
> I am trying to compile a multi threaded application to WebAssembly. The 
> application uses OpenMP for multithreading.
>
> I have already downloaded the source files for OpenMP and compiled it for my 
> host machine using make. With the following command I can get it to link with 
> a simple demo application on my machine:
>
>
> g++ -Wall -Werror -pedantic main.o -o main.x 
> /$PATH_TO_OPENMP/build/runtime/src/libgomp.a -pthread -lstdc++ 
> -Wl,--no-as-needed -ldl
>
>
> I then tried to compile OpenMP to the llvm bytecode format used by 
> Emscripten. To do so I tried to run 'emmake make', so that the emscripten 
> framework executes the OpenMP makefiles with a suitable compiler. As 
> emscripten does not like shared object files I compiled it to static library 
> .a files. This works and actually gives me object files to which I can link.
>
> I then wanted to link my demo application with the following command
>
> em++ -Wall -Werror -pedantic main.o -o main.html 
> /home/main/data/Programming/openMP/openmp_web/build/runtime/src/libgomp.a 
> -pthread -lstdc++ -Wl,--no-as-needed -ldl
>
> But I get these warnings, that it couldn't link to OpenMP files:
>
> shared:WARNING: object 
> /tmp/emscripten_temp_ONa0eU_archive_contents/kmp_atomic.cpp.o is not a valid 
> object file for emscripten, cannot link
>                               .
>                               .
> shared:WARNING: object 
> /tmp/emscripten_temp_ONa0eU_archive_contents/kmp_str.cpp.o is not a valid 
> object file for emscripten, cannot link
> shared:WARNING: object /tmp/emscripten_temp_ONa0eU_archive_contents
>
> So I figured I must have compiled OpenMP with the wrong compiler. I then 
> tried to change the compiler when building the library by using the following 
> commands:
>
> cmake -DCMAKE_C_COMPILER=emcc -DCMAKE_CXX_COMPILER=em++ 
> -DLIBOMP_LIB_TYPE=normal -DLIBOMP_ENABLE_SHARED=OFF 
> -DCMAKE_BUILD_TYPE=Release -DLIBOMP_ARCH=x86_64 OPENMP_STANDALONE_BUILD=1 ..
> emmake make
>
> But this just gives strange errors on some missing system variables
>
> /home/main/data/Programming/openMP/openmp_web/runtime/src/kmp_platform.h:82:2:
>  error: Unknown OS
> /home/main/data/Programming/openMP/openmp_web/runtime/src/kmp_platform.h:203:2:
>  error: Unknown or unsupported architecture
> In file included from 
> /home/main/data/Programming/openMP/openmp_web/runtime/src/kmp_alloc.cpp:13:
> In file included from 
> /home/main/data/Programming/openMP/openmp_web/runtime/src/kmp.h:77: 
> /home/main/data/Programming/openMP/openmp_web/runtime/src/kmp_os.h:171:2:
> error: "Can't determine size_t printf format specifier."
>

I looks like that kmp_platform.h doesn't yet have support for
emscripten.  You probably want to add an "ifdef __EMSCRIPTEN__" block
there.

> Does anyone have an idea on what I could do differently?
>
> --
> You received this message because you are subscribed to the Google Groups 
> "emscripten-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/emscripten-discuss/ae0ff691-88e0-4317-b437-881a980eb2e0%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/CAL_va29869feUC1aA8fFjj2UYyY%3DS6TwWqBKdhpRyoxLOtsjRA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to