From 78a0203ffaa4b0061e0d890ee7e67ae69e202733 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 24 Aug 2022 17:57:54 +1000 Subject: wasm: add Emscripten version check for apps MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 (cherry picked from commit b515fa56a3144289023dc9588c5f73283599e4d4) Reviewed-by: Qt Cherry-pick Bot --- cmake/QtPublicWasmToolchainHelpers.cmake | 25 +++++++++++++++++++++++++ src/corelib/Qt6WasmMacros.cmake | 2 ++ 2 files changed, 27 insertions(+) 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") -- cgit v1.2.3