From 868ded6d87ca4e05482d2ae6955ddfbe0fb85ff0 Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Thu, 12 Dec 2019 09:38:20 +1000 Subject: [PATCH] wasm: do not use clamp mode for upstream LLVM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Emscripten version 1.39.0 and above are based upon upstream LLVM, which does not contain BINARYEN_TRAP_MODE Fixes: QTBUG-80691 Change-Id: I6129f84a31a607c202e13847b50705ef1c809630 Reviewed-by: jian liang Reviewed-by: Morten Johan Sørvig --- mkspecs/features/wasm/default_pre.prf | 25 +------------------------ mkspecs/features/wasm/emcc_ver.prf | 23 +++++++++++++++++++++++ mkspecs/wasm-emscripten/qmake.conf | 6 +++++- 3 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 mkspecs/features/wasm/emcc_ver.prf diff --git a/mkspecs/features/wasm/default_pre.prf b/mkspecs/features/wasm/default_pre.prf index 982ef0498f..2760889929 100644 --- a/mkspecs/features/wasm/default_pre.prf +++ b/mkspecs/features/wasm/default_pre.prf @@ -1,25 +1,2 @@ load(default_pre) - -defineReplace(qtEmccRecommendedVersion) { - return (1.38.27) -} - -defineReplace(qtSystemEmccVersion) { - E_VERSION = $$system("emcc -v 2>&1 | perl -alne $$shell_quote($_ = $F[9]; s/://; print;) ") - return ($${E_VERSION}) -} - -defineTest(qtConfTest_emccVersion) { - - REQ_VERSION = $$qtEmccRecommendedVersion() - EMCC_VERSION = $$qtSystemEmccVersion() - - !defined(QT_EMCC_VERSION, var):!equals(EMCC_VERSION, $${REQ_VERSION}) { - warning ("You should use the recommended Emscripten version $$REQ_VERSION with this Qt. You have $${EMCC_VERSION} ") - } - contains(TEMPLATE, .*app) { - !equals(QT_EMCC_VERSION, $$EMCC_VERSION) { - warning("This Qt was built with Emscripten version $${QT_EMCC_VERSION}. You have $${EMCC_VERSION}. The difference may cause issues.") - } - } -} +load(emcc_ver) diff --git a/mkspecs/features/wasm/emcc_ver.prf b/mkspecs/features/wasm/emcc_ver.prf new file mode 100644 index 0000000000..505a321d64 --- /dev/null +++ b/mkspecs/features/wasm/emcc_ver.prf @@ -0,0 +1,23 @@ +defineReplace(qtEmccRecommendedVersion) { + return (1.38.27) +} + +defineReplace(qtSystemEmccVersion) { + E_VERSION = $$system("emcc -v 2>&1 | perl -alne $$shell_quote($_ = $F[9]; s/://; print;) ") + return ($${E_VERSION}) +} + +defineTest(qtConfTest_emccVersion) { + + REQ_VERSION = $$qtEmccRecommendedVersion() + EMCC_VERSION = $$qtSystemEmccVersion() + + !defined(QT_EMCC_VERSION, var):!equals(EMCC_VERSION, $${REQ_VERSION}) { + warning ("You should use the recommended Emscripten version $$REQ_VERSION with this Qt. You have $${EMCC_VERSION} ") + } + contains(TEMPLATE, .*app) { + !equals(QT_EMCC_VERSION, $$EMCC_VERSION) { + warning("This Qt was built with Emscripten version $${QT_EMCC_VERSION}. You have $${EMCC_VERSION}. The difference may cause issues.") + } + } +} diff --git a/mkspecs/wasm-emscripten/qmake.conf b/mkspecs/wasm-emscripten/qmake.conf index cde6dac42b..48c3fb7359 100644 --- a/mkspecs/wasm-emscripten/qmake.conf +++ b/mkspecs/wasm-emscripten/qmake.conf @@ -6,6 +6,7 @@ include(../common/gcc-base.conf) include(../common/clang.conf) load(device_config) +load(emcc_ver) # Support setting WASM_OBJECT_FILES with -device-option WASM_OBJECT_FILES=1 !isEmpty(WASM_OBJECT_FILES): { @@ -15,7 +16,10 @@ load(device_config) QMAKE_CXXFLAGS += -s WASM_OBJECT_FILES=$$WASM_OBJECT_FILES QMAKE_LFLAGS += -s WASM_OBJECT_FILES=$$WASM_OBJECT_FILES } else { - EMCC_COMMON_LFLAGS += -s \"BINARYEN_TRAP_MODE=\'clamp\'\" + EMSCRIPTEN_VERSION=$$qtSystemEmccVersion() + lessThan(EMSCRIPTEN_VERSION, 1.39) { + EMCC_COMMON_LFLAGS += -s \"BINARYEN_TRAP_MODE=\'clamp\'\" + } } EMTERP_FLAGS = \