diff options
author | Robert Griebl <rgriebl@trolltech.com> | 2009-06-10 11:46:23 (GMT) |
---|---|---|
committer | Robert Griebl <rgriebl@trolltech.com> | 2009-06-10 11:46:23 (GMT) |
commit | 7604f8087f88171ef933d8ae08f501467e647338 (patch) | |
tree | 51d071f462ed48d0b25884d9f62b8ba11c5dff13 /mkspecs | |
parent | 8c265860b41214daade7c8a28237c1e07ea71a3c (diff) | |
download | Qt-7604f8087f88171ef933d8ae08f501467e647338.zip Qt-7604f8087f88171ef933d8ae08f501467e647338.tar.gz Qt-7604f8087f88171ef933d8ae08f501467e647338.tar.bz2 |
Make Qt exception safer.
Squashed commit of the branch haralds-haralds-qt-s60-topics/topic/exceptions,
which also contains the full history.
Rev-By: Harald Fernengel
Rev-By: Ralf Engels
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/symbian/platform_paths.prf | 15 | ||||
-rw-r--r-- | mkspecs/features/symbian/stl.prf | 27 |
2 files changed, 35 insertions, 7 deletions
diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf index 31ba09e..c9972cc 100644 --- a/mkspecs/features/symbian/platform_paths.prf +++ b/mkspecs/features/symbian/platform_paths.prf @@ -214,8 +214,12 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) { OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) - OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) - + exists($$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5)) { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) + } else { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) + } + OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \ @@ -413,7 +417,12 @@ exists($${EPOCROOT}epoc32/include/platform_paths.prf) { OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) - OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) + # stlportv5 is preferred over stlport as it has the throwing version of operator new + exists($$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5)) { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) + } else { + OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) + } OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf index b91d783..f01cc18 100644 --- a/mkspecs/features/symbian/stl.prf +++ b/mkspecs/features/symbian/stl.prf @@ -9,11 +9,30 @@ DEFINES *= $$STLLIB_USAGE_DEFINES # Legacy support requires some hardcoded stdapis paths. # Note: Also the new header is used from STL when it is enabled -INCLUDEPATH += \ - $${EPOCROOT}epoc32/include/stdapis/stlport \ - $$OS_LAYER_STDCPP_SYSTEMINCLUDE -LIBS *= -llibstdcpp.dll +INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE \ + $${EPOCROOT}epoc32/include/stdapis/stlport # Remove mkspecs/common/symbian/stl-off from beginning of includepath # in order to use new and delete operators from STL INCLUDEPATH -= $$[QT_INSTALL_PREFIX]/mkspecs/common/symbian/stl-off + +# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new +exists($${EPOCROOT}epoc32/release/armv5/urel/libstdcppv5.dll ) { + LIBS *= -llibstdcppv5.dll + + # STDCPP turns on standard C++ new behaviour in SBSv2 + MMP_RULES += "STDCPP" + + # defining __SYMBIAN_STDCPP_SUPPORT__ turns on standard C++ new behaviour pre SBSv2 + DEFINES += "__SYMBIAN_STDCPP_SUPPORT__" + + # operator new is actually supplied in stdnew.lib for hardware builds + eabiStdNewLibBlock = \ + "$${LITERAL_HASH}ifdef EABI" \ + "LIBRARY stdnew.lib" \ + "$${LITERAL_HASH}endif" + + MMP_RULES += eabiStdNewLibBlock +} else { + LIBS *= -llibstdcpp.dll +} |