summaryrefslogtreecommitdiffstats
path: root/mkspecs/features/symbian/stl.prf
blob: 1fd5e16e32fe59d676366b94eb31cbfc040a5c00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
CONFIG -= stl_off

# STL usage in S60 requires the "OPTION CW -wchar_t on" mmp statement to be used.
# This statement is added via $$STLLIB_USAGE_CW_FLAGS variable below.
# S60 STL documentation instructs to use also "MACRO  _WCHAR_T_DECLARED" statement,
# but QtS60 will not compile if that statement is set.

QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS 

# Path to stlport headers
INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE 

# Remove mkspecs/common/symbian/stl-off from beginning of includepath 
# in order to use new and delete operators from STL
INCLUDEPATH -= $$[QT_INSTALL_DATA]/mkspecs/common/symbian/stl-off

# libstdcppv5 is preferred over libstdcpp as it has/uses the throwing version of operator new
# STDCPP turns on standard C++ new behaviour (ie. throwing new)
use_libstdcppv5 = true

# Fall back to old implementation if that is the only one that is found
exists($${EPOCROOT}epoc32/release/armv5/lib/libstdcpp.dso)|exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcpp.dll) {
    !exists($${EPOCROOT}epoc32/release/armv5/lib/libstdcppv5.dso):!exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcppv5.dll) {
        use_libstdcppv5 = false
    }
}

equals(use_libstdcppv5, true) {
    LIBS *= -llibstdcppv5.dll
    symbian-abld|symbian-sbsv2 {
        MMP_RULES *= "STDCPP"
    } else {
        DEFINES *= __SYMBIAN_STDCPP_SUPPORT__
        LIBS *= -lstdnew.dll
    }
} else {
    LIBS *= -llibstdcpp.dll
}

# use the runtime support for nested exceptions, if a library is available
exists($${EPOCROOT}epoc32/release/armv5/urel/usrt_nx_*.lib) {
    CONFIG += nested_exceptions
}