mkspecs/features/qt.prf
changeset 0 1918ee327afb
child 3 41300fa6a67c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mkspecs/features/qt.prf	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,203 @@
+CONFIG *= moc thread
+
+#handle defines
+win32 {
+   qt_static:DEFINES += QT_NODLL
+   !contains(DEFINES, QT_NODLL) {
+      QT_ENV_DLL = $$(QT_DLL)
+      QT_ENV_NO_DLL = $$(QT_NODLL)
+      isEmpty(QT_ENV_NO_DLL) {
+          shared|!isEmpty(QT_ENV_DLL):DEFINES += QT_DLL
+      }
+      contains(DEFINES, QT_MAKEDLL)|contains(DEFINES, QT_DLL):QMAKE_QT_DLL = 1
+   }
+}
+CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG
+no_keywords:DEFINES += QT_NO_KEYWORDS
+plugin { #Qt plugins
+   static:DEFINES += QT_STATICPLUGIN
+   DEFINES += QT_PLUGIN
+
+   # Triggers both on Qt being configured with -arch boundschecker,
+   # and if you qmake CONFIG+=boundchecker on your plugin project
+   boundschecker|contains(QT_CONFIG,boundschecker) {
+      # This option is added for plugins when Qt is configured for Boundschecker,
+      # since we want Boundschecker to not instrument the qt_plugin_query_verification_data
+      # function, as we call that function without the plugin's dependent DLLs, thus
+      # Boundscheckers instrumentation will fail. The function only returns a const char *,
+      # so no instrumentation is really needed on that function anyways.
+      QMAKE_CFLAGS += /nmignore:*:qt_plugin_query_verification_data
+      QMAKE_CXXFLAGS += /nmignore:*:qt_plugin_query_verification_data
+   }
+}
+
+#handle includes
+INCLUDEPATH = $$QMAKE_INCDIR_QT $$INCLUDEPATH #prepending prevents us from picking up "stale" includes
+win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt
+
+# As order does matter for static libs, we reorder the QT variable here
+TMPLIBS = 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
+}
+
+QT_UNKNOWN = $$QT
+QT_UNKNOWN -= $$QT_ORDERED
+QT = $$QT_ORDERED
+for(QTLIB, $$list($$QT_UNKNOWN)) {
+   !contains(TMPLIBS, $$QTLIB):message("Warning: unknown QT: $$QTLIB")
+}
+
+QT_PLUGIN_VERIFY = QTPLUGIN DEPLOYMENT_PLUGIN
+for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
+    for(QTPLUG, $$list($$lower($$unique($$QT_CURRENT_VERIFY)))) {
+       qplugin_style =
+       !qt_debug:!qt_release {
+          CONFIG(debug, debug|release):qplugin_style = debug
+          else:qplugin_style = release
+       } else:CONFIG(qt_debug, qt_debug|qt_release) {
+          qplugin_style = debug
+       } else {
+          qplugin_style = release
+       }
+
+       # Check if the plugin is known to Qt. We can use this to determine
+       # the plugin path. Unknown plugins must rely on the default link path.
+       ACCESSIBLEPLUGINS = qtaccessiblewidgets qtaccessiblecompatwidgets
+       CODECPLUGINS = qcncodecs qjpcodecs qkrcodecs qtwcodecs
+       DECORATIONPLUGINS = qdecorationdefault qdecorationwindows
+       GFXDRIVERPLUGINS = qgfxvnc qscreenvfb qgfxsnap qgfxvga16 qgfxmatrox qgfxvoodoo qgfxtransformed qgfxshadowfb
+       IMAGEPLUGINS = qgif qmng qjpeg qsvg
+       INPUTPLUGINS = qimsw-multi
+       MOUSEDRIVERPLUGINS = qtslibmousehandler
+       SQLPLUGINS = qsqldb2 qsqloci qsqltds qsqlodbc qsqlpsql qsqlibase qsqlmysql qsqlite2 qsqlite
+       PHONONPLUGINS = phonon_waveout phonon_ds9
+
+       ALLQTPLUGINS = $$ACCESSIBLEPLUGINS $$CODECPLUGINS $$DECORATIONPLUGINS $$GFXDRIVERPLUGINS $$IMAGEPLUGINS $$INPUTPLUGINS $$MOUSEDRIVERPLUGINS $$SQLPLUGINS $$PHONONPLUGINS
+
+       QT_PLUGINPATH =
+       contains(ALLQTPLUGINS, $$QTPLUG) {
+           # Determine the plugin path
+           contains(ACCESSIBLEPLUGINS, $$QTPLUG): QT_PLUGINPATH = accessible
+           contains(CODECPLUGINS, $$QTPLUG): QT_PLUGINPATH = codecs
+           contains(DECORATIONPLUGINS, $$QTPLUG): QT_PLUGINPATH = decorations
+           contains(GFXDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = gfxdrivers
+           contains(IMAGEPLUGINS, $$QTPLUG): QT_PLUGINPATH = imageformats
+           contains(INPUTPLUGINS, $$QTPLUG): QT_PLUGINPATH = inputmethods
+           contains(MOUSEDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = mousedrivers
+           contains(SQLPLUGINS, $$QTPLUG):  QT_PLUGINPATH = sqldrivers
+	   contains(PHONONPLUGINS, $$QTPLUG): QT_PLUGINPATH = phonon_backend
+        }
+
+        # Generate the plugin linker line
+        target_qt:isEqual(TARGET, QTPLUG) {
+            warning($$TARGET cannot have a QTPLUGIN of $$QTPLUG)
+        } else {
+            QT_LINKAGE = -l$${QTPLUG}
+            win32 {
+               CONFIG(debug, debug|release):QT_LINKAGE = -l$${QTPLUG}d
+            } else:mac {
+               isEqual(qplugin_style, debug):QT_LINKAGE = -l$${QTPLUG}_debug
+            }
+        }
+
+        # Only link against plugin in static builds
+        isEqual(QT_CURRENT_VERIFY, QTPLUGIN): {
+            !isEmpty(QT_PLUGINPATH): LIBS *= -L$$[QT_INSTALL_PLUGINS]/$$QT_PLUGINPATH
+                LIBS += $$QT_LINKAGE
+            # if the plugin is linked statically there is no need to deploy it
+            DEPLOYMENT_PLUGIN -= $$QT_CURRENT_VERIFY
+        }
+        isEqual(QT_CURRENT_VERIFY, DEPLOYMENT_PLUGIN):shared:wince*: {
+            QT_ITEM =
+            CONFIG(debug, debug|release): QT_ITEM = $${QTPLUG}d4.dll
+            else: QT_ITEM = $${QTPLUG}4.dll
+
+            eval(qt_additional_plugin_$${QTPLUG}.sources = $$[QT_INSTALL_PLUGINS]/$${QT_PLUGINPATH}/$${QT_ITEM})
+            eval(qt_additional_plugin_$${QTPLUG}.path = $${QT_PLUGINPATH})
+
+            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
+!isEmpty(QT_BUILD_TREE):QMAKE_LIBDIR = $$QT_BUILD_TREE/lib $$QMAKE_LIBDIR #as above, prepending prevents us from picking up "stale" libs
+QMAKE_LIBDIR += $$QMAKE_LIBDIR_QT
+for(QTLIB, $$list($$lower($$unique(QT)))) {
+   unset(qlib_style)
+   !qt_debug:!qt_release {
+      CONFIG(debug, debug|release):qlib_style = debug
+      else:qlib_style = release
+   } else:CONFIG(qt_debug, qt_debug|qt_release) {
+      qlib_style = debug
+   } else {
+      qlib_style = release
+   }
+
+   unset(qlib)
+   isEqual(QTLIB, gui):qlib = QtGui
+   else:isEqual(QTLIB, network):qlib = QtNetwork
+   else:isEqual(QTLIB, xml):qlib = QtXml
+   else:isEqual(QTLIB, xmlpatterns):qlib = QtXmlPatterns
+   else:isEqual(QTLIB, opengl):qlib = QtOpenGL
+   else:isEqual(QTLIB, openvg):qlib = QtOpenVG
+   else:isEqual(QTLIB, sql):qlib = QtSql
+   else:isEqual(QTLIB, core):qlib = QtCore
+   else:isEqual(QTLIB, canvas):qlib = QtCanvas
+   else:isEqual(QTLIB, qt3support):qlib = Qt3Support
+   else:isEqual(QTLIB, svg):qlib = QtSvg
+   else:isEqual(QTLIB, script):qlib = QtScript
+   else:isEqual(QTLIB, scripttools):qlib = QtScriptTools
+   else:isEqual(QTLIB, testlib):qlib = QtTest
+   else:isEqual(QTLIB, dbus):qlib = QtDBus
+   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, multimedia):qlib = QtMultimedia
+   else:message("Unknown QT: $$QTLIB"):qlib =
+   !isEmpty(qlib) {
+      target_qt:isEqual(TARGET, qlib) {
+         warning($$TARGET cannot have a QT of $$QTLIB)
+      } else {
+         DEFINES *= $$upper(QT_$${QTLIB}_LIB)
+	 isEqual(QTLIB, opengl):CONFIG += opengl
+	 isEqual(QTLIB, openvg):CONFIG += openvg
+	 isEqual(QTLIB, qt3support):DEFINES *= QT3_SUPPORT
+         isEqual(QTLIB, testlib):CONFIG += console
+         isEqual(QTLIB, dbus):CONFIG += dbusadaptors dbusinterfaces
+
+     qtAddLibrary($$qlib)
+      }
+   }
+}
+
+qt_compat {
+   !qt_compat_no_warning:QTDIR_build:warning(***USE of COMPAT inside of QTDIR!**) #just for us
+   INCLUDEPATH *= $$QMAKE_INCDIR_QT/Qt
+   DEFINES *= QT_COMPAT
+}
+
+wince*:static:gui {
+   QTLIB += qmenu_wce.res
+}
+
+!isEmpty(QT_NAMESPACE):DEFINES *= QT_NAMESPACE=$$QT_NAMESPACE
+mac {
+    !isEmpty(QT_NAMESPACE_MAC_CRC):DEFINES *= QT_NAMESPACE_MAC_CRC=$$QT_NAMESPACE_MAC_CRC
+}