Make RCC handle bigger binaries
authorhjk <hjk121@nokiamail.com>
Mon, 26 May 2014 12:21:10 +0000 (14:21 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Fri, 6 Jun 2014 13:41:00 +0000 (15:41 +0200)
commit5395180fcb9a68b1590ce4bf29ef26745161403f
tree194d35c381fe810883542914d2d9c3538a94a7fd
parent7cbd9cffd3b6f367fc71adb26428a59502d09885
Make RCC handle bigger binaries

Traditionally, RCC in "C mode" was meant to bundle small resources into
a binary, like help texts or an occasional icon. RCC produces a .cpp
file containing the actual data in a char array which is then passed
to the compiler and linker as a normal source file. Larger resources
should be compiled in RCC's binary mode and loaded at run time.

Current Qt Quick use tries to deploy large hunks of data in "C mode",
causing heavy compiler/system load.

This patch works around the issue by splitting the process into
three parts:

1. Create a C++ skeleton, as usual, but use a placeholder array
   with "easily compilable" (mostly NULs) data instead.
2. Compile the skeleton file.
3. Replace the placeholder data with the real binary data.

time (qmake5 ; make clean ; make) takes 1.3 s real time for a
100 MB resource here, and there is still room for improving patching
performance if really needed.

Change-Id: I10a1645fd86a95a7d5663c89e19b05cb3b43ed1b
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
mkspecs/features/resources.prf
src/tools/rcc/main.cpp
src/tools/rcc/rcc.cpp
src/tools/rcc/rcc.h
tests/auto/tools/rcc/data/images/images.expected