From 924eec1daa5ed62d47e98538766a12f4762632bc Mon Sep 17 00:00:00 2001 From: Lorn Potter Date: Wed, 24 Aug 2022 10:47:25 +1000 Subject: wasm: add support for wasm64 build MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds a new platform named wasm-emscripten-64 which sets the build and link argument -MEMORY64 You may see this warning, please ignore at your own discretion: em++: warning: -sMEMORY64 is still experimental. Many features may not work. [-Wexperimental] Fixes: QTBUG-104891 Change-Id: I8d3150d239ba72dbef5c2352e0171d6cfbe51b59 Reviewed-by: Morten Johan Sørvig --- mkspecs/wasm-emscripten/qmake.conf | 85 +------------------------------------- 1 file changed, 1 insertion(+), 84 deletions(-) (limited to 'mkspecs/wasm-emscripten/qmake.conf') diff --git a/mkspecs/wasm-emscripten/qmake.conf b/mkspecs/wasm-emscripten/qmake.conf index 1b23ef54a3..dcbd368695 100644 --- a/mkspecs/wasm-emscripten/qmake.conf +++ b/mkspecs/wasm-emscripten/qmake.conf @@ -1,86 +1,3 @@ # qmake configuration for building with emscripten -MAKEFILE_GENERATOR = UNIX -QMAKE_PLATFORM = wasm unix -include(../common/gcc-base.conf) -include(../common/clang.conf) - -load(device_config) -load(emcc_ver) - -# Support enabling asyncify by configuring with "-device-option QT_EMSCRIPTEN_ASYNCIFY=1" -!isEmpty(QT_EMSCRIPTEN_ASYNCIFY): { - !equals(QT_EMSCRIPTEN_ASYNCIFY, 1):!equals(QT_EMSCRIPTEN_ASYNCIFY, 0): \ - message(Error: The value for QT_EMSCRIPTEN_ASYNCIFY must be 0 or 1) - equals(QT_EMSCRIPTEN_ASYNCIFY, 1): { - QMAKE_CFLAGS += -DQT_HAVE_EMSCRIPTEN_ASYNCIFY - QMAKE_CXXFLAGS += -DQT_HAVE_EMSCRIPTEN_ASYNCIFY - QMAKE_LFLAGS += -s ASYNCIFY - - # Emscripten recommends building with optimizations when using asyncify - # in order to reduce wasm file size, and may also generate broken wasm - # (with "wasm validation error: too many locals" type errors) if optimizations - # are omitted. Enable optimizations also for debug builds. - QMAKE_LFLAGS_DEBUG += -Os - } -} - -# Declare async functions -QMAKE_LFLAGS += -s \'ASYNCIFY_IMPORTS=qt_asyncify_suspend_js,qt_asyncify_resume_js\' - -EMCC_COMMON_LFLAGS += \ - -s WASM=1 \ - -s MAX_WEBGL_VERSION=2 \ - -s ERROR_ON_UNDEFINED_SYMBOLS=1 \ - --bind \ - -s FETCH=1 \ - -s MODULARIZE=1 \ - -s EXPORT_NAME=createQtAppInstance \ - -s WASM_BIGINT=1 - -# The -s arguments can also be used with release builds, -# but are here in debug for clarity. -EMCC_COMMON_LFLAGS_DEBUG = \ - $$EMCC_COMMON_LFLAGS \ - -s DEMANGLE_SUPPORT=1 \ - # -s LIBRARY_DEBUG=1 \ #print out library calls, verbose - # -s SYSCALL_DEBUG=1 \ #print out sys calls, verbose - # -s FS_LOG=1 \ #print out filesystem ops, verbose - # -s SOCKET_DEBUG \ #print out socket,network data transfer - # -s GL_DEBUG=1 \ - --profiling-funcs - -QMAKE_LFLAGS_DEBUG += -g2 -QMAKE_LFLAGS_RELEASE += -O2 - -QMAKE_COMPILER += emscripten - -QMAKE_CC = emcc -QMAKE_CXX = em++ - -QMAKE_LINK = $$QMAKE_CXX -QMAKE_LINK_SHLIB = $$QMAKE_CXX -QMAKE_LINK_C = $$QMAKE_CC -QMAKE_LINK_C_SHLIB = $$QMAKE_CC - -QMAKE_LIBS_THREAD = $$QMAKE_CFLAGS_THREAD - -QMAKE_LFLAGS += $$EMCC_COMMON_LFLAGS -QMAKE_LFLAGS_DEBUG += $$EMCC_COMMON_LFLAGS_DEBUG - -QMAKE_PREFIX_SHLIB = lib -QMAKE_EXTENSION_SHLIB = so # llvm bitcode, linked to js in post_link -QMAKE_PREFIX_STATICLIB = lib -QMAKE_EXTENSION_STATICLIB = a # llvm bitcode - -QMAKE_AR = emar cqs -equals(QMAKE_HOST.os, Windows) { - QMAKE_RESPONSEFILE_THRESHOLD = 1 - QMAKE_AR_CMD = \ - "$(file >$(OBJECTS_DIR)/$(TARGET).rsp, $(subst \\,/,$(OBJECTS)))$$escape_expand(\\n\\t)" \ - "$(AR) $(DESTDIR)$(TARGET) @$(OBJECTS_DIR)/$(TARGET).rsp" -} - -QMAKE_DISTCLEAN += *.html *.js *.wasm - -load(qt_config) +include(../common/wasm/wasm.conf) -- cgit v1.2.3