diff options
author | mread <qt-info@nokia.com> | 2010-10-08 14:31:09 (GMT) |
---|---|---|
committer | mread <qt-info@nokia.com> | 2010-10-11 11:37:51 (GMT) |
commit | c27f1586d7c4c56af1f46fa09ad77f03b7736e5d (patch) | |
tree | bf375bd9b206bc07e110b9c104056a96c7a35e2f /src/s60main/s60main.pro | |
parent | 3c2296647d2e7ddda4df6679a622b0bf46b34c35 (diff) | |
download | Qt-c27f1586d7c4c56af1f46fa09ad77f03b7736e5d.zip Qt-c27f1586d7c4c56af1f46fa09ad77f03b7736e5d.tar.gz Qt-c27f1586d7c4c56af1f46fa09ad77f03b7736e5d.tar.bz2 |
Making the hybrid allocator change compatible across all 4.7.x
The hybrid allocator introduced a new export to qtcore.dll and made
all apps link to it when they linked with the corresponding qtmain.lib.
However, this made all apps depend on this new export, and since that
export is not present in early 4.7.x release, these apps would not run
with the Qt DLLs from those releases, which breaks Qt's compatibility
guarantees for patch releases. This change makes apps compatible with
all 4.7.x releases again.
For export frozen Qt builds (the sort that should be compatible across
all 4.7.x releases), qtmain.lib no longer forces a static import link
to qt_symbian_SetupThreadHeap(). Instead it dynamically loads
qtcore.dll, looks up qt_symbian_SetupThreadHeap(), and calls it if
present. If the function is not present, or on emulator builds where we
know that qtcore will use the system allocator creation function, we
call the system allocator creation function.
For export unfrozen builds, there is no compatibility between builds or
releases, so we do use a static import link to
qt_symbian_SetupThreadHeap(), as we have to use the qtcore dll we have
built with it anyway.
This has been tested as follows:
S60 3.1 SDK, def files not frozen. App compiled against latest code
runs on the corresponding DLLs, and does not start with 4.7.0, which
is what we expect.
S60 3.2 SDK, def files frozen. App compiled against latest code runs
on the corresponding DLLs with the new allocator, and runs on 4.7.0
DLLs with the old allocator. Which demonstrates compatibility.
S60 5.0 SDK, def files not frozen, debug build. Same result as for
the 3.1 SDK, which demonstrates debug build working too (all other
tests are release build tests).
S60 5.0 SDK, def files frozen, debug build. Same result as on S60 3.2
SDK, which demonstrates debug build working with def files.
Symbian^3 SDK, def files frozen. Same result as on S60 3.2 SDK,
demonstrating Symbian^3 compatibility.
Symbian^4, code and tests compile and does not affect running.
*** This change is only required for 4.7. It is not needed for 4.8+ ***
*** If this change appears in 4.8+, it can be reverted. ***
Task-number: QT-4080
Reviewed-by: Shane Kearns
Diffstat (limited to 'src/s60main/s60main.pro')
-rw-r--r-- | src/s60main/s60main.pro | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/s60main/s60main.pro b/src/s60main/s60main.pro index 664f155..8ab3bd3 100644 --- a/src/s60main/s60main.pro +++ b/src/s60main/s60main.pro @@ -31,6 +31,9 @@ symbian { # against GCCE apps, so remove it MMP_RULES -= $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA linux-armcc:QMAKE_CXXFLAGS *= --export_all_vtbl + + # Flag if exports are not frozen to avoid lookup of qtcore allocator creation function by ordinal + contains(CONFIG, def_files_disabled): DEFINES += QT_EXPORTS_NOT_FROZEN } else { error("$$_FILE_ is intended only for Symbian!") } |