qt5base-lts/mkspecs/features/qt.prf

178 lines
7.0 KiB
Plaintext
Raw Normal View History

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
}
# Some files include qplatformdefs.h, which lives in the individual mkspec directory
# However, if QMAKESPEC_ORIGINAL is set, the module/app is outside of the QtBase
# directory, and using the default profile. So we add the original mkspecs directory
# to the include path
!isEmpty(QMAKESPEC_ORIGINAL):INCLUDEPATH += $$QMAKESPEC_ORIGINAL
}
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
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}.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
# Topological ordering of modules based on their QT.<module>.depends variable
QT = $$resolve_depends($$QT, "QT.")
QT_DEPENDS=
for(QTLIB, $$list($$lower($$unique(QT)))) {
isEmpty(QT.$${QTLIB}.name) {
message("Warning: unknown QT module: $$QTLIB")
next()
}
target_qt:isEqual(TARGET, QTLIB) {
warning($$TARGET cannot have a QT of $$QTLIB)
next()
}
qtAddModule($$QTLIB)
QT_DEPENDS += $$eval(QT.$${QTLIB}.depends)
}
# add include paths for all .depends, since module/application might need f.ex. template specializations etc.
QT_DEPENDS -= $$QT
for(QTLIB, $$list($$lower($$unique(QT_DEPENDS)))):INCLUDEPATH += $$INCLUDEPATH $$eval(QT.$${QTLIB}.includes)
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
}
#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