From 2ab347b0dd77285a84f610e848170157acf37578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20S=C3=B8rvig?= Date: Tue, 18 Oct 2022 14:02:02 +0200 Subject: [PATCH] wasm: add support for enabling wasm excptions Add support for enabling -fwasm-exceptions at compile and link time, which enables use of C++ exceptions. Wasm-exceptions is an in-progress roadmap item (see https://webassembly.org/roadmap/), but is supported by the major browsers Change-Id: I6e2847206a46ed8038320c99725bc09a0344d1b4 Reviewed-by: Aleksandr Reviakin Reviewed-by: Lorn Potter --- cmake/QtWasmHelpers.cmake | 6 ++++++ configure.cmake | 6 ++++++ 2 files changed, 12 insertions(+) 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