summaryrefslogtreecommitdiffstats
path: root/mkspecs/features
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:36:55 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-04-11 14:36:55 +0200
commit98d3e40fb7c88b670a93e73dace2d0f05a5f903c (patch)
treeb1292124a86c219fb434db4ec28e8f805ff52287 /mkspecs/features
parenta74e4b85be83e2da47f4a1d8fcf0e78079335b80 (diff)
parentbab494e4d046f5617d19f5fec35eeff94377c51f (diff)
Merge remote-tracking branch 'origin/stable' into dev
Conflicts: mkspecs/qnx-armv7le-qcc/qplatformdefs.h src/printsupport/kernel/qcups.cpp src/widgets/styles/qstyle.h tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp Change-Id: Ia41e13051169a6d4a8a1267548e7d47b859bb267
Diffstat (limited to 'mkspecs/features')
-rw-r--r--mkspecs/features/create_cmake.prf21
-rw-r--r--mkspecs/features/egl.prf29
-rw-r--r--mkspecs/features/mac/default_post.prf7
-rw-r--r--mkspecs/features/mac/default_pre.prf10
-rw-r--r--mkspecs/features/mac/sdk.prf7
-rw-r--r--mkspecs/features/opengles1.prf2
-rw-r--r--mkspecs/features/qt.prf41
-rw-r--r--mkspecs/features/qt_module_pris.prf6
-rw-r--r--mkspecs/features/qt_plugin.prf35
-rw-r--r--mkspecs/features/unix/opengl.prf7
-rw-r--r--mkspecs/features/win32/console.prf4
-rw-r--r--mkspecs/features/win32/qt_config.prf10
-rw-r--r--mkspecs/features/win32/windows.prf4
13 files changed, 132 insertions, 51 deletions
diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf
index 82e2812f3b..ac5fe22d75 100644
--- a/mkspecs/features/create_cmake.prf
+++ b/mkspecs/features/create_cmake.prf
@@ -111,15 +111,22 @@ if(build_all|CONFIG(debug, debug|release)): CMAKE_DEBUG_TYPE = debug
if(build_all|CONFIG(release, debug|release)): CMAKE_RELEASE_TYPE = release
contains(CONFIG, plugin) {
- PLUGIN_MODULE_NAME =
- for (mod, QT_MODULES) {
- types = $$replace(QT.$${mod}.plugin_types, /.*$, )
- contains(types, $$PLUGIN_TYPE) {
- PLUGIN_MODULE_NAME = $$mod
- break()
+ !isEmpty(PLUGIN_EXTENDS):!equals(PLUGIN_EXTENDS, -) {
+ count(PLUGIN_EXTENDS, 1, greaterThan): \
+ error("Plugin declares to extend multiple modules. We don't handle that ...")
+ PLUGIN_MODULE_NAME = $$PLUGIN_EXTENDS
+ } else {
+ PLUGIN_MODULE_NAME =
+ for (mod, QT_MODULES) {
+ contains(QT.$${mod}.plugin_types, $$PLUGIN_TYPE) {
+ !isEmpty(PLUGIN_MODULE_NAME): \
+ error("Multiple modules claim plugin type '$$PLUGIN_TYPE' ($$mod, in addition to $$PLUGIN_MODULE_NAME)")
+ PLUGIN_MODULE_NAME = $$mod
+ break()
+ }
}
+ isEmpty(PLUGIN_MODULE_NAME): error("No module claims plugin type '$$PLUGIN_TYPE'")
}
- isEmpty(PLUGIN_MODULE_NAME): return()
CMAKE_MODULE_NAME = $$cmakeModuleName($$PLUGIN_MODULE_NAME)
diff --git a/mkspecs/features/egl.prf b/mkspecs/features/egl.prf
index 3dd66bce53..c3bdd9fdf4 100644
--- a/mkspecs/features/egl.prf
+++ b/mkspecs/features/egl.prf
@@ -1,23 +1,8 @@
-# On UNIX, we can use config tests to figure out if egl.h is in
-# EGL/egl.h or GLES/egl.h. Sadly, there are no config tests on WinCE
-# so we have to assume that for GLES 1.1 (CL), the EGL header is in
-# GLES/egl.h. We also assume there is no separate libEGL.lib library,
-# so we use the GL library instead.
-
-wince*:contains(QT_CONFIG, opengles1) {
- INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1
- LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1
- for(p, QMAKE_LIBDIR_OPENGL_ES1) {
- exists($$p):LIBS_PRIVATE += -L$$p
- }
- DEFINES += QT_GLES_EGL
-} else {
- INCLUDEPATH += $$QMAKE_INCDIR_EGL
- LIBS_PRIVATE += $$QMAKE_LIBS_EGL
- QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL
- QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_EGL
- LIBS += $$QMAKE_LFLAGS_EGL
- for(p, QMAKE_LIBDIR_EGL) {
- exists($$p):LIBS_PRIVATE += -L$$p
- }
+INCLUDEPATH += $$QMAKE_INCDIR_EGL
+LIBS_PRIVATE += $$QMAKE_LIBS_EGL
+QMAKE_CFLAGS += $$QMAKE_CFLAGS_EGL
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_EGL
+LIBS += $$QMAKE_LFLAGS_EGL
+for(p, QMAKE_LIBDIR_EGL) {
+ exists($$p): LIBS_PRIVATE += -L$$p
}
diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf
index da3e22b5f3..530683552b 100644
--- a/mkspecs/features/mac/default_post.prf
+++ b/mkspecs/features/mac/default_post.prf
@@ -37,6 +37,13 @@ qt:!isEmpty(QT_CONFIG) {
}
}
+macx-xcode:!isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) {
+ debug_information_format.name = DEBUG_INFORMATION_FORMAT
+ debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT
+ debug_information_format.build = debug
+ QMAKE_MAC_XCODE_SETTINGS += debug_information_format
+}
+
cache(QMAKE_XCODE_DEVELOPER_PATH, stash)
cache(QMAKE_XCODE_VERSION, stash)
diff --git a/mkspecs/features/mac/default_pre.prf b/mkspecs/features/mac/default_pre.prf
index c031403930..0cc8cd6dfd 100644
--- a/mkspecs/features/mac/default_pre.prf
+++ b/mkspecs/features/mac/default_pre.prf
@@ -33,6 +33,16 @@ isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) {
cache(QMAKE_TARGET_BUNDLE_PREFIX)
}
+# Make the default debug info format for static debug builds
+# DWARF instead of DWARF with dSYM. This cuts down build times
+# for application debug builds significantly, as Xcode doesn't
+# have to pull out all the DWARF info from the Qt static libs
+# and put it into a dSYM file. We don't need that dSYM file in
+# the first place, since the information is available in the
+# object files inside the archives (static libraries).
+contains(QT_CONFIG, static): \
+ QMAKE_XCODE_DEBUG_INFORMATION_FORMAT = dwarf
+
# This variable is used by the xcode_dynamic_library_suffix
# feature, which allows Xcode to choose the Qt libraries to link to
# at build time, depending on the current Xcode SDK and configuration.
diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf
index 5b5186a14b..36bff00496 100644
--- a/mkspecs/features/mac/sdk.prf
+++ b/mkspecs/features/mac/sdk.prf
@@ -45,12 +45,7 @@ for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_
}
isEmpty(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name) {
- # We use xml as the output format instead of json since plutil on 10.6 does not have that option
- QMAKE_MAC_PLATFORM_NAME = $$system("/usr/bin/plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - 2>/dev/null | " \
- "sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd
- "PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>/dev/null | " \
- "sed 's/.*Value: \\(.*\\)/\\1/'")
-
+ QMAKE_MAC_PLATFORM_NAME = $$system("/usr/libexec/PlistBuddy -c 'print DefaultProperties:PLATFORM_NAME' $$QMAKE_MAC_SDK_PATH/SDKSettings.plist 2>/dev/null")
isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'")
cache(QMAKE_MAC_SDK.$${QMAKE_MAC_SDK}.platform_name, set stash, QMAKE_MAC_PLATFORM_NAME)
} else {
diff --git a/mkspecs/features/opengles1.prf b/mkspecs/features/opengles1.prf
deleted file mode 100644
index b09262f8a9..0000000000
--- a/mkspecs/features/opengles1.prf
+++ /dev/null
@@ -1,2 +0,0 @@
-QMAKE_LIBS_OPENGL_ES2 =
-LIBS += $$QMAKE_LIBS_OPENGL_ES1
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index 7a613fe0ff..a1eea2bef8 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -73,10 +73,11 @@ wince*:static:gui {
QTLIB += qmenu_wce.res
}
-# static builds: link qml import plugins into the app.
qt_module_deps = $$QT $$QT_PRIVATE
qt_module_deps = $$replace(qt_module_deps, -private$, _private)
qt_module_deps = $$resolve_depends(qt_module_deps, "QT.")
+
+# static builds: link qml import plugins into the app.
contains(qt_module_deps, qml): \
contains(QT_CONFIG, static):contains(TEMPLATE, .*app):!host_build:!no_import_scan {
# run qmlimportscanner
@@ -162,6 +163,37 @@ contains(qt_module_deps, qml): \
}
}
+contains(TEMPLATE, .*app) {
+ autoplugs =
+ for (qtmod, qt_module_deps) {
+ for (ptype, QT.$${qtmod}.plugin_types) {
+ isEmpty(QTPLUGIN.$$ptype) {
+ for (plug, QT_PLUGINS) {
+ equals(QT_PLUGIN.$${plug}.TYPE, $$ptype) {
+ for (dep, QT_PLUGIN.$${plug}.EXTENDS) {
+ !contains(qt_module_deps, $$dep) {
+ plug =
+ break()
+ }
+ }
+ autoplugs += $$plug
+ }
+ }
+ } else {
+ plug = $$eval(QTPLUGIN.$$ptype)
+ !equals(plug, -): \
+ autoplugs += $$plug
+ }
+ }
+ }
+ manualplugs = $$QTPLUGIN
+ manualplugs -= $$autoplugs
+ QTPLUGIN -= $$manualplugs
+ !isEmpty(QTPLUGIN): \
+ warning("Redundant entries in QTPLUGIN: $$QTPLUGIN")
+ QTPLUGIN = $$manualplugs $$autoplugs
+}
+
QT_PLUGIN_VERIFY = DEPLOYMENT_PLUGIN
contains(QT_CONFIG, static) {
QT_PLUGIN_VERIFY += QTPLUGIN
@@ -209,7 +241,12 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
# Only link against plugin in static builds
isEqual(QT_CURRENT_VERIFY, QTPLUGIN): {
- !isEmpty(QT_PLUGINPATH): LIBS *= -L$$[QT_INSTALL_PLUGINS/get]/$$QT_PLUGINPATH
+ !isEmpty(QT_PLUGINPATH) {
+ plugpath = $$eval(QT_PLUGIN.$${QTPLUG}.PATH)
+ isEmpty(plugpath): \
+ plugpath = $$[QT_INSTALL_PLUGINS/get]
+ LIBS *= -L$$plugpath/$$QT_PLUGINPATH
+ }
LIBS += $$QT_LINKAGE
# if the plugin is linked statically there is no need to deploy it
DEPLOYMENT_PLUGIN -= $$QT_CURRENT_VERIFY
diff --git a/mkspecs/features/qt_module_pris.prf b/mkspecs/features/qt_module_pris.prf
index 900ade9b6e..f31bc38c75 100644
--- a/mkspecs/features/qt_module_pris.prf
+++ b/mkspecs/features/qt_module_pris.prf
@@ -70,6 +70,10 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG"
else: \
module_config =
+ !isEmpty(MODULE_PLUGIN_TYPES): \
+ module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /.*$, )"
+ else: \
+ module_plugtypes =
!no_module_headers:!minimal_syncqt {
MODULE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME
MODULE_PRIVATE_INCLUDES = \$\$QT_MODULE_INCLUDE_BASE/$$MODULE_INCNAME/$$VERSION \
@@ -100,7 +104,7 @@ MODULE_FWD_PRI = $$mod_work_pfx/qt_lib_$${MODULE_ID}.pri
"QT.$${MODULE_ID}.plugins = \$\$QT_MODULE_PLUGIN_BASE" \
"QT.$${MODULE_ID}.imports = \$\$QT_MODULE_IMPORT_BASE" \
"QT.$${MODULE_ID}.qml = \$\$QT_MODULE_QML_BASE" \
- $$join(MODULE_PLUGIN_TYPES, " ", "QT.$${MODULE_ID}.plugin_types = ")
+ $$module_plugtypes
MODULE_PRI_CONT += \
"QT.$${MODULE_ID}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
$$module_rundep \
diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf
index ba12b9c1cd..c020bd2767 100644
--- a/mkspecs/features/qt_plugin.prf
+++ b/mkspecs/features/qt_plugin.prf
@@ -27,14 +27,43 @@ tool_plugin {
CONFIG(static, static|shared) {
isEmpty(MODULE): MODULE = $$basename(TARGET)
- MODULE_PRI = $$MODULE_QMAKE_OUTDIR/mkspecs/modules/qt_plugin_$${MODULE}.pri
+ mod_work_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules
+ force_independent: \
+ mod_inst_pfx = $$MODULE_QMAKE_OUTDIR/mkspecs/modules-inst
+ else: \
+ mod_inst_pfx = $$mod_work_pfx
+ MODULE_PRI = $$mod_inst_pfx/qt_plugin_$${MODULE}.pri
+ MODULE_FWD_PRI = $$mod_work_pfx/qt_plugin_$${MODULE}.pri
!build_pass {
MODULE_PRI_CONT = \
"QT_PLUGIN.$${MODULE}.TYPE = $$PLUGIN_TYPE" \
- "QT_PLUGIN.$${MODULE}.CLASS_NAME = $$PLUGIN_CLASS_NAME"
-
+ "QT_PLUGIN.$${MODULE}.EXTENDS = $$PLUGIN_EXTENDS" \
+ "QT_PLUGIN.$${MODULE}.CLASS_NAME = $$PLUGIN_CLASS_NAME" \
+ "QT_PLUGINS += $$MODULE"
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
+ MODULE_PRI_FILES = $$MODULE_PRI
+
+ force_independent {
+
+ # Create a forwarding module .pri file
+ MODULE_FWD_PRI_CONT = \
+ "QT_PLUGIN.$${MODULE}.PATH = $$MODULE_BASE_OUTDIR/plugins" \
+ "include($$MODULE_PRI)"
+ write_file($$MODULE_FWD_PRI, MODULE_FWD_PRI_CONT)|error("Aborting.")
+ touch($$MODULE_FWD_PRI, $$MODULE_PRI)
+ MODULE_PRI_FILES += $$MODULE_FWD_PRI
+
+ }
+
+ # Then, inject the new module into the current cache state
+ !contains(QMAKE_INTERNAL_INCLUDED_FILES, $$MODULE_FWD_PRI): \ # before the actual include()!
+ cache(QMAKE_INTERNAL_INCLUDED_FILES, add transient, MODULE_PRI_FILES)
+ include($$MODULE_FWD_PRI)
+ for(var, $$list(TYPE EXTENDS CLASS_NAME PATH)): \
+ defined(QT_PLUGIN.$${MODULE}.$$var, var): \
+ cache(QT_PLUGIN.$${MODULE}.$$var, transient)
+ cache(QT_PLUGINS, transient)
}
pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules
diff --git a/mkspecs/features/unix/opengl.prf b/mkspecs/features/unix/opengl.prf
index 8dd47d089d..123c647be2 100644
--- a/mkspecs/features/unix/opengl.prf
+++ b/mkspecs/features/unix/opengl.prf
@@ -1,9 +1,4 @@
-contains(QT_CONFIG, opengles1) {
- INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES1
- !isEmpty(QMAKE_LIBDIR_OPENGL_ES1):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES1
- target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES1
- else:LIBS += $$QMAKE_LIBS_OPENGL_ES1
-} else:contains(QT_CONFIG, opengles2) {
+contains(QT_CONFIG, opengles2) {
INCLUDEPATH += $$QMAKE_INCDIR_OPENGL_ES2
!isEmpty(QMAKE_LIBDIR_OPENGL_ES2):QMAKE_LIBDIR += $$QMAKE_LIBDIR_OPENGL_ES2
target_qt:LIBS_PRIVATE += $$QMAKE_LIBS_OPENGL_ES2
diff --git a/mkspecs/features/win32/console.prf b/mkspecs/features/win32/console.prf
index 8a1725d648..568d1b1eb5 100644
--- a/mkspecs/features/win32/console.prf
+++ b/mkspecs/features/win32/console.prf
@@ -1,4 +1,6 @@
CONFIG -= windows
contains(TEMPLATE, ".*app") {
- QMAKE_LFLAGS += $$QMAKE_LFLAGS_CONSOLE $$QMAKE_LFLAGS_EXE
+ QMAKE_LFLAGS += \
+ $$replace(QMAKE_LFLAGS_CONSOLE, @QMAKE_SUBSYSTEM_SUFFIX@, $$QMAKE_SUBSYSTEM_SUFFIX) \
+ $$QMAKE_LFLAGS_EXE
}
diff --git a/mkspecs/features/win32/qt_config.prf b/mkspecs/features/win32/qt_config.prf
new file mode 100644
index 0000000000..49b4c79431
--- /dev/null
+++ b/mkspecs/features/win32/qt_config.prf
@@ -0,0 +1,10 @@
+load(qt_config)
+
+equals(QMAKE_TARGET_OS, xp) {
+ # http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx?PageIndex=3
+ equals(QT_ARCH, x86_64) {
+ QMAKE_SUBSYSTEM_SUFFIX = ,5.02
+ } else {
+ QMAKE_SUBSYSTEM_SUFFIX = ,5.01
+ }
+}
diff --git a/mkspecs/features/win32/windows.prf b/mkspecs/features/win32/windows.prf
index 82e0ebe1b5..6d8289d949 100644
--- a/mkspecs/features/win32/windows.prf
+++ b/mkspecs/features/win32/windows.prf
@@ -1,6 +1,8 @@
CONFIG -= console
contains(TEMPLATE, ".*app"){
- QMAKE_LFLAGS += $$QMAKE_LFLAGS_WINDOWS $$QMAKE_LFLAGS_EXE
+ QMAKE_LFLAGS += \
+ $$replace(QMAKE_LFLAGS_WINDOWS, @QMAKE_SUBSYSTEM_SUFFIX@, $$QMAKE_SUBSYSTEM_SUFFIX) \
+ $$QMAKE_LFLAGS_EXE
mingw:DEFINES += QT_NEEDS_QMAIN
qt:for(entryLib, $$list($$unique(QMAKE_LIBS_QT_ENTRY))) {