mirror of
https://github.com/crystalidea/qt6windows7.git
synced 2025-07-04 08:15:30 +08:00
qt 6.5.1 original
This commit is contained in:
2
mkspecs/features/wasm/default_pre.prf
Normal file
2
mkspecs/features/wasm/default_pre.prf
Normal file
@ -0,0 +1,2 @@
|
||||
load(emcc_ver)
|
||||
load(default_pre)
|
25
mkspecs/features/wasm/emcc_ver.prf
Normal file
25
mkspecs/features/wasm/emcc_ver.prf
Normal file
@ -0,0 +1,25 @@
|
||||
defineReplace(qtEmccRecommendedVersion) {
|
||||
return (3.1.25)
|
||||
}
|
||||
|
||||
defineReplace(qtSystemEmccVersion) {
|
||||
EMCC = $$system("emcc -v 2>&1", lines)
|
||||
EMCC_LINE = $$find(EMCC, "^.*\b(emcc)\b.*$")
|
||||
E_VERSION = $$section(EMCC_LINE, " ", 9,9)
|
||||
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.")
|
||||
}
|
||||
}
|
||||
}
|
148
mkspecs/features/wasm/wasm.prf
Normal file
148
mkspecs/features/wasm/wasm.prf
Normal file
@ -0,0 +1,148 @@
|
||||
|
||||
QT_FOR_CONFIG += core-private
|
||||
|
||||
# DESTDIR will be empty if not set in the app .pro file; make sure it has a value
|
||||
isEmpty(DESTDIR): DESTDIR = $$OUT_PWD
|
||||
|
||||
exists($$QMAKE_QT_CONFIG) {
|
||||
## this may be subject to change
|
||||
|
||||
## qmake puts a space if done otherwise
|
||||
!isEmpty(QT_WASM_EXTRA_EXPORTED_METHODS): {
|
||||
EXPORTED_METHODS = UTF16ToString,stringToUTF16,JSEvents,specialHTMLTargets,$$QT_WASM_EXTRA_EXPORTED_METHODS
|
||||
} else {
|
||||
EXPORTED_METHODS = UTF16ToString,stringToUTF16,JSEvents,specialHTMLTargets
|
||||
}
|
||||
EMCC_LFLAGS += -s EXPORTED_RUNTIME_METHODS=$$EXPORTED_METHODS
|
||||
|
||||
qtConfig(thread) {
|
||||
|
||||
EMCC_LFLAGS += -pthread
|
||||
EMCC_CFLAGS += -pthread
|
||||
|
||||
# Create worker threads at startup. This is supposed to be an optimization,
|
||||
# however exceeding the pool size has been obesverved to hang the application.
|
||||
POOL_SIZE = 4
|
||||
!isEmpty(QT_WASM_PTHREAD_POOL_SIZE) {
|
||||
POOL_SIZE = $$QT_WASM_PTHREAD_POOL_SIZE
|
||||
}
|
||||
|
||||
message("Setting PTHREAD_POOL_SIZE to" $$POOL_SIZE)
|
||||
EMCC_LFLAGS += -s PTHREAD_POOL_SIZE=$$POOL_SIZE
|
||||
}
|
||||
|
||||
# Set memory options
|
||||
EMCC_LFLAGS += -sALLOW_MEMORY_GROWTH
|
||||
isEmpty(QT_WASM_INITIAL_MEMORY) {
|
||||
INITIAL_MEMORY = 50MB # emscripten default is 16MB, we need slightly more
|
||||
} else {
|
||||
INITIAL_MEMORY = $$QT_WASM_INITIAL_MEMORY
|
||||
}
|
||||
EMCC_LFLAGS += -s INITIAL_MEMORY=$$INITIAL_MEMORY
|
||||
|
||||
qtConfig(sse2) {
|
||||
QMAKE_CFLAGS += -O2 -msimd128 -msse -msse2
|
||||
QMAKE_CXXFLAGS += -O2 -msimd128 -msse -msse2
|
||||
QMAKE_LFLAGS += -msimd128 -msse -msse2
|
||||
QMAKE_LFLAGS_DEBUG += -msimd128 -msse -msse2
|
||||
}
|
||||
|
||||
QMAKE_LFLAGS += $$EMCC_LFLAGS
|
||||
QMAKE_LFLAGS_DEBUG += $$EMCC_LFLAGS
|
||||
QMAKE_CFLAGS += $$EMCC_CFLAGS
|
||||
QMAKE_CXXFLAGS += $$EMCC_CFLAGS
|
||||
}
|
||||
|
||||
# Create js and wasm files for applications
|
||||
contains(TEMPLATE, .*app) {
|
||||
TARGET_BASE = $${TARGET}
|
||||
TARGET_HTML = $${TARGET}.html
|
||||
TARGET_JS = $${TARGET}.js
|
||||
|
||||
# Make the emscripten compiler generate a js file
|
||||
TARGET = $$TARGET_JS
|
||||
|
||||
QMAKE_INCDIR += $$(HOME)/.emscripten_ports/openssl/include
|
||||
|
||||
CONFIG += static
|
||||
js_file.files = $$TARGET_JS
|
||||
js_file.path = $$target.path
|
||||
isEmpty(js_file.path): \
|
||||
js_file.path += ./
|
||||
INSTALLS += js_file
|
||||
|
||||
# Copy hosting html and javascript to the application build directory.
|
||||
exists($$[QT_INSTALL_PLUGINS]/platforms/wasm_shell.html) {
|
||||
# don't pass this until it's installed somewhere
|
||||
# otherwise makespec test fails during qt configure
|
||||
WASM_PLUGIN_PATH = $$[QT_INSTALL_PLUGINS]/platforms
|
||||
} else {
|
||||
## internal build. not installed
|
||||
WASM_PLUGIN_PATH = $$PWD/../../../src/plugins/platforms/wasm
|
||||
}
|
||||
|
||||
# Copy/Generate main .html file (e.g. myapp.html) from the webassembly_shell.html by
|
||||
# replacing the app name placeholder with the actual app name.
|
||||
apphtml.name = application main html file
|
||||
apphtml.output = $$DESTDIR/$$TARGET_HTML
|
||||
apphtml.commands = $$QMAKE_STREAM_EDITOR -e s/@APPNAME@/$$TARGET_BASE/g $$WASM_PLUGIN_PATH/wasm_shell.html > $$DESTDIR/$$TARGET_HTML
|
||||
apphtml.input = $$WASM_PLUGIN_PATH/wasm_shell.html
|
||||
apphtml.depends = $$apphtml.input
|
||||
QMAKE_EXTRA_COMPILERS += apphtml
|
||||
|
||||
appjs.name = application qtloader.js
|
||||
appjs.output = $$DESTDIR/qtloader.js
|
||||
appjs.commands = $$QMAKE_COPY $$shell_path($$WASM_PLUGIN_PATH/qtloader.js) $$shell_path($$DESTDIR)
|
||||
appjs.input = $$WASM_PLUGIN_PATH/qtloader.js
|
||||
appjs.depends = $$appjs.input
|
||||
QMAKE_EXTRA_COMPILERS += appjs
|
||||
|
||||
appsvg.name = application qtlogo.svg
|
||||
appsvg.output = $$DESTDIR/qtlogo.svg
|
||||
appsvg.commands = $$QMAKE_COPY $$shell_path($$WASM_PLUGIN_PATH/qtlogo.svg) $$shell_path($$DESTDIR)
|
||||
appsvg.input = $$WASM_PLUGIN_PATH/qtlogo.svg
|
||||
appsvg.depends = $$appsvg.input
|
||||
QMAKE_EXTRA_COMPILERS += appsvg
|
||||
|
||||
QMAKE_EXTRA_TARGETS += apphtml appjs appsvg
|
||||
POST_TARGETDEPS += apphtml appjs appsvg
|
||||
|
||||
# Add manual target to make "make -B shellfiles" work.
|
||||
shellfiles.target = shellfiles
|
||||
shellfiles.depends = apphtml appjs appsvg
|
||||
QMAKE_EXTRA_TARGETS += shellfiles
|
||||
|
||||
# emscripten ports are linked into the main module (this app), not the Qt
|
||||
# libs which reference them
|
||||
qt {
|
||||
qt_depends = $$resolve_depends(QT, "QT.")
|
||||
contains(qt_depends, core(-private)?): QMAKE_LFLAGS += \
|
||||
$$QMAKE_LIBS_THREAD $$QMAKE_LIBS_ZLIB
|
||||
contains(qt_depends, gui(-private)?): QMAKE_LFLAGS += \
|
||||
$$QMAKE_LIBS_FREETYPE $$QMAKE_LIBS_LIBPNG
|
||||
}
|
||||
}
|
||||
|
||||
qtConfTest_emccVersion()
|
||||
|
||||
CONFIG(debug):!isEmpty(QT_WASM_SOURCE_MAP) {
|
||||
|
||||
EMCC_VERSION = $$qtSystemEmccVersion()
|
||||
|
||||
QMAKE_LFLAGS += -gsource-map
|
||||
# Pass --source-map-base on the linker line. This informs the
|
||||
# browser where to find the source files when debugging.
|
||||
WASM_SOURCE_MAP_BASE = http://localhost:8000/
|
||||
!isEmpty(QT_WASM_SOURCE_MAP_BASE):\
|
||||
WASM_SOURCE_MAP_BASE = $$QT_WASM_SOURCE_MAP_BASE
|
||||
QMAKE_LFLAGS += --source-map-base $$WASM_SOURCE_MAP_BASE
|
||||
}
|
||||
|
||||
|
||||
# Creates the stand-alone version of the library from bitcode
|
||||
!static:contains(TEMPLATE, .*lib): {
|
||||
load(resolve_target)
|
||||
QMAKE_POST_LINK += $$QMAKE_LINK_SHLIB $$QMAKE_RESOLVED_TARGET -o $${QMAKE_RESOLVED_TARGET}.js
|
||||
|
||||
QMAKE_INCDIR += $$(HOME)/.emscripten_ports/openssl/include
|
||||
}
|
Reference in New Issue
Block a user