summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@gmail.com>2022-08-24 17:57:54 +1000
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-09-01 03:48:16 +0000
commit78a0203ffaa4b0061e0d890ee7e67ae69e202733 (patch)
tree51e3b354370d39797bb6745b521d34b7d2ab4d3b
parent233b95f70a56b4ae953c5f75b1ce226bb1bd6cf2 (diff)
wasm: add Emscripten version check for apps
This will tell developers if they are using the wrong version which may not build or might cause other issues. Fixes: QTBUG-105922 Change-Id: Ic5c4549d5637182dce380e415f131e33a4da416f Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> (cherry picked from commit b515fa56a3144289023dc9588c5f73283599e4d4) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--cmake/QtPublicWasmToolchainHelpers.cmake25
-rw-r--r--src/corelib/Qt6WasmMacros.cmake2
2 files changed, 27 insertions, 0 deletions
diff --git a/cmake/QtPublicWasmToolchainHelpers.cmake b/cmake/QtPublicWasmToolchainHelpers.cmake
index ba217834bf..759c82e36c 100644
--- a/cmake/QtPublicWasmToolchainHelpers.cmake
+++ b/cmake/QtPublicWasmToolchainHelpers.cmake
@@ -69,3 +69,28 @@ function(__qt_internal_show_error_no_emscripten_toolchain_file_found_when_using_
"or provide a path to a valid emscripten installation via the EMSDK "
"environment variable.")
endfunction()
+
+function(__qt_internal_get_qt_build_emsdk_version out_var)
+ if(EXISTS "${QT6_INSTALL_PREFIX}/src/corelib/global/qconfig.h")
+ file(READ "${QT6_INSTALL_PREFIX}/src/corelib/global/qconfig.h" ver)
+ else()
+ file(READ "${QT6_INSTALL_PREFIX}/include/QtCore/qconfig.h" ver)
+ endif()
+ string(REGEX MATCH "#define QT_EMCC_VERSION.\"[0-9]+\\.[0-9]+\\.[0-9]+\"" emOutput ${ver})
+ string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+" build_emcc_version "${emOutput}")
+ set(${out_var} "${build_emcc_version}" PARENT_SCOPE)
+endfunction()
+
+function(_qt_test_emscripten_version)
+ __qt_internal_get_emcc_recommended_version(_recommended_emver)
+ __qt_internal_get_emroot_path_suffix_from_emsdk_env(emroot_path)
+ __qt_internal_query_emsdk_version("${emroot_path}" TRUE current_emsdk_ver)
+ __qt_internal_get_qt_build_emsdk_version(qt_build_emcc_version)
+
+ if(NOT "${qt_build_emcc_version}" STREQUAL "${current_emsdk_ver}")
+ message("Qt Wasm built with Emscripten version: ${qt_build_emcc_version}")
+ message("You are using Emscripten version: ${current_emsdk_ver}")
+ message("The recommended version of Emscripten for this Qt is: ${_recommended_emver}")
+ message("This may not work correctly")
+ endif()
+endfunction()
diff --git a/src/corelib/Qt6WasmMacros.cmake b/src/corelib/Qt6WasmMacros.cmake
index 812f7df97a..b95ab6f80f 100644
--- a/src/corelib/Qt6WasmMacros.cmake
+++ b/src/corelib/Qt6WasmMacros.cmake
@@ -1,5 +1,7 @@
# Copy in Qt HTML/JS launch files for apps.
function(_qt_internal_wasm_add_target_helpers target)
+
+ _qt_test_emscripten_version()
get_target_property(targetType "${target}" TYPE)
if("${targetType}" STREQUAL "EXECUTABLE")