wasm: enforce emscripten version
This creates a define in the binary, as well as writing emscripten version for qmake. It also enforces app builder to use a certain known version. Task-number: QTBUG-77745 Change-Id: I37691512171635cec66aa3ffa16258081f3f1e1b Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
parent
bf65c27789
commit
93d261b965
@ -1453,6 +1453,10 @@ Configure with '-qreal float' to create a build that is binary-compatible with 5
|
|||||||
"type": "error",
|
"type": "error",
|
||||||
"condition": "!features.stl",
|
"condition": "!features.stl",
|
||||||
"message": "Qt requires a compliant STL library."
|
"message": "Qt requires a compliant STL library."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "emccVersion",
|
||||||
|
"condition": "config.wasm"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
@ -1224,6 +1224,12 @@ defineReplace(qtConfOutputPostProcess_publicPro) {
|
|||||||
"QT_RELEASE_DATE = $$config.input.qt_release_date"
|
"QT_RELEASE_DATE = $$config.input.qt_release_date"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wasm: {
|
||||||
|
qt_emcc_version = $$qtSystemEmccVersion()
|
||||||
|
output += \
|
||||||
|
"QT_EMCC_VERSION = $$qt_emcc_version"
|
||||||
|
}
|
||||||
|
|
||||||
return($$output)
|
return($$output)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1256,6 +1262,12 @@ defineReplace(qtConfOutputPostProcess_publicHeader) {
|
|||||||
!isEmpty(config.input.qt_libinfix): \
|
!isEmpty(config.input.qt_libinfix): \
|
||||||
output += "$${LITERAL_HASH}define QT_LIBINFIX \"$$eval(config.input.qt_libinfix)\""
|
output += "$${LITERAL_HASH}define QT_LIBINFIX \"$$eval(config.input.qt_libinfix)\""
|
||||||
|
|
||||||
|
wasm: {
|
||||||
|
qt_emcc_version = $$qtSystemEmccVersion()
|
||||||
|
output += \
|
||||||
|
"$${LITERAL_HASH}define QT_EMCC_VERSION \"$$qt_emcc_version\""
|
||||||
|
}
|
||||||
|
|
||||||
return($$output)
|
return($$output)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1338,6 +1350,14 @@ defineTest(qtConfReport_buildMode) {
|
|||||||
qtConfReportPadded($$1, $$build_mode)
|
qtConfReportPadded($$1, $$build_mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
defineTest(qtConfReport_emccVersion) {
|
||||||
|
EMCC_VERSION = $$qtSystemEmccVersion()
|
||||||
|
REQ_VERSION = $$qtEmccRecommendedVersion()
|
||||||
|
!equals(EMCC_VERSION, $$REQ_VERSION) {
|
||||||
|
qtConfAddReport("You should use the recommended Emscripten version $$REQ_VERSION with this Qt. You have $$EMCC_VERSION $$QT_EMCC_VERSION")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# ensure pristine environment for configuration
|
# ensure pristine environment for configuration
|
||||||
discard_from($$[QT_HOST_DATA/get]/mkspecs/qconfig.pri)
|
discard_from($$[QT_HOST_DATA/get]/mkspecs/qconfig.pri)
|
||||||
discard_from($$[QT_HOST_DATA/get]/mkspecs/qmodule.pri)
|
discard_from($$[QT_HOST_DATA/get]/mkspecs/qmodule.pri)
|
||||||
|
25
mkspecs/features/wasm/default_pre.prf
Normal file
25
mkspecs/features/wasm/default_pre.prf
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
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.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,8 +1,11 @@
|
|||||||
|
|
||||||
|
|
||||||
# DESTDIR will be empty if not set in the app .pro file; make sure it has a value
|
# DESTDIR will be empty if not set in the app .pro file; make sure it has a value
|
||||||
isEmpty(DESTDIR): DESTDIR = $$OUT_PWD
|
isEmpty(DESTDIR): DESTDIR = $$OUT_PWD
|
||||||
|
|
||||||
exists($$QMAKE_QT_CONFIG) {
|
exists($$QMAKE_QT_CONFIG) {
|
||||||
|
## this may be subject to change
|
||||||
|
|
||||||
qtConfig(thread) {
|
qtConfig(thread) {
|
||||||
|
|
||||||
EMCC_THREAD_LFLAGS += -s USE_PTHREADS=1
|
EMCC_THREAD_LFLAGS += -s USE_PTHREADS=1
|
||||||
@ -109,6 +112,8 @@ contains(TEMPLATE, .*app) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qtConfTest_emccVersion()
|
||||||
|
|
||||||
# Pass --source-map-base on the linker line. This informs the
|
# Pass --source-map-base on the linker line. This informs the
|
||||||
# browser where to find the source files when debugging.
|
# browser where to find the source files when debugging.
|
||||||
WASM_SOURCE_MAP_BASE = http://localhost:8000/
|
WASM_SOURCE_MAP_BASE = http://localhost:8000/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user