diff --git a/cmake/QtWasmHelpers.cmake b/cmake/QtWasmHelpers.cmake index d154fb8d463..7f10da9b25e 100644 --- a/cmake/QtWasmHelpers.cmake +++ b/cmake/QtWasmHelpers.cmake @@ -82,7 +82,7 @@ function (qt_internal_setup_wasm_target_properties wasmTarget) target_link_options("${wasmTarget}" INTERFACE "SHELL:-s ASYNCIFY" "-Os") target_compile_definitions("${wasmTarget}" INTERFACE QT_HAVE_EMSCRIPTEN_ASYNCIFY) - elseif ("QT_EMSCRIPTEN_ASYNCIFY=2" IN_LIST QT_QMAKE_DEVICE_OPTIONS) + elseif ("QT_EMSCRIPTEN_ASYNCIFY=2" IN_LIST QT_QMAKE_DEVICE_OPTIONS OR QT_FEATURE_wasm_jspi) # Enable JSPI (also known as asyncify 2). Unlike asyncify 1 this # is supported natively by the browsers, and does not require # enabling optimizations. diff --git a/configure.cmake b/configure.cmake index dd93c4a4f59..0e86ed743d7 100644 --- a/configure.cmake +++ b/configure.cmake @@ -984,6 +984,14 @@ qt_feature("wasm-exceptions" PUBLIC qt_feature_definition("wasm-exceptions" "QT_WASM_EXCEPTIONS" VALUE "1") qt_feature_config("wasm-exceptions" QMAKE_PRIVATE_CONFIG) +qt_feature("wasm-jspi" PUBLIC + LABEL "WebAssembly JSPI" + PURPOSE "Enables WebAssembly JavaScript Promise Integration (JSPI)" + AUTODETECT OFF +) +qt_feature_definition("wasm-jspi" "QT_WASM_JSPI" VALUE "1") +qt_feature_config("wasm-jspi" QMAKE_PRIVATE_CONFIG) + qt_feature("localtime_r" PRIVATE LABEL "localtime_r()" CONDITION TEST_localtime_r @@ -1314,6 +1322,10 @@ qt_configure_add_summary_entry( ARGS "wasm-exceptions" CONDITION ( TEST_architecture_arch STREQUAL wasm ) ) +qt_configure_add_summary_entry( + ARGS "wasm-jspi" + CONDITION ( TEST_architecture_arch STREQUAL wasm ) +) qt_configure_add_summary_section(NAME "Target compiler supports") qt_configure_add_summary_entry( TYPE "featureList"