Mercurial > hg > orthanc
diff OrthancFramework/Resources/WebAssembly.txt @ 4063:e00f3d089991 framework
shared library of orthanc framework
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 11 Jun 2020 16:40:34 +0200 |
parents | |
children | e62bd014ae5c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/OrthancFramework/Resources/WebAssembly.txt Thu Jun 11 16:40:34 2020 +0200 @@ -0,0 +1,58 @@ + +====================================== +== Notes about WebAssembly =========== +====================================== + + + +Trap mode +========= + +The BINARYEN_TRAP_MODE specifies what to do when divisions per zero +(and similar conditions like integer overflows) are encountered. This +can be set through the option "EMSCRIPTEN_TRAP_MODE" in Orthanc. + + + +Previous versions (<= 1.7.1) +---------------------------- + +The "clamp" mode avoids throwing errors, as they cannot be properly +catched by "try {} catch (...)" constructions. HOWEVER, the "upstream" +backend of Emscripten (which is now the default) doesn't support this +option. + +In Orthanc <= 1.7.1, the "clamp" mode was used by default. As a +consequence, there was an old flag "EMSCRIPTEN_SET_LLVM_WASM_BACKEND" +to setting BINARYEN_TRAP_MODE. + +Here is the definition of the parameter that was in +"OrthancFrameworkParameters.cmake": + +>>>>> +set(EMSCRIPTEN_SET_LLVM_WASM_BACKEND OFF CACHE BOOL "Sets the compiler flags required to use the LLVM Web Assembly backend in emscripten") +<<<<< + +Setting this option to "ON" fixes error: "shared:ERROR: +BINARYEN_TRAP_MODE is not supported by the LLVM wasm backend" if using +the "upstream" backend of Emscripten. Here is the corresponding +implementation that was in "Compiler.cmake": + +>>>>> +if (NOT EMSCRIPTEN_SET_LLVM_WASM_BACKEND) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s BINARYEN_TRAP_MODE='\"clamp\"'") +endif() +<<<<< + + + + +Linker flags +============ + +Since Orthanc 1.7.2, "Compiler.cmake" doesn't set any linking option +for Emscripten. In Orthanc <= 1.7.1, the following was done: + +>>>>> +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\", \"cwrap\"]'") +<<<<<