diff options
Diffstat (limited to 'mkspecs/features/qt.prf')
-rw-r--r-- | mkspecs/features/qt.prf | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf new file mode 100644 index 0000000..0c6e09a --- /dev/null +++ b/mkspecs/features/qt.prf @@ -0,0 +1,183 @@ +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 dbus testlib script scripttools svg qt3support sql xmlpatterns xml opengl 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} + } + } +} +#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, 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 + else:isEqual(QTLIB, webkit):qlib = QtWebKit + 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, 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 +} |