summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/assistant.prf9
-rw-r--r--mkspecs/features/debug_and_release.prf2
-rw-r--r--mkspecs/features/designer.prf3
-rw-r--r--mkspecs/features/egl.prf32
-rw-r--r--mkspecs/features/moc.prf4
-rw-r--r--mkspecs/features/qt.prf24
-rw-r--r--mkspecs/features/qt_functions.prf16
-rw-r--r--mkspecs/features/qttest_p4.prf7
-rw-r--r--mkspecs/features/static.prf10
-rw-r--r--mkspecs/features/symbian/application_icon.prf51
-rw-r--r--mkspecs/features/symbian/armcc_warnings.prf13
-rw-r--r--mkspecs/features/symbian/data_caging_paths.prf80
-rw-r--r--mkspecs/features/symbian/default_post.prf31
-rw-r--r--mkspecs/features/symbian/default_pre.prf2
-rw-r--r--mkspecs/features/symbian/epocallowdlldata.prf1
-rw-r--r--mkspecs/features/symbian/moc.prf16
-rw-r--r--mkspecs/features/symbian/platform_paths.prf480
-rw-r--r--mkspecs/features/symbian/qt.prf34
-rw-r--r--mkspecs/features/symbian/stl.prf25
-rw-r--r--mkspecs/features/symbian/stl_off.prf2
-rw-r--r--mkspecs/features/uic.prf6
-rw-r--r--mkspecs/features/uitools.prf4
-rw-r--r--mkspecs/features/unix/opengl.prf26
-rw-r--r--mkspecs/features/win32/opengl.prf12
-rw-r--r--mkspecs/features/win32/rtti_off.prf1
25 files changed, 861 insertions, 30 deletions
diff --git a/mkspecs/features/assistant.prf b/mkspecs/features/assistant.prf
deleted file mode 100644
index 25e5d4dcc..000000000
--- a/mkspecs/features/assistant.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-
-INCLUDEPATH = $$QMAKE_INCDIR_QT/QtAssistant $$INCLUDEPATH
-
-mac:!static:contains(QT_CONFIG, qt_framework) {
- qtAddLibrary(QtAssistant)
-} else {
- qtAddLibrary(QtAssistantClient)
-}
-QT += network
diff --git a/mkspecs/features/debug_and_release.prf b/mkspecs/features/debug_and_release.prf
index 8b8932184..ef33789ca 100644
--- a/mkspecs/features/debug_and_release.prf
+++ b/mkspecs/features/debug_and_release.prf
@@ -1 +1 @@
-!macx-xcode:addExclusiveBuilds(debug, Debug, release, Release)
+!macx-xcode:!symbian:addExclusiveBuilds(debug, Debug, release, Release)
diff --git a/mkspecs/features/designer.prf b/mkspecs/features/designer.prf
index 61a30cfd3..fa40caab3 100644
--- a/mkspecs/features/designer.prf
+++ b/mkspecs/features/designer.prf
@@ -1,4 +1,5 @@
-QT += xml script
+QT += xml
+contains(QT_CONFIG, script): QT += script
qt:load(qt)
plugin:DEFINES += QDESIGNER_EXPORT_WIDGETS
diff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf
index 22002c385..00f70d3a6 100644
--- a/mkspecs/features/egl.prf
+++ b/mkspecs/features/egl.prf
@@ -1,3 +1,29 @@
-!isEmpty(QMAKE_INCDIR_EGL): INCLUDEPATH += $$QMAKE_INCDIR_EGL
-!isEmpty(QMAKE_LIBDIR_EGL): LIBS += -L$$QMAKE_LIBDIR_EGL
-!isEmpty(QMAKE_LIBS_EGL): LIBS += $$QMAKE_LIBS_EGL
+# On UNIX, we can use config tests to figure out if egl.h is in
+# EGL/egl.h or GLES/egl.h. Sadly, there are no config tests on WinCE
+# so we have to assume that for GLES 1.1 (CL), the EGL header is in
+# GLES/egl.h. We also assume there is no separate libEGL.lib library,
+# so we use the GL library instead.
+
+wince*:contains(QT_CONFIG, opengles1) {
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1
+ LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1
+ for(p, QMAKE_LIBDIR_OPENGL_ES1) {
+ exists($$p):LIBS_PRIVATE += -L$$p
+ }
+ DEFINES += QT_GLES_EGL
+} else:wince*:contains(QT_CONFIG, opengles1cl) {
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1CL
+ LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1CL
+ LIBS += $$QMAKE_LFLAGS_EGL
+ for(p, QMAKE_LIBDIR_OPENGL_ES1CL) {
+ exists($$p):LIBS_PRIVATE += -L$$p
+ }
+ DEFINES += QT_GLES_EGL
+} else {
+ INCLUDEPATH += $$QMAKE_INCDIR_EGL
+ LIBS_PRIVATE += $$QMAKE_LIBS_EGL
+ LIBS += $$QMAKE_LFLAGS_EGL
+ for(p, QMAKE_LIBDIR_EGL) {
+ exists($$p):LIBS_PRIVATE += -L$$p
+ }
+}
diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf
index c5af2982a..42ce1bc17 100644
--- a/mkspecs/features/moc.prf
+++ b/mkspecs/features/moc.prf
@@ -1,7 +1,7 @@
#global defaults
isEmpty(QMAKE_MOC) {
- win32:QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
+ contains(QMAKE_HOST.os,Windows):QMAKE_MOC = $$[QT_INSTALL_BINS]\moc.exe
else:QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
}
isEmpty(MOC_DIR):MOC_DIR = .
@@ -85,7 +85,7 @@ INCREDIBUILD_XGE += moc_source
#make sure we can include these files
moc_dir_short = $$MOC_DIR
-win32:moc_dir_short ~= s,^.:,/,
+contains(QMAKE_HOST.os,Windows):moc_dir_short ~= s,^.:,/,
contains(moc_dir_short, ^[/\\\\].*):INCLUDEPATH += $$MOC_DIR
else:INCLUDEPATH += $$OUT_PWD/$$MOC_DIR
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index a03a3139d..af93f1190 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -36,7 +36,7 @@ INCLUDEPATH = $$QMAKE_INCDIR_QT $$INCLUDEPATH #prepending prevents us from picki
win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt
# As order does matter for static libs, we reorder the QT variable here
-TMPLIBS = multimedia webkit phonon dbus testlib script scripttools svg qt3support sql xmlpatterns xml egl opengl openvg gui network core
+TMPLIBS = declarative webkit phonon multimedia dbus testlib script scripttools svg qt3support sql xmlpatterns xml egl opengl openvg gui network core
for(QTLIB, $$list($$TMPLIBS)) {
contains(QT, $$QTLIB): QT_ORDERED += $$QTLIB
}
@@ -118,6 +118,14 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
DEPLOYMENT *= qt_additional_plugin_$${QTPLUG}
}
+ isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:symbian: {
+ QT_ITEM = $${QTPLUG}.dll
+
+ eval(qt_additional_plugin_$${QTPLUG}.sources = $${QT_ITEM})
+ eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH})
+
+ DEPLOYMENT *= qt_additional_plugin_$${QTPLUG}
+ }
}
}
#specific module settings
@@ -150,8 +158,18 @@ for(QTLIB, $$list($$lower($$unique(QT)))) {
else:isEqual(QTLIB, scripttools):qlib = QtScriptTools
else:isEqual(QTLIB, testlib):qlib = QtTest
else:isEqual(QTLIB, dbus):qlib = QtDBus
- else:isEqual(QTLIB, phonon):qlib = phonon
- else:isEqual(QTLIB, webkit):qlib = QtWebKit
+ else:isEqual(QTLIB, phonon) {
+ qlib = phonon
+ INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon_compat/phonon
+ INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon_compat
+ INCLUDEPATH += $$QMAKE_INCDIR_QT/phonon/Phonon
+
+ # The Helix backend requires this. Since we can't let a plugin set it,
+ # we bump the values for all Symbian Phonon plugins.
+ symbian:isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x040000 0x1600000
+
+ } else:isEqual(QTLIB, webkit):qlib = QtWebKit
+ else:isEqual(QTLIB, declarative):qlib = QtDeclarative
else:isEqual(QTLIB, multimedia):qlib = QtMultimedia
else:message("Unknown QT: $$QTLIB"):qlib =
!isEmpty(qlib) {
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 8956ef7b0..1be6d9bb4 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -45,8 +45,22 @@ defineTest(qtAddLibrary) {
}
}
}
+ symbian {
+ isEqual(LIB_NAME, QtGui) {
+ # Needed for #include <QtGui> because qs60mainapplication.h includes aknapp.h
+ INCLUDEPATH *= $$MW_LAYER_SYSTEMINCLUDE
+ }
+ isEqual(LIB_NAME, QtWebKit) {
+ # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain
+ INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtXmlPatterns
+ }
+ isEqual(LIB_NAME, QtXmlPatterns) {
+ # Needed for #include <QtXmlPatterns/QtXmlPatterns> because relative inclusion problem in toolchain
+ INCLUDEPATH *= $$QMAKE_INCDIR_QT/QtNetwork
+ }
+ }
isEmpty(LINKAGE) {
- CONFIG(debug, debug|release) {
+ if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
win32:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}d
mac:LINKAGE = -l$${LIB_NAME}$${QT_LIBINFIX}_debug
}
diff --git a/mkspecs/features/qttest_p4.prf b/mkspecs/features/qttest_p4.prf
index e9d79b024..525e7b2c1 100644
--- a/mkspecs/features/qttest_p4.prf
+++ b/mkspecs/features/qttest_p4.prf
@@ -3,6 +3,13 @@ CONFIG += qt warn_on console depend_includepath
qtAddLibrary(QtTest)
+symbian:{
+ TARGET.EPOCHEAPSIZE = 0x100000 0x2000000
+# DEFINES += QTEST_NO_SPECIALIZATIONS
+ TARGET.CAPABILITY="ALL -TCB"
+ RSS_RULES ="group_name=\"QtTests\";"
+}
+
# prefix test binary with tst_
!contains(TARGET, ^tst_.*):TARGET = $$join(TARGET,,"tst_")
diff --git a/mkspecs/features/static.prf b/mkspecs/features/static.prf
index 6e2b54f4c..ef3af074b 100644
--- a/mkspecs/features/static.prf
+++ b/mkspecs/features/static.prf
@@ -6,4 +6,14 @@ contains(TEMPLATE, ".*lib"):{
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_STATIC_LIB
}
}
+
+mac {
+ QMAKE_LFLAGS += $$QMAKE_LFLAGS_STATIC_LIB
+}
+
+symbian {
+ # we don't care about exports from static libraries, as they don't end up in DEF files
+ MMP_RULES -= $$MMP_RULES_DONT_EXPORT_ALL_CLASS_IMPEDIMENTA
+}
+
!static_and_shared:fix_output_dirs:fixExclusiveOutputDirs(static, shared)
diff --git a/mkspecs/features/symbian/application_icon.prf b/mkspecs/features/symbian/application_icon.prf
new file mode 100644
index 000000000..1edbe1449
--- /dev/null
+++ b/mkspecs/features/symbian/application_icon.prf
@@ -0,0 +1,51 @@
+load(data_caging_paths)
+
+# If no_icon keyword exist, the S60 UI app is just made hidden. This because S60 app FW
+# requires the registration resource file to exist always
+contains( CONFIG, no_icon ) {
+ symbian:RSS_RULES ="hidden = KAppIsHidden;"
+ CONFIG -= no_icon
+} else {
+# There is no point in compiling the MIF icon if no_icon CONFIGS is set
+ !isEmpty(ICON) {
+
+ !count(ICON, 1) {
+ ICON = $$first(ICON)
+ warning("Only first icon specified in ICON variable is used: $$ICON")
+ }
+
+ # Try to produce indentical string to fixedTarget in SymbianMakefileGenerator, replaced chars taken
+ # from SymbianMakefileGenerator::removeSpecialCharacters.
+ #
+ # Note: it is not a major problem even baseTarget is not 100% identical to fixedTarget since qmake
+ # only uses filename from RSS_RULES.icon_file when referring to icon file name.
+ baseTarget = $$basename(TARGET)
+ baseTarget = $$replace(baseTarget, /,_)
+ baseTarget = $$replace(baseTarget, \\,_)
+ baseTarget = $$replace(baseTarget, -,_)
+ baseTarget = $$replace(baseTarget, :,_)
+ baseTarget = $$replace(baseTarget, \.,_)
+ baseTarget = $$replace(baseTarget, " ",_)
+
+ # Note: symbian-sbsv2 builds can't utilize extra compiler for mifconv, so ICON handling is done in code
+ symbian-abld {
+ #Makefile: requires paths with backslash
+ ICON = $$replace( ICON, /, \\)
+
+ # Extra compiler rules for mifconv
+ mifconv.output = ${ZDIR}$$APP_RESOURCE_DIR/$${baseTarget}.mif
+ # Based on: http://www.forum.nokia.com/document/Cpp_Developers_Library
+ # svg-t icons should always use /c32 depth
+ mifconv.commands = mifconv ${QMAKE_FILE_OUT} /c32 ${QMAKE_FILE_IN}
+ mifconv.input = ICON
+ mifconv.CONFIG = no_link combine
+ # target_predeps together with combine seems not to work correctly, lets define it by ourselves
+ PRE_TARGETDEPS += $$mifconv.output
+ QMAKE_EXTRA_COMPILERS += mifconv
+ }
+ # Rules to use generated MIF file from symbian resources
+ RSS_RULES.number_of_icons = $$size(ICON)
+ RSS_RULES.icon_file = $$APP_RESOURCE_DIR/$${baseTarget}.mif
+ }
+}
+
diff --git a/mkspecs/features/symbian/armcc_warnings.prf b/mkspecs/features/symbian/armcc_warnings.prf
new file mode 100644
index 000000000..72bc99620
--- /dev/null
+++ b/mkspecs/features/symbian/armcc_warnings.prf
@@ -0,0 +1,13 @@
+# 111: Statement is unreachable
+# 185: Dynamic initialization in unreachable code
+# 191: Type qualifier is meaningless on cast type
+# 368: class "<class>" defines no constructor to initialize the following: <member>
+# (Disabled because there are other ways of assigning besides constructors)
+# 1293: Assignment in condition
+# 1294: pre-ANSI C style functions declarations (used a lot in 3rd party code)
+# 2874: <variable> may be used before being set (this one sounds useful, but
+# it's output also for class instances, making it useless in practice)
+QMAKE_CFLAGS.ARMCC += --diag_suppress 111,185,191,368,1293,1294,2874
+
+# 6780: <origvis> visibility removed from symbol '<symname>' through <impexp>
+QMAKE_LFLAGS.ARMCC += --diag_suppress 6780
diff --git a/mkspecs/features/symbian/data_caging_paths.prf b/mkspecs/features/symbian/data_caging_paths.prf
new file mode 100644
index 000000000..3ed566134
--- /dev/null
+++ b/mkspecs/features/symbian/data_caging_paths.prf
@@ -0,0 +1,80 @@
+#
+# ==============================================================================
+# Name : data_caging_paths.prf
+# Part of :
+# Interface : Data Caging Path Definitions API for Qt/S60
+# Description : Predefined include paths to be used in the pro-files for the
+# paths related to data caging.
+#
+# Usage examples:
+#
+# # Load these definitions on pro-file if needed:
+# load(data_caging_paths)
+#
+# # These variables are mostly useful when specifying deployment
+#
+# myLib.sources = myLib.dll
+# myLib.path = $$SHARED_LIB_DIR
+# DEPLOYMENT += myLib
+#
+# # Note: Do not use $$PLUGINS_DIR or $$PLUGINS_1_DIR to deploy Qt plugins.
+# # $$QT_PUBLIC_PLUGINS_BASE specifies the public base directory for Qt
+# # plugin stubs:
+#
+# myPublicImageFormatPlugin.sources = myImageFormat.dll
+# myPublicImageFormatPlugin.path = $$QT_PLUGINS_BASE_DIR/imageformats
+# DEPLOYMENT += myPublicImageFormatPlugin
+#
+# ==============================================================================
+
+exists($${EPOCROOT}epoc32/include/data_caging_paths.prf) {
+
+ # Load platform specific paths
+ load($${EPOCROOT}epoc32/include/data_caging_paths.prf)
+
+} else {
+ # No platform specific paths provided, use default paths
+
+ APPARC_RECOGNISER_RESOURCES_DIR = /resource/apps/registrationresourcefiles
+ APP_BITMAP_DIR = /resource/apps
+ APP_RESOURCE_DIR = /resource/apps
+ BITMAP_DIR = /resource/apps
+ BIOFILE_DIR = /resource/messaging/bif
+ CHARCONV_PLUGIN_DIR = /resource/charconv
+ CONTACTS_RESOURCE_DIR = /resource/cntmodel
+ CTRL_PANEL_RESOURCE_DIR = /resource/controls
+ CONVERTER_PLUGIN_RESOURCE_DIR = /resource/convert
+ ECOM_RESOURCE_DIR = /resource/plugins
+ ERROR_RESOURCE_DIR = /resource/errors
+ PROGRAMS_DIR = /sys/bin
+ FEP_RESOURCES_DIR = /resource/fep
+ HELP_FILE_DIR = /resource/help
+ LOG_ENGINE_RESOURCE_DIR = /resource/logengine
+ MTM_RESOURCE_DIR = /resource/messaging
+ MTM_INFO_FILE_DIR = /resource/messaging/mtm
+ PRINTER_DRIVER_DIR = /resource/printers
+ SHARED_LIB_DIR = /sys/bin
+ UIKLAF_RESOURCE_DIR = /resource/uiklaf
+ WAPPUSH_PLUGIN_RESOURCE_DIR = /resource/messaging/wappush
+ WATCHER_PLUGIN_RESOURCE_DIR = /resource/messaging/watchers
+ RECOGNISERS_DIR = /sys/bin
+ PARSERS_DIR = /sys/bin
+ NOTIFIERS_DIR = /sys/bin
+ PLUGINS_DIR = /sys/bin
+ PLUGINS_1_DIR = /sys/bin
+ RESOURCE_FILES_DIR = /resource
+
+ CA_CERTIFICATES_DIR = /private/101f72a6
+ COMMDB_DIR = /private/100012a5
+ SS_CONFIG_FILE_DIR = /private/101f7989/esock
+ TRUSTED_FONTS_DIR = /private/10003a16/fonts
+ UNTRUSTED_FONT_DIR = /private/10003a16/import/fonts
+ WINDOW_SERVER_INI_DIR = /private/10003b20
+ SKINS_DIR = /private/10207114
+ BOOTDATA_DIR = /resource/bootdata
+}
+
+isEmpty(QT_PLUGINS_BASE_DIR): QT_PLUGINS_BASE_DIR = /$$RESOURCE_FILES_DIR/qt/plugins
+isEmpty(HW_ZDIR): HW_ZDIR = epoc32/data/z
+isEmpty(REG_RESOURCE_DIR): REG_RESOURCE_DIR = /private/10003a3f/apps
+isEmpty(REG_RESOURCE_IMPORT_DIR): REG_RESOURCE_IMPORT_DIR = /private/10003a3f/import/apps \ No newline at end of file
diff --git a/mkspecs/features/symbian/default_post.prf b/mkspecs/features/symbian/default_post.prf
new file mode 100644
index 000000000..7c9e8eea1
--- /dev/null
+++ b/mkspecs/features/symbian/default_post.prf
@@ -0,0 +1,31 @@
+load(default_post)
+
+contains(TEMPLATE, ".*app") {
+ contains(CONFIG, stdbinary) {
+ QMAKE_LIBS +=
+ } else:contains(QT, gui):contains(CONFIG,qt) {
+ S60MAIN_LIBS = -leuser
+ QMAKE_LIBS += -lqtmain.lib $$S60MAIN_LIBS
+ } else {
+ QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ }
+}
+contains(TEMPLATE, lib): {
+ contains(CONFIG, staticlib)|contains(CONFIG, static): {
+ # Static libs should not have LIBRARY statements in S60
+ QMAKE_LIBS =
+ # Static libs do not need def files
+ MMP_RULES -= EXPORTUNFROZEN
+ }
+ contains(CONFIG, plugin):!contains(CONFIG, stdbinary): {
+ # Plugins based on normal libraries have predefined def file
+ MMP_RULES -= EXPORTUNFROZEN
+ }
+} else {
+ # Applications don't need this
+ MMP_RULES -= EXPORTUNFROZEN
+}
+
+contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG,qt) {
+ load(application_icon.prf)
+} \ No newline at end of file
diff --git a/mkspecs/features/symbian/default_pre.prf b/mkspecs/features/symbian/default_pre.prf
new file mode 100644
index 000000000..ddb23b315
--- /dev/null
+++ b/mkspecs/features/symbian/default_pre.prf
@@ -0,0 +1,2 @@
+CONFIG = stl_off $$CONFIG
+load(default_pre)
diff --git a/mkspecs/features/symbian/epocallowdlldata.prf b/mkspecs/features/symbian/epocallowdlldata.prf
new file mode 100644
index 000000000..b336f488f
--- /dev/null
+++ b/mkspecs/features/symbian/epocallowdlldata.prf
@@ -0,0 +1 @@
+TARGET.EPOCALLOWDLLDATA=1
diff --git a/mkspecs/features/symbian/moc.prf b/mkspecs/features/symbian/moc.prf
new file mode 100644
index 000000000..9c21ed736
--- /dev/null
+++ b/mkspecs/features/symbian/moc.prf
@@ -0,0 +1,16 @@
+load(moc)
+
+RET = $$find(MOC_DIR, "(/|^)\.[^/]+/?$")
+!isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set MOC_DIR to a different value in your profile. MOC_DIR: $$MOC_DIR")
+}
+
+RET = $$find(RCC_DIR, "(/|^)\.[^/]+/?$")
+!isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set RCC_DIR to a different value in your profile. RCC_DIR: $$RCC_DIR")
+}
+
+RET = $$find(OBJECTS_DIR, "(/|^)\.[^/]+/?$")
+!isEmpty(RET):{
+ error("Symbian does not support directories starting with a dot. Please set OBJECTS_DIR to a different value in your profile. OBJECTS_DIR: $$OBJECTS_DIR")
+}
diff --git a/mkspecs/features/symbian/platform_paths.prf b/mkspecs/features/symbian/platform_paths.prf
new file mode 100644
index 000000000..bec9811c4
--- /dev/null
+++ b/mkspecs/features/symbian/platform_paths.prf
@@ -0,0 +1,480 @@
+#
+# ==============================================================================
+# Name : platform_paths.prf
+# Part of :
+# Interface : Platform Path Definitions API for Qt/S60
+# Description : Predefined include paths to be used in the pro-files for the
+# components in the layered model. There is one definition for
+# each layer. The pro-file should use the statement that is
+# intended for the same layer as where the pro-file resides.
+#
+# Usage examples:
+#
+# Note: this file gets automatically added to all Qt/S60 projects
+#
+# Variable usages to add the system include paths
+#
+# The include paths has to be related to the layer in which your SW
+# resides. Thus as an example: a component residing in middleware
+# layer should use the MW specific macro.
+#
+# INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+# INCLUDEPATH += $$MW_LAYER_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_SYSTEMINCLUDE
+#
+# If there is a need to include public headers of some S60 component,
+# various *_EXPORT_PATH macros can be utilized:
+#
+# INCLUDEPATH += $$OS_LAYER_PUBLIC_EXPORT_PATH(somecomponent)
+#
+# Variables related to using various parts of stdapis:
+#
+# To use STLLIB you need to have this in your pro-file:
+#
+# QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+# DEFINES *= $$STLLIB_USAGE_DEFINES
+#
+# Depending on what module you are using from stdapis you need to have
+# one or more of the following variables in your pro-file.
+#
+# INCLUDEPATH += $$OS_LAYER_LIBC_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_GLIB_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_SSL_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_STDCPP_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_BOOST_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_DBUS_SYSTEMINCLUDE
+# INCLUDEPATH += $$OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
+#
+#
+#
+#
+# ==============================================================================
+
+exists($${EPOCROOT}epoc32/include/platform_paths.prf) {
+
+ # Load platform specific paths
+ load($${EPOCROOT}epoc32/include/platform_paths.prf)
+
+} else {
+
+ # No platform specific paths provided, use default paths
+
+ exists($${EPOCROOT}epoc32/include/platform) { # New SF structure
+
+ # ---------------------------------------
+ # Location, where the applications layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/app/$$1)
+ }
+ defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/app/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the applications layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/platform/app/$$1)
+ }
+ defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/platform/app/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/mw/$$1)
+ }
+ defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/mw/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/platform/mw/$$1)
+ }
+ defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/platform/mw/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/$$1)
+ }
+ # WARNING: If the following path changes see the exists() function around line 219
+ defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/platform/$$1)
+ }
+ defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/platform/$$1)
+ }
+
+ # ---------------------------------------
+ # General comments about the 3 define statements related to include paths:
+ # 1) the /epoc32/include/oem is now defined there for backward compability.
+ # Once the directory is empty, the directory will be removed. However this
+ # enables us to ensure that if you use these define statements => you do
+ # not have to remove the statements later on, when the directory no longer
+ # exists.
+ # 2) These statements should be enough in normal cases. For certain specific
+ # cases you might need to add some specific directory from /epoc32/include
+ # (for instance /epoc32/include/ecom).
+ # In normal cases the include staments in code should be relative to one of
+ # the system include paths, but in certain cases, the included files requires
+ # that the subdirectory is also part of the system include paths.
+ # ---------------------------------------
+
+ # This variable defines the include paths, which are intended to be
+ # used in the pro-files that are part of the applications-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # application-layer components.
+ #
+ # Applications layer is the last one in the list, since most likely the most of
+ # the headers come from middleware or os-layer => thus they are first.
+
+ APP_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/mw \
+ /epoc32/include/platform/mw \
+ /epoc32/include/platform \
+ /epoc32/include/app \
+ /epoc32/include/platform/app \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/mw/loc \
+ /epoc32/include/platform/app/loc \
+ /epoc32/include/platform/loc/sc \
+ /epoc32/include/platform/mw/loc/sc \
+ /epoc32/include/platform/app/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the middleware-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # middleware-layer components.
+
+ MW_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/mw \
+ /epoc32/include/platform/mw \
+ /epoc32/include/platform \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/mw/loc \
+ /epoc32/include/platform/loc/sc \
+ /epoc32/include/platform/mw/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the osextensions-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # os-layer components.
+
+ OS_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/platform \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the os-layer. This is intended
+ # to be only used by those components which need to use in their mmp-file either
+ # kern_ext.mmh or nkern_ext.mmh. Reason is that those
+ # 2 files already contain the /epoc32/include as system include path.
+
+ OS_LAYER_KERNEL_SYSTEMINCLUDE = \
+ /epoc32/include/platform
+
+
+ # ---------------------------------------
+ # Definitions that also define the systeminclude paths for various
+ # part of stdapis. Append to INCLUDEPATH in pro-file.
+ # ---------------------------------------
+
+ OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys)
+
+ OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject)
+
+ OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
+
+ # stlportv5 is preferred over stlport as it has the throwing version of operator new
+ exists($${EPOCROOT}epoc32/include/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) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
+
+ OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)
+
+ # ---------------------------------------
+ # Definitions to export IBY files to different folders where they will be taken
+ # to ROM image
+ # ---------------------------------------
+
+ defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/app/$$1)
+ }
+ defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/mw/$$1)
+ }
+ defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/os/$$1)
+ }
+ defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/os/$$1)
+ }
+ defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/$$1)
+ }
+
+ # You need to define the following in pro-file, if you are using the stllib:
+ # QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+ # DEFINES *= $$STLLIB_USAGE_DEFINES
+ STLLIB_USAGE_CW_FLAGS = "-wchar_t on"
+ STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED
+
+ } else { # Old pre-SF structure
+
+ # ---------------------------------------
+ # Location, where the applications layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/applications/$$1)
+ }
+ defineReplace(APP_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/applications/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the applications layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(APP_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/domain/applications/$$1)
+ }
+ defineReplace(APP_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/domain/applications/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/middleware/$$1)
+ }
+ defineReplace(MW_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/middleware/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the middleware layer specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(MW_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/domain/middleware/$$1)
+ }
+ defineReplace(MW_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/domain/middleware/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os layer specific public headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_SDK_EXPORT_PATH) {
+ return (/epoc32/include/osextensions/$$1)
+ }
+ # WARNING: If the following path changes see the exists() function around line 430
+ defineReplace(OS_LAYER_PUBLIC_EXPORT_PATH) {
+ return (/epoc32/include/osextensions/$$1)
+ }
+
+ # ---------------------------------------
+ # Location, where the os specific platform headers are exported
+ # ---------------------------------------
+
+ defineReplace(OSEXT_LAYER_DOMAIN_EXPORT_PATH) {
+ return (/epoc32/include/domain/osextensions/$$1)
+ }
+ defineReplace(OS_LAYER_PLATFORM_EXPORT_PATH) {
+ return (/epoc32/include/domain/osextensions/$$1)
+ }
+
+ # ---------------------------------------
+ # General comments about the 3 define statements related to include paths:
+ # 1) the /epoc32/include/oem is now defined there for backward compability.
+ # Once the directory is empty, the directory will be removed. However this
+ # enables us to ensure that if you use these define statements => you do
+ # not have to remove the statements later on, when the directory no longer
+ # exists.
+ # 2) These statements should be enough in normal cases. For certain specific
+ # cases you might need to add some specific directory from /epoc32/include
+ # (for instance /epoc32/include/ecom).
+ # In normal cases the include staments in code should be relative to one of
+ # the system include paths, but in certain cases, the included files requires
+ # that the subdirectory is also part of the system include paths.
+ # ---------------------------------------
+
+ # This variable defines the include paths, which are intended to be
+ # used in the pro-files that are part of the applications-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # application-layer components.
+ #
+ # Applications layer is the last one in the list, since most likely the most of
+ # the headers come from middleware or os-layer => thus they are first.
+
+ APP_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/oem \
+ /epoc32/include/middleware \
+ /epoc32/include/domain/middleware \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions \
+ /epoc32/include/applications \
+ /epoc32/include/domain/applications \
+ /epoc32/include/domain/osextensions/loc \
+ /epoc32/include/domain/middleware/loc \
+ /epoc32/include/domain/applications/loc \
+ /epoc32/include/domain/osextensions/loc/sc \
+ /epoc32/include/domain/middleware/loc/sc \
+ /epoc32/include/domain/applications/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the middleware-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # middleware-layer components.
+
+ MW_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/oem \
+ /epoc32/include/middleware \
+ /epoc32/include/domain/middleware \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions \
+ /epoc32/include/domain/osextensions/loc \
+ /epoc32/include/domain/middleware/loc \
+ /epoc32/include/domain/osextensions/loc/sc \
+ /epoc32/include/domain/middleware/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the osextensions-layer. It includes all
+ # the needed directories from the /epoc32/include, that are valid ones for the
+ # os-layer components.
+
+ OS_LAYER_SYSTEMINCLUDE = \
+ /epoc32/include \
+ /epoc32/include/oem \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions \
+ /epoc32/include/domain/osextensions/loc \
+ /epoc32/include/domain/osextensions/loc/sc
+
+ # This define statements defines the include paths, which are intended to be
+ # used in the pro-files that are part of the os-layer. This is intended
+ # to be only used by those components which need to use in their mmp-file either
+ # kern_ext.mmh or nkern_ext.mmh. Reason is that those
+ # 2 files already contain the /epoc32/include as system include path.
+
+ OS_LAYER_KERNEL_SYSTEMINCLUDE = \
+ /epoc32/include/oem \
+ /epoc32/include/osextensions \
+ /epoc32/include/domain/osextensions
+
+
+ # ---------------------------------------
+ # Definitions that also define the systeminclude paths for various
+ # part of stdapis. Append to INCLUDEPATH in pro-file.
+ # ---------------------------------------
+
+ OS_LAYER_LIBC_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/sys) \
+ /epoc32/include/stdapis \
+ /epoc32/include/stdapis/sys
+
+ OS_LAYER_GLIB_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gObject) \
+ /epoc32/include/stdapis/glib-2.0 \
+ /epoc32/include/stdapis/glib-2.0/glib \
+ /epoc32/include/stdapis/glib-2.0/gObject
+
+ OS_LAYER_SSL_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl) \
+ /epoc32/include/stdapis/openssl
+
+ # stlportv5 is preferred over stlport as it has the throwing version of operator new
+ exists($${EPOCROOT}epoc32/include/osextensions/stdapis/stlportv5)|exists($${EPOCROOT}epoc32/include/stdapis/stlportv5) {
+ OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlportv5) \
+ /epoc32/include/stdapis/stlportv5
+ } else {
+ OS_LAYER_STDCPP_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) \
+ /epoc32/include/stdapis/stlport
+ }
+
+ OS_LAYER_BOOST_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost) \
+ /epoc32/include/stdapis/boost
+
+ OS_LAYER_DBUS_SYSTEMINCLUDE = $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
+ $$OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus) \
+ /epoc32/include/stdapis/dbus-1.0 \
+ /epoc32/include/stdapis/dbus-1.0/dbus
+
+ OS_LAYER_LIBUTILITY_SYSTEMINCLUDE = $$OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility) \
+ /epoc32/include/stdapis/utility
+
+ # ---------------------------------------
+ # Definitions to export IBY files to different folders where they will be taken
+ # to ROM image
+ # ---------------------------------------
+
+ defineReplace(CORE_APP_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/app/$$1)
+ }
+ defineReplace(CORE_MW_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/mw/$$1)
+ }
+ defineReplace(CORE_OSEXT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/osext/$$1)
+ }
+ defineReplace(CORE_OS_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/core/osext/$$1)
+ }
+ defineReplace(CORE_ADAPT_LAYER_IBY_EXPORT_PATH) {
+ return(/epoc32/rom/include/$$1)
+ }
+
+ # You need to define the following in pro-file, if you are using the stllib:
+ # QMAKE_CXXFLAGS.CW *= $$STLLIB_USAGE_CW_FLAGS
+ # DEFINES *= $$STLLIB_USAGE_DEFINES
+ STLLIB_USAGE_CW_FLAGS = "-wchar_t on"
+ STLLIB_USAGE_DEFINES = _WCHAR_T_DECLARED
+
+ }
+}
+
+
+
diff --git a/mkspecs/features/symbian/qt.prf b/mkspecs/features/symbian/qt.prf
new file mode 100644
index 000000000..0f5b08b6a
--- /dev/null
+++ b/mkspecs/features/symbian/qt.prf
@@ -0,0 +1,34 @@
+contains(DEFINES, QT_MAKEDLL)|contains(DEFINES, QT_DLL) {
+ CONFIG *= epocallowdlldata
+}
+
+CONFIG += qtmain
+
+load(qt)
+
+# Allow .pro files to specify include path(s) to be prepended to the list.
+#
+# This allows the project to override the default ordering, whereby paths
+# relative to $$QMAKE_INCDIR_QT always come first. This ordering can cause
+# problems when both the epoc32/include tree and a Qt include directory
+# contain a header of the same name - in this case, the Qt header is always
+# included by virtue of its path appearing first in the SYSTEMINCLUDE
+# directives in the generated MMP file.
+#
+# To work around this situation, the following line can be added to the .pro
+# file:
+# PREPEND_INCLUDEPATH = /epoc32/include
+#
+INCLUDEPATH = $$PREPEND_INCLUDEPATH $$INCLUDEPATH
+
+# Add dependency to Qt package to all other projects besides Qt libs.
+# Note: Qt libs with full capabilities has UID3 of 0x2001E61C,
+# while self-signed version typically has temporary UID3 of 0xE001E61C.
+contains(CONFIG, qt):!contains(TARGET.UID3, 0x2001E61C):!contains(TARGET.UID3, 0xE001E61C) {
+ default_deployment.pkg_prerules += \
+ "; Default dependency to Qt libraries" \
+ "(0x2001E61C), $${QT_MAJOR_VERSION}, $${QT_MINOR_VERSION}, $${QT_PATCH_VERSION}, {\"Qt\"}"
+}
+
+isEmpty(TARGET.EPOCSTACKSIZE):TARGET.EPOCSTACKSIZE = 0x14000
+isEmpty(TARGET.EPOCHEAPSIZE):TARGET.EPOCHEAPSIZE = 0x020000 0x800000
diff --git a/mkspecs/features/symbian/stl.prf b/mkspecs/features/symbian/stl.prf
new file mode 100644
index 000000000..e21ee5ca0
--- /dev/null
+++ b/mkspecs/features/symbian/stl.prf
@@ -0,0 +1,25 @@
+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_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)|exists($${EPOCROOT}epoc32/release/winscw/udeb/libstdcppv5.dll) {
+ LIBS *= -llibstdcppv5.dll
+
+ # STDCPP turns on standard C++ new behaviour (ie. throwing new)
+ MMP_RULES += "STDCPP"
+} else {
+ LIBS *= -llibstdcpp.dll
+}
diff --git a/mkspecs/features/symbian/stl_off.prf b/mkspecs/features/symbian/stl_off.prf
new file mode 100644
index 000000000..d5d1c7c30
--- /dev/null
+++ b/mkspecs/features/symbian/stl_off.prf
@@ -0,0 +1,2 @@
+CONFIG -= stl
+
diff --git a/mkspecs/features/uic.prf b/mkspecs/features/uic.prf
index e768d0f0a..eaf373a52 100644
--- a/mkspecs/features/uic.prf
+++ b/mkspecs/features/uic.prf
@@ -1,11 +1,11 @@
isEmpty(QMAKE_UIC3) {
- win32:QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe
+ contains(QMAKE_HOST.os,Windows):QMAKE_UIC3 = $$[QT_INSTALL_BINS]\uic3.exe
else:QMAKE_UIC3 = $$[QT_INSTALL_BINS]/uic3
}
isEmpty(QMAKE_UIC) {
- win32:QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
+ contains(QMAKE_HOST.os,Windows):QMAKE_UIC = $$[QT_INSTALL_BINS]\uic.exe
else:QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
}
@@ -36,7 +36,7 @@ isEmpty(QMAKE_MOD_UIC):QMAKE_MOD_UIC = ui_
!isEmpty(FORMS)|!isEmpty(FORMS3) {
ui_dir_short = $$UI_HEADERS_DIR
- win32:ui_dir_short ~= s,^.:,/,
+ contains(QMAKE_HOST.os,Windows):ui_dir_short ~= s,^.:,/,
contains(ui_dir_short, ^[/\\\\].*):INCLUDEPATH += $$UI_HEADERS_DIR
else:INCLUDEPATH += $$OUT_PWD/$$UI_HEADERS_DIR
}
diff --git a/mkspecs/features/uitools.prf b/mkspecs/features/uitools.prf
index 6eba066ae..2d14b04d9 100644
--- a/mkspecs/features/uitools.prf
+++ b/mkspecs/features/uitools.prf
@@ -2,7 +2,9 @@ QT += xml
qt:load(qt)
# Include the correct version of the UiLoader library
-QTUITOOLS_LINKAGE = -lQtUiTools
+symbian: QTUITOOLS_LINKAGE = -lQtUiTools.lib
+else: QTUITOOLS_LINKAGE = -lQtUiTools
+
CONFIG(debug, debug|release) {
mac: QTUITOOLS_LINKAGE = -lQtUiTools_debug
win32: QTUITOOLS_LINKAGE = -lQtUiToolsd
diff --git a/mkspecs/features/unix/opengl.prf b/mkspecs/features/unix/opengl.prf
index 2fdf32423..f2db8190b 100644
--- a/mkspecs/features/unix/opengl.prf
+++ b/mkspecs/features/unix/opengl.prf
@@ -1,4 +1,22 @@
-INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
-!isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL
-target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_QT
-else:LIBS += $$QMAKE_LIBS_OPENGL
+contains(QT_CONFIG, opengles1) {
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1
+ !isEmpty(QMAKE_LIBDIR_OPENGL_ES1):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES1
+ target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1
+ else:LIBS += $$QMAKE_LIBS_OPENGL_ES1
+} else:contains(QT_CONFIG, opengles1cl) {
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1CL
+ !isEmpty(QMAKE_LIBDIR_OPENGL_ES1CL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES1CL
+ target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1CL
+ else:LIBS += $$QMAKE_LIBS_OPENGL_ES1CL
+} else:contains(QT_CONFIG, opengles2) {
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2
+ !isEmpty(QMAKE_LIBDIR_OPENGL_ES2):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2
+ target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES2
+ else:LIBS += $$QMAKE_LIBS_OPENGL_ES2
+} else {
+ INCLUDEPATH += $$QMAKE_INCDIR_OPENGL
+ !isEmpty(QMAKE_LIBDIR_OPENGL):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL
+ target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_QT
+ else:LIBS += $$QMAKE_LIBS_OPENGL
+}
+
diff --git a/mkspecs/features/win32/opengl.prf b/mkspecs/features/win32/opengl.prf
index 30af2a3b9..3414781c3 100644
--- a/mkspecs/features/win32/opengl.prf
+++ b/mkspecs/features/win32/opengl.prf
@@ -1,3 +1,11 @@
-QMAKE_LIBS += $$QMAKE_LIBS_OPENGL
-QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL
+# WinCE does not have a platform directory for .prf files, and the
+# win32 directory is searched for .prfs by qmake on WinCE. Ideally
+# there should be a features/wince/opengl.prf which contains the wince
+# block below.
+wince* {
+ include(../unix/opengl.prf)
+} else {
+ QMAKE_LIBS += $$QMAKE_LIBS_OPENGL
+ QMAKE_LFLAGS += $$QMAKE_LFLAGS_OPENGL
+}
diff --git a/mkspecs/features/win32/rtti_off.prf b/mkspecs/features/win32/rtti_off.prf
index 8f175dee7..b520bfa8b 100644
--- a/mkspecs/features/win32/rtti_off.prf
+++ b/mkspecs/features/win32/rtti_off.prf
@@ -1,3 +1,4 @@
CONFIG -= rtti
QMAKE_CFLAGS += $$QMAKE_CFLAGS_RTTI_OFF
QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RTTI_OFF
+DEFINES += QT_NO_DYNAMIC_CAST \ No newline at end of file