summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Sørvig <morten.sorvig@qt.io>2022-10-18 14:02:02 +0200
committerMorten Johan Sørvig <morten.sorvig@qt.io>2022-11-03 12:22:50 +0000
commit2ab347b0dd77285a84f610e848170157acf37578 (patch)
treed21b50e2fd7d5a7eee7a4c11ba4ccb89fd8a010a
parentb813a5b1209a7eaa64b34d80c6d8259e6226d445 (diff)
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 <aleksandr.reviakin@qt.io> Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
-rw-r--r--cmake/QtWasmHelpers.cmake6
-rw-r--r--configure.cmake6
2 files changed, 12 insertions, 0 deletions
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