summaryrefslogtreecommitdiffstats
path: root/src/s60main/s60main.pro
diff options
context:
space:
mode:
authormread <qt-info@nokia.com>2010-10-08 14:31:09 (GMT)
committermread <qt-info@nokia.com>2010-10-11 11:37:51 (GMT)
commitc27f1586d7c4c56af1f46fa09ad77f03b7736e5d (patch)
treebf375bd9b206bc07e110b9c104056a96c7a35e2f /src/s60main/s60main.pro
parent3c2296647d2e7ddda4df6679a622b0bf46b34c35 (diff)
downloadQt-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.pro3
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!")
}