diff options
author | Jerome Pasion <jerome.pasion@digia.com> | 2012-11-02 14:41:27 +0100 |
---|---|---|
committer | Jerome Pasion <jerome.pasion@digia.com> | 2012-11-02 14:41:27 +0100 |
commit | c808dd27459e030fde0577feb8ba06e3bd465526 (patch) | |
tree | 4bf898dc4a88e2b03c9716f940638a2e01c6c0ce /mkspecs | |
parent | d9d8845d507a6bdbc9c9f24c0d9d86dca513461d (diff) | |
parent | 300534fc214f2547a63594ce0891e9a54c8f33ca (diff) |
Merge branch 'master' of ssh://codereview.qt-project.org/qt/qtbase into newdocs
Change-Id: I7e6cee190a341901dfbf8effb54ebccb91bf7a17
Diffstat (limited to 'mkspecs')
-rw-r--r-- | mkspecs/features/create_cmake.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/default_pre.prf | 14 | ||||
-rw-r--r-- | mkspecs/features/qml1_module.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/qml1_plugin.prf | 2 | ||||
-rw-r--r-- | mkspecs/features/qml_module.prf | 9 | ||||
-rw-r--r-- | mkspecs/features/qml_plugin.prf | 37 | ||||
-rw-r--r-- | mkspecs/features/qt.prf | 52 | ||||
-rw-r--r-- | mkspecs/features/qt_build_config.prf | 10 | ||||
-rw-r--r-- | mkspecs/features/qt_build_paths.prf | 14 | ||||
-rw-r--r-- | mkspecs/features/qt_functions.prf | 35 | ||||
-rw-r--r-- | mkspecs/features/qt_module.prf | 29 | ||||
-rw-r--r-- | mkspecs/features/qt_module_fwdpri.prf | 27 | ||||
-rw-r--r-- | mkspecs/features/qt_module_headers.prf | 12 | ||||
-rw-r--r-- | mkspecs/features/qt_plugin.prf | 32 | ||||
-rw-r--r-- | mkspecs/features/qt_tool.prf | 20 |
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.") |