diff --git a/cmake/QtWasmHelpers.cmake b/cmake/QtWasmHelpers.cmake index 20d4bc5c29..7ba7cd893a 100644 --- a/cmake/QtWasmHelpers.cmake +++ b/cmake/QtWasmHelpers.cmake @@ -29,6 +29,12 @@ function (qt_internal_setup_wasm_target_properties wasmTarget) target_compile_options("${wasmTarget}" INTERFACE -O2 -msimd128 -msse -msse2) endif() + # wasm exceptions + if (QT_FEATURE_wasm_exception) + target_compile_options("${wasmTarget}" INTERFACE -fwasm-exceptions) + target_link_options("${wasmTarget}" INTERFACE -fwasm-exceptions) + endif() + target_link_options("${wasmTarget}" INTERFACE "SHELL:-s DISABLE_EXCEPTION_CATCHING=1") if (QT_FEATURE_thread) diff --git a/configure.cmake b/configure.cmake index d5ab6385bf..c9d3967d8a 100644 --- a/configure.cmake +++ b/configure.cmake @@ -940,6 +940,12 @@ qt_feature("posix_fallocate" PRIVATE LABEL "POSIX fallocate()" CONDITION TEST_posix_fallocate ) +qt_feature("wasm_exceptions" PRIVATE + LABEL "WebAssembly exception handling" + AUTODETECT OFF +) +qt_feature_definition("wasm_exceptions" "QT_WASM_EXCEPTIONS" VALUE "1") +qt_feature_config("wasm_exceptions" QMAKE_PRIVATE_CONFIG) qt_feature("alloca_h" PRIVATE LABEL "alloca.h" CONDITION TEST_alloca_h