[Qt] MSVC: unresolved external symbol __DllMainCRTStartup@12 staging
authorSimon Hausmann <simon.hausmann@nokia.com>
Mon, 16 Jul 2012 12:54:25 +0000 (14:54 +0200)
committerSimon Hausmann <simon.hausmann@nokia.com>
Mon, 16 Jul 2012 12:54:25 +0000 (14:54 +0200)
commit2dc9f2f21a5c3e9211b2fe29c70089705f5861c0
tree213b72a3f145e053be41e1a318702166aa2e546e
parent208701af7425fb38d7426f3133a21a2a28bac390
[Qt] MSVC: unresolved external symbol __DllMainCRTStartup@12
https://bugs.webkit.org/show_bug.cgi?id=91229

Reviewed by NOBODY (OOPS!).

In order to successfully link a DLL on Windows we need to have at least
one object file (or compilation unit). The forward export header files were
supposed to be that, but unfortunately the rule in win32/default_post.prf for
creating the header files had some bugs, among others that it did an exists()
check on the depending static library. At the time qmake is ran those libraries
do not exist yet and therefore the corresponding extra compiler rules were never
created, resulting in empty OBJECTS/SOURCES.

Even without such an exists() check, qmake extra compilers require the files
referred to in the .input variable to exist at qmake time. In this case the input
files were the static libraries, which do not exist yet.

This patch solves this by using a qmake extra target instead of extra
compiler, which does not have this limitation. The target is referenced
through the extension of GENERATED_SOURCES.

The patch also adds a d/_debug suffix for debug builds, do allow for separate
symbol exports if necessary.

* Scripts/generate-win32-export-forwards: Support multiple input files, i.e.
consider the last argument to be the output file and everything else input.
* qmake/mkspecs/features/win32/default_post.prf:
Tools/ChangeLog
Tools/Scripts/generate-win32-export-forwards
Tools/qmake/mkspecs/features/win32/default_post.prf