9dbbccf7a2
If qmake is called without sh.exe in PATH, the relative paths
in OBJECTS will contain backslashes as separator.
Anyhow, emar needs forward slashes. Use GNU make's subst command
to fix this.
This amends 22c1e10e19
.
Task-number: QTBUG-75257
Change-Id: Iacc6fe69cf470f35c6ddd829be7a80944346452d
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
106 lines
3.1 KiB
Plaintext
106 lines
3.1 KiB
Plaintext
# 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)
|
|
|
|
# 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 \
|
|
-s \"EMTERPRETIFY_FILE=\'data.binary\'\" \
|
|
-s ASSERTIONS=1 \
|
|
--profiling-funcs
|
|
|
|
EMCC_COMMON_LFLAGS = \
|
|
-s WASM=1 \
|
|
-s FULL_ES2=1 \
|
|
-s USE_WEBGL2=1 \
|
|
-s NO_EXIT_RUNTIME=0 \
|
|
-s ERROR_ON_UNDEFINED_SYMBOLS=1 \
|
|
--bind \
|
|
-s \"BINARYEN_TRAP_MODE=\'clamp\'\"
|
|
|
|
# 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 ASSERTIONS=2 \
|
|
-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
|
|
|
|
# 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++
|
|
|
|
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_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)
|