summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorJerome Pasion <jerome.pasion@digia.com>2012-11-02 14:41:27 +0100
committerJerome Pasion <jerome.pasion@digia.com>2012-11-02 14:41:27 +0100
commitc808dd27459e030fde0577feb8ba06e3bd465526 (patch)
tree4bf898dc4a88e2b03c9716f940638a2e01c6c0ce /mkspecs
parentd9d8845d507a6bdbc9c9f24c0d9d86dca513461d (diff)
parent300534fc214f2547a63594ce0891e9a54c8f33ca (diff)
Merge branch 'master' of ssh://codereview.qt-project.org/qt/qtbase into newdocs
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/features/create_cmake.prf2
-rw-r--r--mkspecs/features/default_pre.prf14
-rw-r--r--mkspecs/features/qml1_module.prf2
-rw-r--r--mkspecs/features/qml1_plugin.prf2
-rw-r--r--mkspecs/features/qml_module.prf9
-rw-r--r--mkspecs/features/qml_plugin.prf37
-rw-r--r--mkspecs/features/qt.prf52
-rw-r--r--mkspecs/features/qt_build_config.prf10
-rw-r--r--mkspecs/features/qt_build_paths.prf14
-rw-r--r--mkspecs/features/qt_functions.prf35
-rw-r--r--mkspecs/features/qt_module.prf29
-rw-r--r--mkspecs/features/qt_module_fwdpri.prf27
-rw-r--r--mkspecs/features/qt_module_headers.prf12
-rw-r--r--mkspecs/features/qt_plugin.prf32
-rw-r--r--mkspecs/features/qt_tool.prf20
15 files changed, 137 insertions, 160 deletions
diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf
index 29d256db7f..c879103c24 100644
--- a/mkspecs/features/create_cmake.prf
+++ b/mkspecs/features/create_cmake.prf
@@ -60,7 +60,7 @@ static|staticlib:CMAKE_STATIC_TYPE = true
contains(QT_CONFIG, reduce_relocations):CMAKE_ADD_FPIE_FLAGS = "true"
-CMAKE_MKSPEC = $$relative_path($$QMAKESPEC, $$[QT_HOST_DATA/get]/mkspecs)
+CMAKE_MKSPEC = $$[QMAKE_XSPEC]
macx {
!isEmpty(CMAKE_STATIC_TYPE) {
diff --git a/mkspecs/features/default_pre.prf b/mkspecs/features/default_pre.prf
index 8b9cae5a6d..8f8916ae19 100644
--- a/mkspecs/features/default_pre.prf
+++ b/mkspecs/features/default_pre.prf
@@ -1,20 +1,6 @@
load(exclusive_builds)
CONFIG = lex yacc warn_on debug exceptions depend_includepath $$CONFIG
-!build_pass:exists($$_PRO_FILE_PWD_/sync.profile) {
- !exists($$[QT_HOST_DATA]/.qmake.cache) {
- !isEmpty(_QMAKE_SUPER_CACHE_) {
- # When doing a -prefix build of top-level qt5/qt.pro, we need to announce
- # this repo's module pris' location to the other repos.
- isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$OUT_PWD
- modpath = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
- !contains(QMAKEMODULES, $$modpath): \
- cache(QMAKEMODULES, add super, modpath)
- unset(modpath)
- }
- }
-}
-
# Populate the installdir which will be passed to qdoc in the default_post.prf
# This allows a project to remove the installdir if need be, to trigger building online docs,
# which Qt Creator does.
diff --git a/mkspecs/features/qml1_module.prf b/mkspecs/features/qml1_module.prf
new file mode 100644
index 0000000000..8bacddc549
--- /dev/null
+++ b/mkspecs/features/qml1_module.prf
@@ -0,0 +1,2 @@
+CONFIG += qml1_target
+load(qml_module)
diff --git a/mkspecs/features/qml1_plugin.prf b/mkspecs/features/qml1_plugin.prf
new file mode 100644
index 0000000000..2914c78ea3
--- /dev/null
+++ b/mkspecs/features/qml1_plugin.prf
@@ -0,0 +1,2 @@
+CONFIG += qml1_target
+load(qml_plugin)
diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf
index 10ee3bf3a7..03ef88221e 100644
--- a/mkspecs/features/qml_module.prf
+++ b/mkspecs/features/qml_module.prf
@@ -9,6 +9,11 @@ for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_)
# Only for Qt Creator's project view
OTHER_FILES += $$fq_qml_files
+qml1_target: \
+ instbase = $$[QT_INSTALL_IMPORTS]/QtDeclarative
+else: \
+ instbase = $$[QT_INSTALL_IMPORTS]
+
exists($$[QT_HOST_PREFIX]/.qmake.cache) {
# These bizarre rules copy the files to the qtbase build directory
@@ -17,7 +22,7 @@ exists($$[QT_HOST_PREFIX]/.qmake.cache) {
}
qmlfiles2build.input = fq_qml_files
- qmlfiles2build.output = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH/${QMAKE_FUNC_FILE_IN_qmlModStripSrcDir}
+ qmlfiles2build.output = $$instbase/$$TARGETPATH/${QMAKE_FUNC_FILE_IN_qmlModStripSrcDir}
!contains(TEMPLATE, vc.*): qmlfiles2build.variable_out = PRE_TARGETDEPS
qmlfiles2build.commands = $$QMAKE_COPY ${QMAKE_FILE_IN} ${QMAKE_FILE_OUT}
qmlfiles2build.name = COPY ${QMAKE_FILE_IN}
@@ -29,5 +34,5 @@ exists($$[QT_HOST_PREFIX]/.qmake.cache) {
# Install rules
qmldir.base = $$_PRO_FILE_PWD_
qmldir.files = $$fq_qml_files
-qmldir.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+qmldir.path = $$instbase/$$TARGETPATH
INSTALLS += qmldir
diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf
index ae5fbf28a2..b938bf493e 100644
--- a/mkspecs/features/qml_plugin.prf
+++ b/mkspecs/features/qml_plugin.prf
@@ -24,7 +24,12 @@ exists($$QMLTYPEFILE): QML_FILES += $$QMLTYPEFILE
# Install rules
-target.path = $$[QT_INSTALL_IMPORTS]/$$TARGETPATH
+qml1_target: \
+ instbase = $$[QT_INSTALL_IMPORTS]/QtDeclarative
+else: \
+ instbase = $$[QT_INSTALL_IMPORTS]
+
+target.path = $$instbase/$$TARGETPATH
INSTALLS += target
# Some final setup
@@ -42,13 +47,31 @@ load(qt_targets)
# directory. Then review and commit the changes made to plugins.qmltypes.
#
!cross_compile {
- isEmpty(IMPORT_VERSION): IMPORT_VERSION = $$eval(QT.$${CXX_MODULE}.MAJOR_VERSION).$$eval(QT.$${CXX_MODULE}.MINOR_VERSION)
+ build_pass|!debug_and_release {
+ isEmpty(IMPORT_VERSION): IMPORT_VERSION = $$eval(QT.$${CXX_MODULE}.MAJOR_VERSION).$$eval(QT.$${CXX_MODULE}.MINOR_VERSION)
- load(resolve_target)
- qtPrepareTool(QMLPLUGINDUMP, qmlplugindump)
- qmltypes.target = qmltypes
- qmltypes.commands = $$QMLPLUGINDUMP $$replace(TARGETPATH, /, .) $$IMPORT_VERSION $$QMAKE_RESOLVED_TARGET > $$QMLTYPEFILE
- qmltypes.depends = $$QMAKE_RESOLVED_TARGET
+ load(resolve_target)
+ qml1_target: \
+ qmlplugindump = qml1plugindump
+ else: \
+ qmlplugindump = qmlplugindump
+ qtPrepareTool(QMLPLUGINDUMP, $$qmlplugindump)
+ importpath.value =
+ for(qmod, QMAKEMODULES) {
+ qmod = $$section(qmod, /, 0, -3)/imports
+ qml1_target: qmod = $$qmod/QtDeclarative
+ exists($$qmod): importpath.value += $$shell_path($$qmod)
+ }
+ importpath.name = QML_IMPORT_PATH
+ importpath.value = $$unique(importpath.value)
+ qtAddToolEnv(QMLPLUGINDUMP, importpath)
+ TARGETPATHBASE = $$replace(TARGETPATH, \\.\\d+\$, )
+ qmltypes.target = qmltypes
+ qmltypes.commands = $$QMLPLUGINDUMP $$replace(TARGETPATHBASE, /, .) $$IMPORT_VERSION > $$QMLTYPEFILE
+ qmltypes.depends = $$QMAKE_RESOLVED_TARGET
+ } else {
+ qmltypes.CONFIG += recursive
+ }
QMAKE_EXTRA_TARGETS += qmltypes
}
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index 8f797a5960..c4b991becd 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -38,60 +38,15 @@ plugin { #Qt plugins
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 = qscreenvfb qgfxtransformed qgfxshadowfb qgfxpvregl qscreenlinuxfb qeglnullws qdirectfbscreen qahiscreen
- GRAPHICSSYSTEMPLUGINS = qmeegographicssystem qglgraphicssystem qvggraphicssystem qshivavggraphicssystem
- IMAGEPLUGINS = qgif qico qjpeg qsvg
- 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
- }
+ QT_PLUGINPATH = $$eval(QT_PLUGIN.$${QTPLUG}.TYPE)
# 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
- }
+ QT_LINKAGE = -l$${QTPLUG}$$qtPlatformTargetSuffix()
}
# Only link against plugin in static builds
@@ -149,6 +104,3 @@ wince*:static:gui {
}
!isEmpty(QT_NAMESPACE):DEFINES *= QT_NAMESPACE=$$QT_NAMESPACE
-mac {
- !isEmpty(QT_NAMESPACE_MAC_CRC):DEFINES *= QT_NAMESPACE_MAC_CRC=$$QT_NAMESPACE_MAC_CRC
-}
diff --git a/mkspecs/features/qt_build_config.prf b/mkspecs/features/qt_build_config.prf
index a2ad4429c1..01605da5e8 100644
--- a/mkspecs/features/qt_build_config.prf
+++ b/mkspecs/features/qt_build_config.prf
@@ -9,6 +9,16 @@
debug(1, "Not loading qmodule.pri twice")
}
+!build_pass:!isEmpty(_QMAKE_SUPER_CACHE_):!exists($$[QT_HOST_DATA]/.qmake.cache) {
+ # When doing a -prefix build of top-level qt5/qt.pro, we need to announce
+ # this repo's module pris' location to the other repos.
+ isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$shadowed($$dirname(_QMAKE_CONF_))
+ modpath = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
+ !contains(QMAKEMODULES, $$modpath): \
+ cache(QMAKEMODULES, add super, modpath)
+ unset(modpath)
+}
+
mac {
!isEmpty(QMAKE_RPATHDIR){
CONFIG += absolute_library_soname
diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf
new file mode 100644
index 0000000000..5f6f08c3db
--- /dev/null
+++ b/mkspecs/features/qt_build_paths.prf
@@ -0,0 +1,14 @@
+# Find the module's source root dir.
+isEmpty(_QMAKE_CONF_): error("Project has no top-level .qmake.conf file.")
+MODULE_PROFILE_DIR = $$dirname(_QMAKE_CONF_)
+isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
+isEmpty(MODULE_BASE_OUTDIR): MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
+isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
+
+QTDIR = $$[QT_HOST_PREFIX]
+exists($$QTDIR/.qmake.cache) {
+ # Permit modules to enforce being built outside QTDIR ...
+ !force_independent: MODULE_BASE_OUTDIR = $$QTDIR
+ # ... though this sort of breaks the idea.
+ MODULE_QMAKE_OUTDIR = $$QTDIR
+}
diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf
index 2d8f81bae1..ce32028138 100644
--- a/mkspecs/features/qt_functions.prf
+++ b/mkspecs/features/qt_functions.prf
@@ -192,13 +192,16 @@ defineTest(qtAddToolEnv) {
equals(QMAKE_DIR_SEP, /) {
contains($${env}.CONFIG, prepend): infix = \${$$name:+:\$$$name}
else: infix =
- $$1 = "$$name=$$join(value, :)$$infix $$eval($$1)"
+ val = "$$name=$$join(value, :)$$infix"
} else {
# Escape closing parens when expanding the variable, otherwise cmd confuses itself.
contains($${env}.CONFIG, prepend): infix = ;%$$name:)=^)%
else: infix =
- $$1 = "(set $$name=$$join(value, ;)$$infix) & $$eval($$1)"
+ val = "(set $$name=$$join(value, ;)$$infix) &"
}
+ contains(MAKEFILE_GENERATOR, MS.*): val ~= s,%,%%,g
+ else: val ~= s,\\\$,\$\$,g
+ $$1 = "$$val $$eval($$1)"
}
}
export($$1)
@@ -207,29 +210,33 @@ defineTest(qtAddToolEnv) {
defineTest(qtAddTargetEnv) {
deps = $$resolve_depends(QT, "QT.")
!isEmpty(deps) {
- plugin_paths =
for(dep, deps) {
deppath += $$shell_path($$eval(QT.$${dep}.libs))
for(rpath, QT.$${dep}.rpath_link): \
deppath += $$shell_path($$rpath)
- plugin_paths += $$eval(QT.$${dep}.plugin_path) $$eval(QT.$${dep}.plugins)
}
- equals(QMAKE_HOST.os, Windows): \
+ equals(QMAKE_HOST.os, Windows) {
deppath.name = PATH
- else:contains(QMAKE_HOST.os, Linux|FreeBSD): \
+ } else:contains(QMAKE_HOST.os, Linux|FreeBSD) {
deppath.name = LD_LIBRARY_PATH
- else:equals(QMAKE_HOST.os, Darwin): \
- deppath.name = DYLD_LIBRARY_PATH
- else: \
+ } else:equals(QMAKE_HOST.os, Darwin) {
+ contains(QT_CONFIG, qt_framework): \
+ deppath.name = DYLD_FRAMEWORK_PATH
+ else: \
+ deppath.name = DYLD_LIBRARY_PATH
+ } else {
error("Operating system not supported.")
+ }
deppath.value = $$unique(deppath)
deppath.CONFIG = prepend
- pluginpath.name = QT_PLUGIN_PATH
+
pluginpath.value =
- plugin_paths = $$unique(plugin_paths)
- for(ppath, plugin_paths): \
- exists($$ppath): \
- pluginpath.value += $$shell_path($$ppath)
+ for(qmod, QMAKEMODULES) {
+ qmod = $$section(qmod, /, 0, -3)/plugins
+ exists($$qmod): pluginpath.value += $$shell_path($$qmod)
+ }
+ pluginpath.name = QT_PLUGIN_PATH
+
QT_TOOL_ENV += deppath pluginpath
}
qtAddToolEnv($$1, $$QT_TOOL_ENV)
diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf
index 23541930e3..50c7c74c82 100644
--- a/mkspecs/features/qt_module.prf
+++ b/mkspecs/features/qt_module.prf
@@ -32,19 +32,7 @@ else: \
MODULE_DEFINE = QT_$${ucmodule}_LIB
MODULE_DEFINES = $$MODULE_DEFINE $$MODULE_DEFINES
-# Find the module's source root dir.
-MODULE_PROFILE_DIR = $$_PRO_FILE_PWD_
-for(ever) {
- exists($$MODULE_PROFILE_DIR/sync.profile):break()
- nmpri = $$dirname(MODULE_PROFILE_DIR)
- equals(nmpri, $$MODULE_PROFILE_DIR):error("No sync.profile found. This does not look like a Qt module source tree.")
- MODULE_PROFILE_DIR = $$nmpri
- unset(nmpri)
-}
-
-isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
-isEmpty(MODULE_BASE_OUTDIR): MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
-isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
+load(qt_build_paths)
# This check will be removed soon. Weird indentation to avoid reindenting the code later.
!isEmpty(MODULE_PRI) {
@@ -53,7 +41,7 @@ isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
exists($$MODULE_PRI)|error("Specified module pri file $$MODULE_PRI does not exist.")
} else {
-MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_$${MODULE}.pri
+MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_lib_$${MODULE}.pri
!build_pass {
@@ -104,10 +92,7 @@ MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst/qt_$${MODULE}.pri
load(qt_module_fwdpri)
-MODULE_INCLUDES = $$eval(QT.$${MODULE}.includes)
-MODULE_PRIVATE_INCLUDES = $$eval(QT.$${MODULE}.private_includes)
-INCLUDEPATH *= $$MODULE_INCLUDES
-INCLUDEPATH *= $$MODULE_PRIVATE_INCLUDES
+INCLUDEPATH *= $$eval(QT.$${MODULE}.includes) $$eval(QT.$${MODULE}.private_includes)
load(qt_module_headers)
@@ -123,14 +108,8 @@ CONFIG -= fix_output_dirs
!isEmpty(QMAKE_DOCS) {
doc_subdir = doc
- QTDIR = $$[QT_HOST_PREFIX]
- !force_independent:exists($$QTDIR/.qmake.cache): \
- mod_component_base = $$QTDIR
- else: \
- mod_component_base = $$MODULE_BASE_OUTDIR
-
unset(QMAKE_DOCS_INDEX)
- QMAKE_DOCS_OUTPUTDIR = $$mod_component_base/$$doc_subdir/qt$${MODULE}
+ QMAKE_DOCS_OUTPUTDIR = $$MODULE_BASE_OUTDIR/$$doc_subdir/qt$${MODULE}
for(qmod, QMAKEMODULES): \
QMAKE_DOCS_INDEX += $$section(qmod, /, 0, -3)/$$doc_subdir
diff --git a/mkspecs/features/qt_module_fwdpri.prf b/mkspecs/features/qt_module_fwdpri.prf
index 5dc63ebdfd..4c3a4b433f 100644
--- a/mkspecs/features/qt_module_fwdpri.prf
+++ b/mkspecs/features/qt_module_fwdpri.prf
@@ -1,19 +1,10 @@
!build_pass {
- QTDIR = $$[QT_HOST_PREFIX]
- exists($$QTDIR/.qmake.cache) {
- mod_component_base = $$QTDIR
- mod_qmake_base = $$QTDIR
- } else {
- mod_component_base = $$MODULE_BASE_OUTDIR
- mod_qmake_base = $$MODULE_QMAKE_OUTDIR
- }
- # Permit modules to enforce being built outside QTDIR.
- force_independent: mod_component_base = $$MODULE_BASE_OUTDIR
+ load(qt_build_paths)
isEmpty(MODULE_INSTALL_LIBS): MODULE_INSTALL_LIBS = $$[QT_INSTALL_LIBS/raw]
- MODULE_FWD_PRI = $$mod_qmake_base/mkspecs/modules/qt_$${MODULE}.pri
+ MODULE_FWD_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_lib_$${MODULE}.pri
# -rpath-link is used by the linker to find depedencies of dynamic
# libraries which were NOT specified on the command line.
@@ -32,11 +23,9 @@
privqt = $$replace(QT_PRIVATE, -private$, )
privdep = $$resolve_depends(privqt, "QT.")
rpaths =
- pluginpath =
alldep = $$pubdep $$privdep
for(dep, alldep) { # Inherit link-rpaths from all our dependencies
rpaths += $$eval(QT.$${dep}.rpath_link) $$eval(QT.$${dep}.rpath_link_private)
- pluginpath += $$eval(QT.$${dep}.plugin_path) $$eval(QT.$${dep}.plugins)
}
privdep -= $$pubdep
for(dep, privdep): \ # Add our private dependencies' lib paths as new link-rpaths
@@ -58,20 +47,18 @@
} else {
module_rpathlink_priv =
}
- pluginpath = $$unique(pluginpath)
# Create a forwarding module .pri file
MODULE_FWD_PRI_CONT = \
"QT_MODULE_BASE = $$MODULE_BASE_DIR" \
- "QT_MODULE_BIN_BASE = $$mod_component_base/bin" \
- "QT_MODULE_INCLUDE_BASE = $$mod_component_base/include" \
- "QT_MODULE_IMPORT_BASE = $$mod_component_base/imports" \
- "QT_MODULE_LIB_BASE = $$mod_component_base/lib" \
- "QT_MODULE_PLUGIN_BASE = $$mod_component_base/plugins" \
+ "QT_MODULE_BIN_BASE = $$MODULE_BASE_OUTDIR/bin" \
+ "QT_MODULE_INCLUDE_BASE = $$MODULE_BASE_OUTDIR/include" \
+ "QT_MODULE_IMPORT_BASE = $$MODULE_BASE_OUTDIR/imports" \
+ "QT_MODULE_LIB_BASE = $$MODULE_BASE_OUTDIR/lib" \
+ "QT_MODULE_PLUGIN_BASE = $$MODULE_BASE_OUTDIR/plugins" \
$$module_rpathlink \
$$module_rpathlink_priv \
"QT.$${MODULE}.rpath = $$MODULE_INSTALL_LIBS" \
- "QT.$${MODULE}.plugin_path = $$val_escape(pluginpath)" \
"include($$MODULE_PRI)"
write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.")
touch($$MODULE_FWD_PRI, $$MODULE_PRI)
diff --git a/mkspecs/features/qt_module_headers.prf b/mkspecs/features/qt_module_headers.prf
index 0340f234c5..b1918bd67d 100644
--- a/mkspecs/features/qt_module_headers.prf
+++ b/mkspecs/features/qt_module_headers.prf
@@ -1,20 +1,16 @@
-QTDIR = $$[QT_HOST_PREFIX]
-!force_independent:exists($$QTDIR/.qmake.cache): \
- mod_component_base = $$QTDIR
-else: \
- mod_component_base = $$MODULE_BASE_OUTDIR
+load(qt_build_paths)
!build_pass {
qtPrepareTool(QMAKE_SYNCQT, syncqt)
contains(QT_CONFIG, private_tests): \ # -developer-build
QMAKE_SYNCQT += -check-includes
- QMAKE_SYNCQT += -module $$TARGET -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs -outdir $$mod_component_base $$MODULE_BASE_DIR
+ QMAKE_SYNCQT += -module $$TARGET -mkspecsdir $$[QT_HOST_DATA/get]/mkspecs -outdir $$MODULE_BASE_OUTDIR $$MODULE_BASE_DIR
!silent: message($$QMAKE_SYNCQT)
system($$QMAKE_SYNCQT)|error("Failed to run: $$QMAKE_SYNCQT")
}
#load up the headers info
-include($$mod_component_base/include/$$TARGET/headers.pri, "", true)
+include($$MODULE_BASE_OUTDIR/include/$$TARGET/headers.pri, "", true)
lctarget = $$lower($$TARGET)
uctarget = $$upper($$TARGET)
@@ -55,7 +51,7 @@ count(MODULE_VERSION_HEADER, 1) {
}
# Create a module master header
-MODULE_MASTER_HEADER = $$mod_component_base/include/$$TARGET/$$TARGET
+MODULE_MASTER_HEADER = $$MODULE_BASE_OUTDIR/include/$$TARGET/$$TARGET
!build_pass {
MODULE_MASTER_HEADER_CONT = \
"/* This file was generated by qmake with the info from $${_PRO_FILE_}. */" \
diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf
index 0209910203..b84fa47dd1 100644
--- a/mkspecs/features/qt_plugin.prf
+++ b/mkspecs/features/qt_plugin.prf
@@ -1,12 +1,17 @@
+load(qt_build_paths)
+
+isEmpty(PLUGIN_TYPE): error("PLUGIN_TYPE (plugins/ subdirectory) needs to be defined.")
+
TEMPLATE = lib
-isEmpty(VERSION):VERSION = $$QT_VERSION
-CONFIG += qt plugin
+CONFIG += plugin
+DESTDIR = $$MODULE_BASE_OUTDIR/plugins/$$PLUGIN_TYPE
-if(win32|mac):!macx-xcode {
+tool_plugin {
+ !build_pass:contains(QT_CONFIG, build_all): CONFIG += release
+} else:if(win32|mac):!macx-xcode {
contains(QT_CONFIG, debug_and_release):CONFIG += debug_and_release
contains(QT_CONFIG, build_all):CONFIG += build_all
}
-TARGET = $$qtLibraryTarget($$TARGET)
contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
contains(QT_CONFIG, separate_debug_info):CONFIG += separate_debug_info
contains(QT_CONFIG, separate_debug_info_nocopy):CONFIG += separate_debug_info_nocopy
@@ -15,6 +20,25 @@ contains(QT_CONFIG, c++11):CONFIG += c++11
contains(QT_CONFIG, static):CONFIG += static
else:CONFIG += shared
+!build_pass:static {
+ isEmpty(MODULE): MODULE = $$section($$list($$basename(_PRO_FILE_)), ., 0, 0)
+
+ MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_plugin_$${MODULE}.pri
+
+ MODULE_PRI_CONT = \
+ "QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE"
+ write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
+
+ pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
+ pritarget.files = $$MODULE_PRI
+ INSTALLS += pritarget
+}
+
+target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE
+INSTALLS += target
+
+TARGET = $$qtLibraryTarget($$TARGET)
+
load(qt_targets)
wince*:LIBS += $$QMAKE_LIBS_GUI
diff --git a/mkspecs/features/qt_tool.prf b/mkspecs/features/qt_tool.prf
index 01a26b238e..27753f26dd 100644
--- a/mkspecs/features/qt_tool.prf
+++ b/mkspecs/features/qt_tool.prf
@@ -1,5 +1,8 @@
TEMPLATE = app
+load(qt_build_paths)
+DESTDIR = $$MODULE_BASE_OUTDIR/bin
+
CONFIG += qt warn_on console
isEmpty(QMAKE_INFO_PLIST): CONFIG -= app_bundle
@@ -16,26 +19,13 @@ INSTALLS += target
MODULE_DEPENDS = $$replace(QT, -private$, )
- # Find the module's source root dir.
- MODULE_PROFILE_DIR = $$_PRO_FILE_PWD_
- for(ever) {
- exists($$MODULE_PROFILE_DIR/sync.profile):break()
- nmpri = $$dirname(MODULE_PROFILE_DIR)
- equals(nmpri, $$MODULE_PROFILE_DIR): \
- error("No sync.profile found. This does not look like a Qt module source tree.")
- MODULE_PROFILE_DIR = $$nmpri
- unset(nmpri)
- }
-
- isEmpty(MODULE_BASE_DIR): MODULE_BASE_DIR = $$MODULE_PROFILE_DIR
- MODULE_BASE_OUTDIR = $$shadowed($$MODULE_BASE_DIR)
- isEmpty(MODULE_QMAKE_OUTDIR): MODULE_QMAKE_OUTDIR = $$MODULE_BASE_OUTDIR
+ load(qt_build_paths)
load(resolve_target)
cmd = $$shell_path($$QMAKE_RESOLVED_TARGET)
qtAddTargetEnv(cmd)
- TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_$${MODULE}.pri
+ TOOL_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_tool_$${MODULE}.pri
TOOL_PRI_CONT = "QT_TOOL.$${MODULE}.command = $$val_escape(cmd)"
write_file($$TOOL_PRI, TOOL_PRI_CONT)|error("Aborting.")