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>
This commit is contained in:
parent
f792fed2ff
commit
9ab25792b5
@ -291,6 +291,8 @@ defineTest(qtConfTest_architecture) {
|
||||
content = $$cat($$test_out_dir/libarch.so, blob)
|
||||
else: wasm:exists($$test_out_dir/arch.wasm): \
|
||||
content = $$cat($$test_out_dir/arch.wasm, blob)
|
||||
else: wasm:exists($$test_out_dir/arch.o): \
|
||||
content = $$cat($$test_out_dir/arch.o, blob)
|
||||
else: \
|
||||
error("$$eval($${1}.label) detection binary not found.")
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user