diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2022-07-14 10:07:00 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2022-08-12 10:13:51 +1000 |
commit | 1f9c1f032c5d8af2c6758081eb8de076fe678b53 (patch) | |
tree | bbbb2a1e6ec2c6f66e660a6b8db0bb8f7b4b69ee /src/corelib | |
parent | 97f6878afddbef83b4a654ff0f9b118aa9ab2ab4 (diff) |
wasm: allow apps to override EXPORT_RUNTIME_METHODS
Developers can add to Emscripten's EXPORT_RUNTIME_METHODS
by defining their own using:
QT_WASM_EXTRA_EXPORTED_METHODS
Which will add on to Qt's default exported runtime methods
of UTF16ToString,stringToUTF16
for cmake:
set_target_properties(<target> PROPERTIES QT_WASM_EXTRA_EXPORTED_METHODS "ccall,cwrap")
or
set(QT_WASM_EXTRA_EXPORTED_METHODS "ccall,cwrap")
for qmake:
QT_WASM_EXTRA_EXPORTED_METHODS = ccall,cwrap
Done-with: Mikolaj Boc
Fixes: QTBUG-104882
Pick-to: 6.4
Change-Id: I9678bdb7b077aaa8527057212ea4e161c0be0b60
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'src/corelib')
-rw-r--r-- | src/corelib/Qt6CoreMacros.cmake | 1 | ||||
-rw-r--r-- | src/corelib/Qt6WasmMacros.cmake | 18 |
2 files changed, 19 insertions, 0 deletions
diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake index 188520ae11..09d62232db 100644 --- a/src/corelib/Qt6CoreMacros.cmake +++ b/src/corelib/Qt6CoreMacros.cmake @@ -650,6 +650,7 @@ function(_qt_internal_finalize_executable target) if(EMSCRIPTEN) _qt_internal_wasm_add_target_helpers("${target}") + _qt_internal_add_wasm_extra_exported_methods("${target}") endif() if(IOS) _qt_internal_finalize_ios_app("${target}") diff --git a/src/corelib/Qt6WasmMacros.cmake b/src/corelib/Qt6WasmMacros.cmake index dbc8a49392..99de3aac37 100644 --- a/src/corelib/Qt6WasmMacros.cmake +++ b/src/corelib/Qt6WasmMacros.cmake @@ -60,3 +60,21 @@ function(_qt_internal_wasm_add_target_helpers target) endif() endfunction() +function(_qt_internal_add_wasm_extra_exported_methods target) + get_target_property(wasm_extra_exported_methods "${target}" QT_WASM_EXTRA_EXPORTED_METHODS) + + if(NOT wasm_extra_exported_methods) + set(wasm_extra_exported_methods ${QT_WASM_EXTRA_EXPORTED_METHODS}) + endif() + + if(wasm_extra_exported_methods) + target_link_options("${target}" PRIVATE + "SHELL:-s EXPORTED_RUNTIME_METHODS=UTF16ToString,stringToUTF16,${wasm_extra_exported_methods}" + ) + else() + # an errant dangling comma will break this + target_link_options("${target}" PRIVATE + "SHELL:-s EXPORTED_RUNTIME_METHODS=UTF16ToString,stringToUTF16" + ) + endif() +endfunction() |