Mercurial > hg > orthanc
view OrthancFramework/Resources/WebAssembly.txt @ 4966:ee6d7937a6cf
pass user-specific compiler flags to the ConnectivityChecks subproject
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sat, 26 Mar 2022 09:23:49 +0100 |
parents | e62bd014ae5c |
children |
line wrap: on
line source
====================================== == 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() <<<<< The "EMSCRIPTEN_SET_LLVM_WASM_BACKEND" option was totally removed in Orthanc 1.8.1. 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\"]'") <<<<<