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 = declarative webkit phonon multimedia dbus testlib script scripttools svg qt3support sql xmlpatterns xml egl opengl openvg gui network core meegographicssystemhelper for(QTLIB, $$list($$TMPLIBS)) { contains(QT, $$QTLIB): QT_ORDERED += $$QTLIB } # don't warn about Qt 5 modules that in Qt 4 were part of another module # (this allows easier writing of .pro files that work with both Qt 4 and 5): _QT5_MODULES_TO_IGNORE_ = \ widgets \ webkitwidgets \ printsupport \ concurrent QT_UNKNOWN = $$QT QT_UNKNOWN -= $$QT_ORDERED $$_QT5_MODULES_TO_IGNORE_ 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 BEARERPLUGINS = qgenericbearer qnativewifibearer CODECPLUGINS = qcncodecs qjpcodecs qkrcodecs qtwcodecs DECORATIONPLUGINS = qdecorationdefault qdecorationstyled qdecorationwindows GFXDRIVERPLUGINS = qgfxvnc qscreenvfb qgfxtransformed qgfxshadowfb qgfxpvregl qscreenlinuxfb qeglnullws qdirectfbscreen qahiscreen GRAPHICSSYSTEMPLUGINS = qmeegographicssystem qglgraphicssystem qvggraphicssystem qshivavggraphicssystem IMAGEPLUGINS = qgif qico qmng qjpeg qsvg qtiff INPUTPLUGINS = qimsw-multi KBDDRIVERPLUGINS = qlinuxinputkbddriver MOUSEDRIVERPLUGINS = qtslibmousehandler qpcmousedriver qlinuxtpmousedriver SQLPLUGINS = qsqldb2 qsqloci qsqltds qsqlodbc qsqlpsql qsqlibase qsqlmysql qsqlite2 qsqlite PHONONPLUGINS = phonon_waveout phonon_ds9 phonon_gstreamer phonon_qt7 phonon_mmf ALLQTPLUGINS = $$ACCESSIBLEPLUGINS $$BEARERPLUGINS $$CODECPLUGINS $$DECORATIONPLUGINS $$GFXDRIVERPLUGINS $$GRAPHICSSYSTEMPLUGINS $$IMAGEPLUGINS $$INPUTPLUGINS $$KBDDRIVERPLUGINS $$MOUSEDRIVERPLUGINS $$SQLPLUGINS $$PHONONPLUGINS QT_PLUGINPATH = contains(ALLQTPLUGINS, $$QTPLUG) { # Determine the plugin path contains(ACCESSIBLEPLUGINS, $$QTPLUG): QT_PLUGINPATH = accessible contains(BEARERPLUGINS, $$QTPLUG): QT_PLUGINPATH = bearer contains(CODECPLUGINS, $$QTPLUG): QT_PLUGINPATH = codecs contains(DECORATIONPLUGINS, $$QTPLUG): QT_PLUGINPATH = decorations contains(GFXDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = gfxdrivers contains(GRAPHICSSYSTEMPLUGINS, $$QTPLUG): QT_PLUGINPATH = graphicssystems contains(IMAGEPLUGINS, $$QTPLUG): QT_PLUGINPATH = imageformats contains(INPUTPLUGINS, $$QTPLUG): QT_PLUGINPATH = inputmethods contains(KBDDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = kbddrivers 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}.files = $$[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}.files = $${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 # 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 aix-xlc { # Flags recommended by IBM when using WebKit QMAKE_LFLAGS -= -bmaxdata:0x80000000 QMAKE_LFLAGS += -bmaxdata:0xD0000000/dsa } } else:isEqual(QTLIB, declarative):qlib = QtDeclarative else:isEqual(QTLIB, multimedia):qlib = QtMultimedia else:isEqual(QTLIB, meegographicssystemhelper):qlib = QtMeeGoGraphicsSystemHelper else:contains(_QT5_MODULES_TO_IGNORE_, $$QTLIB):qlib = # ignore Qt 5 libraries 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 } unset(_QT5_MODULES_TO_IGNORE_) #SIMD defines: mmx:DEFINES += QT_HAVE_MMX 3dnow:DEFINES += QT_HAVE_3DNOW sse:DEFINES += QT_HAVE_SSE QT_HAVE_MMXEXT sse2:DEFINES += QT_HAVE_SSE2 sse3:DEFINES += QT_HAVE_SSE3 ssse3:DEFINES += QT_HAVE_SSSE3 sse4_1:DEFINES += QT_HAVE_SSE4_1 sse4_2:DEFINES += QT_HAVE_SSE4_2 avx:DEFINES += QT_HAVE_AVX iwmmxt:DEFINES += QT_HAVE_IWMMXT