summaryrefslogtreecommitdiffstats
path: root/mkspecs/wasm-emscripten
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@qt.io>2018-12-13 12:15:11 +0100
committerMorten Johan Sørvig <morten.sorvig@qt.io>2019-03-06 09:28:53 +0000
commit9ab25792b53a183fa563b0504d32a6d5b946c3dd (patch)
tree34710d2e056c0d97aa93bb9f29963ebdffba1a57 /mkspecs/wasm-emscripten
parentf792fed2ff519ffac1436e41e47cc0504d253a77 (diff)
wasm: Add WASM_OBJECT_FILES=1 build mode
This mode significantly improves build (link) time. Opt-in by passing “-device-option WASM_OBJECT_FILES=1” to configure. This requires a custom emsdk build which uses upstream llvm. Task-number: QTBUG-72537 Change-Id: I47bab2b58ae7e49ca104233ec14fff7b93516d36 Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Diffstat (limited to 'mkspecs/wasm-emscripten')
-rw-r--r--mkspecs/wasm-emscripten/qmake.conf63
1 files changed, 45 insertions, 18 deletions
diff --git a/mkspecs/wasm-emscripten/qmake.conf b/mkspecs/wasm-emscripten/qmake.conf
index a9ded4be12..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 \
@@ -22,10 +33,14 @@ EMCC_COMMON_LFLAGS = \
-s \"BINARYEN_TRAP_MODE=\'clamp\'\"
EMCC_USE_PORTS_FLAGS = \
- -s USE_LIBPNG=1 \
-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 = \
@@ -38,6 +53,35 @@ 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
@@ -46,23 +90,6 @@ QMAKE_CXX = em++
QMAKE_CFLAGS += $$EMCC_USE_PORTS_FLAGS
QMAKE_CXXFLAGS += $$EMCC_USE_PORTS_FLAGS
-# 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_LINK = $$QMAKE_CXX
QMAKE_LINK_SHLIB = $$QMAKE_CXX
QMAKE_LINK_C = $$QMAKE_CC