summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorRobert Griebl <rgriebl@trolltech.com>2009-06-10 11:46:23 (GMT)
committerRobert Griebl <rgriebl@trolltech.com>2009-06-10 11:46:23 (GMT)
commit7604f8087f88171ef933d8ae08f501467e647338 (patch)
tree51d071f462ed48d0b25884d9f62b8ba11c5dff13 /mkspecs
parent8c265860b41214daade7c8a28237c1e07ea71a3c (diff)
downloadQt-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.prf15
-rw-r--r--mkspecs/features/symbian/stl.prf27
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
+}