summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authoraxis <qt-info@nokia.com>2011-04-27 14:13:27 +0200
committeraxis <qt-info@nokia.com>2011-04-27 14:34:19 +0200
commit9e57cd5e6a1793994fc538f410cce0fc64de95c3 (patch)
tree25e2c7fbd74d891bb532733a313f3e7e72306bbc /mkspecs
parenteae8fb85997d82ecec0743ba3e470681129bff41 (diff)
parent106c57c238294387d6667a753e721687de3f9376 (diff)
Merged master into qtquick2.
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/default_pre.prf29
-rw-r--r--mkspecs/features/help.prf3
-rw-r--r--mkspecs/features/qt.prf102
-rw-r--r--mkspecs/features/qt_config.prf12
-rw-r--r--mkspecs/features/qt_functions.prf73
-rw-r--r--mkspecs/features/qt_module.prf23
-rw-r--r--mkspecs/features/symbian/qt_demo.prf17
-rw-r--r--mkspecs/features/symbian/qt_example.prf17
-rw-r--r--mkspecs/features/uitools.prf2
-rw-r--r--mkspecs/features/win32/qaxcontainer.prf4
-rw-r--r--mkspecs/features/win32/qaxserver.prf3
11 files changed, 203 insertions, 82 deletions
diff --git a/mkspecs/features/default_pre.prf b/mkspecs/features/default_pre.prf
index 2e82f03eb9..adcdbb73e9 100644
--- a/mkspecs/features/default_pre.prf
+++ b/mkspecs/features/default_pre.prf
@@ -1,3 +1,32 @@
load(exclusive_builds)
### Qt 5: remove "uic" and "resources" - or add "qt"
CONFIG = lex yacc warn_on debug uic resources $$CONFIG
+
+exists($$_PRO_FILE_PWD_/sync.profile) {
+ PRO_BASENAME = $$basename(_PRO_FILE_)
+
+ # Try to detect proper QTDIR path. We require QTDIR, as syncqt uses that to create qt_module.pri
+ # forwarding files. If we don't find QTDIR, we avoid creating the fwd files, since you then need
+ # to do a 'make install;' before you can use the module
+ # (ie. we don't use QT_INSTALL_DATA for fwd includes. This path needs a full copy)
+ isEmpty(QTDIR) {
+ QTDIR = $$(QTDIR)
+ isEmpty(QTDIR):QTDIR = $$QT_BUILD_TREE
+ isEmpty(QTDIR):QTDIR = $$dirname(_QMAKE_CACHE_)
+ isEmpty(QTDIR) {
+ QMAKE_BASED_QTDIR = $$dirname(QMAKE_QMAKE)
+ QMAKE_BASED_QTDIR = $$dirname(QMAKE_BASED_QTDIR)
+ exists($$QMAKE_BASED_QTDIR/mkspecs/qconfig.pri): QTDIR = $$QMAKE_BASED_QTDIR
+ unset(QMAKE_BASED_QTDIR)
+ }
+ }
+
+ isEmpty(QTDIR):QTFWD="-no-module-fwd"
+ else:QTFWD="-qtdir $$QTDIR"
+
+ message("Running syncqt for $$PRO_BASENAME in $$OUT_PWD")
+ qtPrepareTool(QMAKE_SYNCQT, syncqt)
+ system("$$QMAKE_SYNCQT $$QTFWD -outdir $$OUT_PWD $$_PRO_FILE_PWD_")
+ unset(QTFWD)
+ unset(PRO_BASENAME)
+}
diff --git a/mkspecs/features/help.prf b/mkspecs/features/help.prf
index 15685e7a57..d8ba8c3537 100644
--- a/mkspecs/features/help.prf
+++ b/mkspecs/features/help.prf
@@ -1,4 +1,3 @@
-INCLUDEPATH = $$QMAKE_INCDIR_QT/QtHelp $$INCLUDEPATH
QT += xml sql
-qtAddLibrary(QtHelp)
+qtAddModule(help)
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index e4a5ef7162..21fdd38e70 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -11,6 +11,11 @@ win32 {
}
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
@@ -35,23 +40,6 @@ plugin { #Qt plugins
INCLUDEPATH = $$QMAKE_INCDIR_QT $$INCLUDEPATH #prepending prevents us from picking up "stale" includes
win32:INCLUDEPATH += $$QMAKE_INCDIR_QT/ActiveQt
-# As declarative now uses OpenGL in the API, force include it to avoid having to update all projects
-contains(QT, declarative): QT += opengl
-
-# 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
-}
-
-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)))) {
@@ -132,71 +120,35 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
}
}
}
+
+
+
#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)))) {
- 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
- }
+ isEmpty(QT.$${QTLIB}.name) {
+ message("Warning: unknown QT module: $$QTLIB")
+ next()
+ }
- 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: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)
- }
- }
+ 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
diff --git a/mkspecs/features/qt_config.prf b/mkspecs/features/qt_config.prf
index de1cac4651..5afd82c84a 100644
--- a/mkspecs/features/qt_config.prf
+++ b/mkspecs/features/qt_config.prf
@@ -14,7 +14,17 @@ isEmpty(QMAKE_QT_CONFIG)|!exists($$QMAKE_QT_CONFIG) {
for(dir, $$list($$unique($$list($$dirname(QMAKE_QT_CONFIG) \
$$split($$list($$[QMAKE_MKSPECS]), $$DIRLIST_SEPARATOR))))) {
debug(1, "Loading modules from $${dir}")
- for(mod, $$list($$files($$dir/modules/qt_*.pri))):include($$mod)
+ for(mod, $$list($$files($$dir/modules/qt_*.pri))) {
+ # For installed Qt these paths will be common for all modules
+ # For development these will vary per module, and syncqt will override the value in the
+ # qt_<module>.pri forwarding file
+ QT_MODULE_INCLUDE_BASE = $$[QT_INSTALL_HEADERS]
+ QT_MODULE_LIB_BASE = $$[QT_INSTALL_LIBS]
+ QT_MODULE_PLUGIN_BASE = $$[QT_INSTALL_PLUGINS]
+ QT_MODULE_BIN_BASE = $$[QT_INSTALL_BINS]
+ QT_MODULE_IMPORT_BASE = $$[QT_INSTALL_IMPORTS]
+ include($$mod)
+ }
}
}
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 5baf7ce2b4..b16c84864f 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -92,12 +92,79 @@ defineTest(qtAddLibrary) {
return(true)
}
+defineTest(qtAddModule) {
+ MODULE_NAME = $$eval(QT.$${1}.name)
+ MODULE_INCLUDES = $$eval(QT.$${1}.includes)
+ MODULE_LIBS = $$eval(QT.$${1}.libs)
+
+ CONFIG += $$eval(QT.$${1}.CONFIG)
+ DEFINES += $$eval(QT.$${1}.DEFINES)
+
+ INCLUDEPATH -= $$MODULE_INCLUDES
+ INCLUDEPATH = $$MODULE_INCLUDES $$INCLUDEPATH
+
+ unset(LINKAGE)
+ mac {
+ CONFIG(qt_framework, qt_framework|qt_no_framework) { #forced
+ QMAKE_FRAMEWORKPATH *= $${MODULE_LIBS}
+ FRAMEWORK_INCLUDE = $$MODULE_INCLUDES.framework/Headers
+ !qt_no_framework_direct_includes:exists($$FRAMEWORK_INCLUDE) {
+ INCLUDEPATH -= $$FRAMEWORK_INCLUDE
+ INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH
+ }
+ LINKAGE = -framework $${MODULE_NAME}$${QT_LIBINFIX}
+ } else:!qt_no_framework { #detection
+ for(frmwrk_dir, $$list($$MODULE_LIBS $$QMAKE_LIBDIR $$(DYLD_FRAMEWORK_PATH) /Library/Frameworks)) {
+ exists($${frmwrk_dir}/$${MODULE_NAME}.framework) {
+ QMAKE_FRAMEWORKPATH *= $${frmwrk_dir}
+ FRAMEWORK_INCLUDE = $$frmwrk_dir/$${MODULE_NAME}.framework/Headers
+ !qt_no_framework_direct_includes:exists($$FRAMEWORK_INCLUDE) {
+ INCLUDEPATH -= $$FRAMEWORK_INCLUDE
+ INCLUDEPATH = $$FRAMEWORK_INCLUDE $$INCLUDEPATH
+ }
+ LINKAGE = -framework $${MODULE_NAME}
+ break()
+ }
+ }
+ }
+ }
+ isEmpty(LINKAGE) {
+ # Make sure we can link to uninstalled libraries
+ !isEqual(MODULE_LIBS, $[QT_INSTALL_LIBS]) {
+ QMAKE_LIBDIR *= $$MODULE_LIBS
+ unix:QMAKE_LFLAGS *= "-Wl,-rpath-link,$$MODULE_LIBS"
+ }
+ if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
+ win32:LINKAGE = -l$${MODULE_NAME}$${QT_LIBINFIX}d
+ mac:LINKAGE = -l$${MODULE_NAME}$${QT_LIBINFIX}_debug
+ }
+ isEmpty(LINKAGE):LINKAGE = -l$${MODULE_NAME}$${QT_LIBINFIX}
+ }
+ !isEmpty(QMAKE_LSB) {
+ QMAKE_LFLAGS *= --lsb-libpath=$$$$QMAKE_LIBDIR_QT
+ QMAKE_LFLAGS *= -L/opt/lsb/lib
+ QMAKE_LFLAGS *= --lsb-shared-libs=$${MODULE_NAME}$${QT_LIBINFIX}
+ }
+ LIBS += $$LINKAGE
+ export(CONFIG)
+ export(DEFINES)
+ export(LIBS)
+ export(INCLUDEPATH)
+ export(QMAKE_FRAMEWORKPATH)
+ export(QMAKE_LFLAGS)
+ export(QMAKE_LIBDIR)
+ return(true)
+}
+
# variable, default
defineTest(qtPrepareTool) {
- isEmpty($$1) {
- !isEmpty(QT_BUILD_TREE):$$1 = $$QT_BUILD_TREE/bin/$$2
- else:$$1 = $$[QT_INSTALL_BINS]/$$2
+ MODBASE = $$[QT_INSTALL_BINS]
+ !isEmpty(QT_BUILD_TREE):MODBASE = $$QT_BUILD_TREE/bin
+ count(ARGS, 2, greaterThan) {
+ isEmpty(QT.$${3}.bins):warning("No QT.$${3}.bins, module path ignored for qtPrepareTool($$1, $$2, $$3)")
+ else:MODBASE = $$eval(QT.$${3}.bins)
}
+ isEmpty($$1):$$1 = $$MODBASE/$$2
$$1 ~= s,[/\\\\],$$QMAKE_DIR_SEP,
contains(QMAKE_HOST.os, Windows):!contains($$1, .*\\.(exe|bat)$) {
exists($$eval($$1).bat) {
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
new file mode 100644
index 0000000000..c49a41581f
--- /dev/null
+++ b/mkspecs/features/qt_module.prf
@@ -0,0 +1,23 @@
+# This file is loaded on-demand, before any .qmake.cache (sometimes *in* .qmake.cache), to loaded
+# important settings for modules, such as paths to QtBase, settings etc.
+# Consequently, we have to do some stunts to figure out where to find qmodule.pri.
+
+isEmpty(QMAKE_QT_MODULE)|!exists($$QMAKE_QT_MODULE) {
+ exists($$QTDIR/mkspecs/qmodule.pri):QMAKE_QT_MODULE = $$QTDIR/mkspecs/qmodule.pri
+ QMAKE_CACHE_DIR = $$dirname(_QMAKE_CACHE_)
+ !exists($$QMAKE_QT_MODULE):exists($$QMAKE_CACHE_DIR/mkspecs/qmodule.pri):QMAKE_QT_MODULE = $$QMAKE_CACHE_DIR/mkspecs/qmodule.pri
+ !exists($$QMAKE_QT_MODULE):exists($$QMAKE_CACHE_DIR/qtbase/mkspecs/qmodule.pri):QMAKE_QT_MODULE = $$QMAKE_CACHE_DIR/qtbase/mkspecs/qmodule.pri
+ !exists($$QMAKE_QT_MODULE):if(!isEmpty(QT_BUILD_TREE) & exists($$QT_BUILD_TREE/mkspecs/qmodule.pri)):QMAKE_QT_MODULE = $$QT_BUILD_TREE/mkspecs/qmodule.pri
+ !exists($$QMAKE_QT_MODULE):exists($$[QT_INSTALL_DATA]/mkspecs/qmodule.pri):QMAKE_QT_MODULE = $$[QT_INSTALL_DATA]/mkspecs/qmodule.pri
+}
+
+!exists($$QMAKE_QT_MODULE)|!include($$QMAKE_QT_MODULE, "", true) {
+ error("Cannot load qmodule.pri!")
+} else {
+ debug(1, "Loaded qmodule.pri from ($$QMAKE_QT_MODULE)")
+}
+mac {
+ !isEmpty(QMAKE_RPATHDIR){
+ CONFIG += absolute_library_soname
+ }
+}
diff --git a/mkspecs/features/symbian/qt_demo.prf b/mkspecs/features/symbian/qt_demo.prf
new file mode 100644
index 0000000000..9c4d96c1da
--- /dev/null
+++ b/mkspecs/features/symbian/qt_demo.prf
@@ -0,0 +1,17 @@
+RSS_RULES ="group_name=\"QtDemos\";"
+
+nokiaVendor = "Nokia, Qt"
+vendorinfo = \
+ "; Localised Vendor name" \
+ "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \
+ " " \
+ "; Unique Vendor name" \
+ ":\"$$nokiaVendor\"" \
+ " "
+
+demos_deployment.pkg_prerules += vendorinfo
+DEPLOYMENT += demos_deployment
+
+isEmpty(ICON):contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG, qt):!contains(CONFIG, "no_icon") {
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+}
diff --git a/mkspecs/features/symbian/qt_example.prf b/mkspecs/features/symbian/qt_example.prf
new file mode 100644
index 0000000000..8c523fb00f
--- /dev/null
+++ b/mkspecs/features/symbian/qt_example.prf
@@ -0,0 +1,17 @@
+RSS_RULES ="group_name=\"QtExamples\";"
+
+nokiaVendor = "Nokia, Qt"
+vendorinfo = \
+ "; Localised Vendor name" \
+ "%{$$addLanguageDependentPkgItem(nokiaVendor)}" \
+ " " \
+ "; Unique Vendor name" \
+ ":\"$$nokiaVendor\"" \
+ " "
+
+examples_deployment.pkg_prerules += vendorinfo
+DEPLOYMENT += examples_deployment
+
+isEmpty(ICON):contains(TEMPLATE, ".*app"):contains(QT, gui):contains(CONFIG, qt):!contains(CONFIG, "no_icon") {
+ ICON = $$QT_SOURCE_TREE/src/s60installs/qt.svg
+}
diff --git a/mkspecs/features/uitools.prf b/mkspecs/features/uitools.prf
index 65995770de..10835d4ab3 100644
--- a/mkspecs/features/uitools.prf
+++ b/mkspecs/features/uitools.prf
@@ -11,4 +11,4 @@ CONFIG(debug, debug|release) {
}
LIBS += $$QTUITOOLS_LINKAGE
-INCLUDEPATH = $$QMAKE_INCDIR_QT/QtUiTools $$INCLUDEPATH
+INCLUDEPATH = $$QT.uitools.includes $$INCLUDEPATH
diff --git a/mkspecs/features/win32/qaxcontainer.prf b/mkspecs/features/win32/qaxcontainer.prf
index 34c6dfed42..2d0ff851ba 100644
--- a/mkspecs/features/win32/qaxcontainer.prf
+++ b/mkspecs/features/win32/qaxcontainer.prf
@@ -8,6 +8,10 @@
LIBS += -lQAxContainer
}
+QMAKE_LIBDIR += $$QT.activeqt.libs
+INCLUDEPATH += $$QT.activeqt.includes
+QMAKE_LIBS += $$QMAKE_LIBS_GUI
+
qtPrepareTool(QMAKE_DUMPCPP, dumpcpp)
dumpcpp_decl.commands = $$QMAKE_DUMPCPP ${QMAKE_FILE_IN} -o ${QMAKE_FILE_BASE}
diff --git a/mkspecs/features/win32/qaxserver.prf b/mkspecs/features/win32/qaxserver.prf
index a6c0869540..678c2ccb83 100644
--- a/mkspecs/features/win32/qaxserver.prf
+++ b/mkspecs/features/win32/qaxserver.prf
@@ -7,6 +7,7 @@ ACTIVEQT_VERSION = $$VERSION
isEmpty(ACTIVEQT_VERSION):ACTIVEQT_VERSION = 1.0
DEFINES += QAXSERVER
+INCLUDEPATH += $$QT.activeqt.includes
contains(TEMPLATE, "vc.*") {
ACTIVEQT_IDC = $${QMAKE_IDC} ### Qt5: remove me
@@ -56,4 +57,6 @@ qt:!target_qt {
QMAKE_LIBS_QT_ENTRY = -lQAxServer
}
dll:QMAKE_LIBS += $$QMAKE_LIBS_QT_ENTRY
+ QMAKE_LIBDIR += $$QT.activeqt.libs
+ QMAKE_LIBS += $$QMAKE_LIBS_GUI
}