diff options
Diffstat (limited to 'mkspecs/wasm-emscripten/qmake.conf')
-rw-r--r-- | mkspecs/wasm-emscripten/qmake.conf | 68 |
1 files changed, 51 insertions, 17 deletions
diff --git a/mkspecs/wasm-emscripten/qmake.conf b/mkspecs/wasm-emscripten/qmake.conf index e7b45d312d..855d84c039 100644 --- a/mkspecs/wasm-emscripten/qmake.conf +++ b/mkspecs/wasm-emscripten/qmake.conf @@ -5,6 +5,17 @@ QMAKE_PLATFORM = wasm unix include(../common/gcc-base.conf) include(../common/clang.conf) +load(device_config) + +# Support setting WASM_OBJECT_FILES with -device-option WASM_OBJECT_FILES=1 +!isEmpty(WASM_OBJECT_FILES): { + !equals(WASM_OBJECT_FILES, 1):!equals(WASM_OBJECT_FILES, 0): \ + message(Error: The value for WASM_OBJECT_FILES must be 0 or 1) + QMAKE_CFLAGS += -s WASM_OBJECT_FILES=$$WASM_OBJECT_FILES + QMAKE_CXXFLAGS += -s WASM_OBJECT_FILES=$$WASM_OBJECT_FILES + QMAKE_LFLAGS += -s WASM_OBJECT_FILES=$$WASM_OBJECT_FILES +} + EMTERP_FLAGS = \ -s EMTERPRETIFY=1 \ -s EMTERPRETIFY_ASYNC=1 \ @@ -15,13 +26,21 @@ EMTERP_FLAGS = \ EMCC_COMMON_LFLAGS = \ -s WASM=1 \ -s FULL_ES2=1 \ - -s ALLOW_MEMORY_GROWTH=1 \ -s USE_WEBGL2=1 \ -s NO_EXIT_RUNTIME=0 \ -s ERROR_ON_UNDEFINED_SYMBOLS=1 \ --bind \ -s \"BINARYEN_TRAP_MODE=\'clamp\'\" +EMCC_USE_PORTS_FLAGS = \ + -s USE_FREETYPE=1 \ + -s USE_ZLIB=1 + +# libpng does not build for WASM_OBJECT_FILES=1, see +# https://github.com/emscripten-core/emscripten/issues/8143 +equals(WASM_OBJECT_FILES, 0):\ + EMCC_USE_PORTS_FLAGS += -s USE_LIBPNG=1 + # The -s arguments can also be used with release builds, # but are here in debug for clarity. EMCC_COMMON_LFLAGS_DEBUG = \ @@ -34,27 +53,42 @@ EMCC_COMMON_LFLAGS_DEBUG = \ # -s SOCKET_DEBUG \ #print out socket,network data transfer -s GL_DEBUG=1 +# Set up debug/optimization flags +QMAKE_CXXFLAGS_RELEASE -= -O2 +QMAKE_CFLAGS_RELEASE -= -O2 +equals(WASM_OBJECT_FILES, 1) { + QMAKE_LFLAGS_DEBUG += -g + + QMAKE_CXXFLAGS_RELEASE += -O3 + QMAKE_CFLAGS_RELEASE += -O3 + QMAKE_LFLAGS_RELEASE += -O3 + QMAKE_CFLAGS_OPTIMIZE += -O3 + QMAKE_CFLAGS_OPTIMIZE_FULL += -Oz +} else { + # Practical debugging setup: + # "-g4" preserves function names for stack traces + # "-Os" produces reasonably sized binaries + QMAKE_CFLAGS_DEBUG -= -g + QMAKE_CXXFLAGS_DEBUG -= -g + QMAKE_CFLAGS_DEBUG += -Os -g4 + QMAKE_CXXFLAGS_DEBUG += -Os -g4 + QMAKE_LFLAGS_DEBUG += -Os -g4 + + QMAKE_CXXFLAGS_RELEASE += -O3 + QMAKE_CFLAGS_RELEASE += -O3 + QMAKE_LFLAGS_RELEASE += -O3 + QMAKE_CFLAGS_OPTIMIZE += -O3 + QMAKE_CFLAGS_OPTIMIZE_FULL += -Oz +} + + QMAKE_COMPILER += emscripten QMAKE_CC = emcc QMAKE_CXX = em++ -# Practical debugging setup: -# "-g4" preserves function names for stack traces -# "-Os" produces reasonably sized binaries -QMAKE_CFLAGS_DEBUG -= -g -QMAKE_CXXFLAGS_DEBUG -= -g -QMAKE_CFLAGS_DEBUG += -Os -g4 -QMAKE_CXXFLAGS_DEBUG += -Os -g4 -QMAKE_LFLAGS_DEBUG += -Os -g4 - -QMAKE_CXXFLAGS_RELEASE -= -O2 -QMAKE_CXXFLAGS_RELEASE += -O3 -QMAKE_CFLAGS_RELEASE -= -O2 -QMAKE_CFLAGS_RELEASE += -O3 -QMAKE_LFLAGS_RELEASE += -O3 -QMAKE_CFLAGS_OPTIMIZE += -O3 -QMAKE_CFLAGS_OPTIMIZE_FULL += -Oz +QMAKE_CFLAGS += $$EMCC_USE_PORTS_FLAGS +QMAKE_CXXFLAGS += $$EMCC_USE_PORTS_FLAGS QMAKE_LINK = $$QMAKE_CXX QMAKE_LINK_SHLIB = $$QMAKE_CXX |