qt5base-lts/mkspecs/wasm-emscripten/qmake.conf
Eskil Abrahamsen Blomfeldt 3ca05b2a2e Wasm: Build with Qt's freetype, png and zlib
Compilation breaks on Windows and macOS hosts with USE_ZLIB=1.

In addition, it turns out that the versions of the libraries in
Emscripten Ports are outdated. Since we have newer versions
of these libraries in Qt already, we will just use those.

This is a revert of 70b558ad5b.

Task-number: QTQAINFRA-2835
Change-Id: Ic2642b7d319a3447fd08843657eb0535255e0449
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
2019-03-19 20:38:28 +00:00

100 lines
2.9 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
QMAKE_DISTCLEAN += *.html *.js *.wasm
load(qt_config)